test: use identifier-based names and subtests

This commit is contained in:
ayn2op 2026-09-06 19:38:11 -04:00
parent 39cb1b5698
commit 1750d7dfb6
5 changed files with 48 additions and 53 deletions

View file

@ -9,7 +9,7 @@ import (
"github.com/ayn2op/discordo/internal/tls"
)
func TestBrowserIdentity(t *testing.T) {
func TestCommonProperties(t *testing.T) {
properties := CommonProperties()
tests := []struct {
@ -29,13 +29,15 @@ func TestBrowserIdentity(t *testing.T) {
}
})
}
}
func TestBrowserUserAgent(t *testing.T) {
if product := tls.BrowserName() + "/" + tls.BrowserVersion(); !strings.Contains(BrowserUserAgent(), product) {
t.Fatalf("user agent does not contain %q", product)
}
}
func TestBrowserClientHints(t *testing.T) {
func TestHeaders(t *testing.T) {
headers := Headers()
version := tls.BrowserMajorVersion()
tests := []struct {
@ -56,7 +58,7 @@ func TestBrowserClientHints(t *testing.T) {
}
}
func TestPropertyUUIDs(t *testing.T) {
func TestXSuperProperties(t *testing.T) {
properties := XSuperProperties()
for _, key := range []gateway.IdentifyPropertyKey{"client_launch_id", "client_heartbeat_session_id", "launch_signature"} {
t.Run(string(key), func(t *testing.T) {

View file

@ -10,17 +10,18 @@ import (
)
func TestRendererRenderText(t *testing.T) {
t.Run("masks spoilers", func(t *testing.T) {
source := []byte("before ||secret|| after")
node := md.Parse(source)
source := []byte("before ||secret|| after")
node := md.Parse(source)
for _, test := range []struct {
mask bool
want string
}{
{true, "before [spoiler] after"},
{false, "before secret after"},
} {
for _, test := range []struct {
name string
mask bool
want string
}{
{"spoilers_masked", true, "before [spoiler] after"},
{"spoilers_visible", false, "before secret after"},
} {
t.Run(test.name, func(t *testing.T) {
rendered := NewRenderer(&config.Config{Markdown: config.MarkdownConfig{MaskSpoilers: test.mask}}).RenderText(source, node, tcell.StyleDefault)
var got strings.Builder
for _, line := range rendered {
@ -31,6 +32,6 @@ func TestRendererRenderText(t *testing.T) {
if got.String() != test.want {
t.Fatalf("mask=%t: got %q, want %q", test.mask, got.String(), test.want)
}
}
})
})
}
}

View file

@ -1,26 +1,17 @@
package tls
import (
"testing"
)
import "testing"
func TestBrowserIdentity(t *testing.T) {
hello := clientProfile.GetClientHelloId()
tests := []struct {
name string
got string
want string
}{
{"name", BrowserName(), hello.Client},
{"version", BrowserVersion(), hello.Version + ".0.0.0"},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
if test.got != test.want {
t.Fatalf("got = %q, want = %q", test.got, test.want)
}
})
func TestBrowserName(t *testing.T) {
want := clientProfile.GetClientHelloId().Client
if got := BrowserName(); got != want {
t.Fatalf("BrowserName() = %q, want %q", got, want)
}
}
func TestBrowserVersion(t *testing.T) {
want := clientProfile.GetClientHelloId().Version + ".0.0.0"
if got := BrowserVersion(); got != want {
t.Fatalf("BrowserVersion() = %q, want %q", got, want)
}
}

View file

@ -80,7 +80,7 @@ func TestComposerEditLastMessage(t *testing.T) {
}
}
func TestMemberSearchCache(t *testing.T) {
func TestComposerSearchMember(t *testing.T) {
cfg, err := config.Load(filepath.Join(t.TempDir(), "config.toml"))
if err != nil {
t.Fatal(err)

View file

@ -3,26 +3,27 @@ package qr
import "testing"
func TestDecodeMessage(t *testing.T) {
t.Run("decodes messages", func(t *testing.T) {
tests := []struct {
data string
want any
}{
{`{"op":"hello","heartbeat_interval":100,"timeout_ms":200}`, helloMsg{heartbeatInterval: 100, timeoutMS: 200}},
{`{"op":"nonce_proof","encrypted_nonce":"nonce"}`, nonceProofMsg{encryptedNonce: "nonce"}},
{`{"op":"pending_remote_init","fingerprint":"fingerprint"}`, pendingRemoteInitMsg{fingerprint: "fingerprint"}},
{`{"op":"pending_ticket","encrypted_user_payload":"payload"}`, pendingTicketMsg{encryptedUserPayload: "payload"}},
{`{"op":"cancel"}`, cancelMsg{}},
{`{"op":"pending_login","ticket":"ticket"}`, pendingLoginMsg{ticket: "ticket"}},
{`{"op":"unknown"}`, nil},
}
tests := []struct {
name string
data string
want any
}{
{"hello", `{"op":"hello","heartbeat_interval":100,"timeout_ms":200}`, helloMsg{heartbeatInterval: 100, timeoutMS: 200}},
{"nonce_proof", `{"op":"nonce_proof","encrypted_nonce":"nonce"}`, nonceProofMsg{encryptedNonce: "nonce"}},
{"pending_remote_init", `{"op":"pending_remote_init","fingerprint":"fingerprint"}`, pendingRemoteInitMsg{fingerprint: "fingerprint"}},
{"pending_ticket", `{"op":"pending_ticket","encrypted_user_payload":"payload"}`, pendingTicketMsg{encryptedUserPayload: "payload"}},
{"cancel", `{"op":"cancel"}`, cancelMsg{}},
{"pending_login", `{"op":"pending_login","ticket":"ticket"}`, pendingLoginMsg{ticket: "ticket"}},
{"unknown", `{"op":"unknown"}`, nil},
}
for _, test := range tests {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
if got := decodeMessage([]byte(test.data)); got != test.want {
t.Errorf("decodeMessage(%s) = %#v, want %#v", test.data, got, test.want)
}
}
})
})
}
t.Run("rejects duplicate names", func(t *testing.T) {
if _, ok := decodeMessage([]byte(`{"op":"cancel","op":"hello"}`)).(errMsg); !ok {