package ws_test import ( "testing" "github.com/owncord/server/ws" ) // TestOriginAcceptOptions_WildcardEnablesInsecureSkipVerify verifies that // when the allowed origins list contains only "*", InsecureSkipVerify is true // (preserving the previous opt-in permissive behaviour). func TestOriginAcceptOptions_WildcardEnablesInsecureSkipVerify(t *testing.T) { opts := ws.OriginAcceptOptions([]string{"*"}) if !opts.InsecureSkipVerify { t.Error("OriginAcceptOptions([\"*\"]).InsecureSkipVerify = false, want true") } if len(opts.OriginPatterns) != 0 { t.Errorf("OriginAcceptOptions([\"*\"]).OriginPatterns = %v, want empty", opts.OriginPatterns) } } // TestOriginAcceptOptions_ExplicitOrigins sets OriginPatterns and does NOT // skip origin verification. func TestOriginAcceptOptions_ExplicitOrigins(t *testing.T) { origins := []string{"https://example.com", "https://app.example.com"} opts := ws.OriginAcceptOptions(origins) if opts.InsecureSkipVerify { t.Error("OriginAcceptOptions(explicit).InsecureSkipVerify = true, want false") } if len(opts.OriginPatterns) != 2 { t.Errorf("OriginAcceptOptions(explicit) len(OriginPatterns) = %d, want 2", len(opts.OriginPatterns)) } for i, p := range opts.OriginPatterns { if p != origins[i] { t.Errorf("OriginPatterns[%d] = %q, want %q", i, p, origins[i]) } } } // TestOriginAcceptOptions_EmptyList denies cross-origin by default (secure). func TestOriginAcceptOptions_EmptyList(t *testing.T) { opts := ws.OriginAcceptOptions([]string{}) if opts.InsecureSkipVerify { t.Error("OriginAcceptOptions([]) should deny cross-origin (InsecureSkipVerify=false)") } } // TestOriginAcceptOptions_NilList same as empty — deny by default. func TestOriginAcceptOptions_NilList(t *testing.T) { opts := ws.OriginAcceptOptions(nil) if opts.InsecureSkipVerify { t.Error("OriginAcceptOptions(nil) should deny cross-origin (InsecureSkipVerify=false)") } } // TestOriginAcceptOptions_MixedWithWildcard if "*" appears anywhere in the // list we treat the whole list as wildcard (security: explicit wins over forged mix). func TestOriginAcceptOptions_MixedWithWildcard(t *testing.T) { opts := ws.OriginAcceptOptions([]string{"https://example.com", "*"}) if !opts.InsecureSkipVerify { t.Error("OriginAcceptOptions with '*' in list should use InsecureSkipVerify=true") } } // TestOriginAcceptOptions_ReturnsAcceptOptions ensures the return type is the // correct websocket.AcceptOptions value (compile-time check via assignment). func TestOriginAcceptOptions_ReturnsAcceptOptions(t *testing.T) { _ = ws.OriginAcceptOptions([]string{"https://example.com"}) }