style: apply linter fixes to new test files

- totp_handler_test: use url.Parse for URI extraction, add net/url import
- models_test: add error checks on json.Unmarshal calls
This commit is contained in:
jevb
2026-04-01 08:48:41 +02:00
parent d87dabeb65
commit e74dc0245f
2 changed files with 38 additions and 29 deletions
+8 -19
View File
@@ -5,6 +5,7 @@ import (
"encoding/json"
"net/http"
"net/http/httptest"
"net/url"
"testing"
"time"
@@ -418,25 +419,13 @@ func deleteWithToken(t *testing.T, router http.Handler, path, token string, body
// extractSecretFromURI parses a TOTP otpauth:// URI and returns the secret parameter.
func extractSecretFromURI(t *testing.T, uri string) string {
t.Helper()
// URI format: otpauth://totp/OwnCord:username?secret=XXX&issuer=OwnCord
// Simple parse — find "secret=" and extract until next '&' or end.
const marker = "secret="
idx := 0
for i := 0; i+len(marker) <= len(uri); i++ {
if uri[i:i+len(marker)] == marker {
idx = i + len(marker)
break
}
u, err := url.Parse(uri)
if err != nil {
t.Fatalf("parse otpauth URI: %v", err)
}
if idx == 0 {
t.Fatalf("no secret= found in URI: %s", uri)
s := u.Query().Get("secret")
if s == "" {
t.Fatalf("no secret param in URI: %s", uri)
}
end := len(uri)
for i := idx; i < len(uri); i++ {
if uri[i] == '&' {
end = i
break
}
}
return uri[idx:end]
return s
}
+30 -10
View File
@@ -72,7 +72,9 @@ func TestRole_NilColor(t *testing.T) {
data, _ := json.Marshal(role)
var raw map[string]interface{}
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
if raw["color"] != nil {
t.Errorf("nil Color should serialize as null, got %v", raw["color"])
@@ -126,7 +128,9 @@ func TestChannel_OmitEmptyFields(t *testing.T) {
data, _ := json.Marshal(ch)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
// voice_quality and mixing_threshold have omitempty — should be absent when nil.
if _, ok := raw["voice_quality"]; ok {
@@ -149,7 +153,9 @@ func TestVoiceState_JoinedAtOmittedFromJSON(t *testing.T) {
data, _ := json.Marshal(vs)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
if _, ok := raw["JoinedAt"]; ok {
t.Error("JoinedAt has json:\"-\" tag and should not appear in JSON output")
@@ -164,7 +170,9 @@ func TestVoiceState_BoolDefaults(t *testing.T) {
data, _ := json.Marshal(vs)
var decoded db.VoiceState
json.Unmarshal(data, &decoded) //nolint:errcheck
if err := json.Unmarshal(data, &decoded); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
if decoded.Muted || decoded.Deafened || decoded.Speaking || decoded.Camera || decoded.Screenshare {
t.Error("zero-value VoiceState bools should all be false")
@@ -186,7 +194,9 @@ func TestMessageAPIResponse_JSONKeys(t *testing.T) {
data, _ := json.Marshal(resp)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
required := []string{"id", "channel_id", "user", "content", "reply_to",
"attachments", "reactions", "pinned", "edited_at", "deleted", "timestamp"}
@@ -206,7 +216,9 @@ func TestAttachmentInfo_OmitsNilDimensions(t *testing.T) {
data, _ := json.Marshal(att)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
if _, ok := raw["width"]; ok {
t.Error("nil Width should be omitted")
@@ -225,7 +237,9 @@ func TestAttachmentInfo_IncludesDimensions(t *testing.T) {
data, _ := json.Marshal(att)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
if _, ok := raw["width"]; !ok {
t.Error("non-nil Width should be present")
@@ -242,7 +256,9 @@ func TestUserPublic_OmitsNilAvatar(t *testing.T) {
data, _ := json.Marshal(u)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
if _, ok := raw["avatar"]; ok {
t.Error("nil Avatar should be omitted")
@@ -255,7 +271,9 @@ func TestUserPublic_IncludesAvatar(t *testing.T) {
data, _ := json.Marshal(u)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
if _, ok := raw["avatar"]; !ok {
t.Error("non-nil Avatar should be present")
@@ -299,7 +317,9 @@ func TestAuditEntry_JSONKeys(t *testing.T) {
data, _ := json.Marshal(entry)
var raw map[string]json.RawMessage
json.Unmarshal(data, &raw) //nolint:errcheck
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatalf("Unmarshal: %v", err)
}
required := []string{"id", "actor_id", "actor_name", "action", "target_type", "target_id", "detail", "created_at"}
for _, k := range required {