This commit is contained in:
2025-09-26 23:37:11 +01:00
parent 60841eb121
commit 2f9f3fda42
11 changed files with 1203 additions and 1205 deletions
+130
View File
@@ -0,0 +1,130 @@
package utils
import (
"reflect"
"testing"
)
func TestCreateStringMap(t *testing.T) {
items := []string{"apple", "banana", "cherry"}
result := CreateStringMap(items)
expected := map[string]struct{}{
"apple": {},
"banana": {},
"cherry": {},
}
if !reflect.DeepEqual(result, expected) {
t.Errorf("Expected %v, got %v", expected, result)
}
}
func TestCreateCaseInsensitiveStringMap(t *testing.T) {
items := []string{"Apple", "BANANA", "Cherry"}
result := CreateCaseInsensitiveStringMap(items)
expected := map[string]struct{}{
"apple": {},
"banana": {},
"cherry": {},
}
if !reflect.DeepEqual(result, expected) {
t.Errorf("Expected %v, got %v", expected, result)
}
}
func TestDeduplicateScopes(t *testing.T) {
scopes := []string{"openid", "profile", "email", "openid", "profile"}
result := DeduplicateScopes(scopes)
expected := []string{"openid", "profile", "email"}
if !reflect.DeepEqual(result, expected) {
t.Errorf("Expected %v, got %v", expected, result)
}
}
func TestMergeScopes(t *testing.T) {
defaultScopes := []string{"openid", "profile"}
userScopes := []string{"email", "offline_access"}
result := MergeScopes(defaultScopes, userScopes)
expected := []string{"openid", "profile", "email", "offline_access"}
if !reflect.DeepEqual(result, expected) {
t.Errorf("Expected %v, got %v", expected, result)
}
}
func TestMergeScopesWithDuplicates(t *testing.T) {
defaultScopes := []string{"openid", "profile"}
userScopes := []string{"profile", "email", "openid"}
result := MergeScopes(defaultScopes, userScopes)
expected := []string{"openid", "profile", "email"}
if !reflect.DeepEqual(result, expected) {
t.Errorf("Expected %v, got %v", expected, result)
}
}
func TestMergeScopesEmptyUserScopes(t *testing.T) {
defaultScopes := []string{"openid", "profile"}
userScopes := []string{}
result := MergeScopes(defaultScopes, userScopes)
expected := []string{"openid", "profile"}
if !reflect.DeepEqual(result, expected) {
t.Errorf("Expected %v, got %v", expected, result)
}
}
func TestKeysFromMap(t *testing.T) {
m := map[string]struct{}{
"key1": {},
"key2": {},
"key3": {},
}
result := KeysFromMap(m)
// Since map iteration order is not guaranteed, we need to check length and presence
if len(result) != 3 {
t.Errorf("Expected 3 keys, got %d", len(result))
}
resultMap := make(map[string]bool)
for _, key := range result {
resultMap[key] = true
}
expectedKeys := []string{"key1", "key2", "key3"}
for _, key := range expectedKeys {
if !resultMap[key] {
t.Errorf("Expected key %s not found in result", key)
}
}
}
func TestBuildFullURL(t *testing.T) {
tests := []struct {
scheme string
host string
path string
expected string
}{
{"https", "example.com", "/path", "https://example.com/path"},
{"http", "localhost:8080", "/callback", "http://localhost:8080/callback"},
{"https", "test.example.com", "/auth/callback", "https://test.example.com/auth/callback"},
}
for _, test := range tests {
result := BuildFullURL(test.scheme, test.host, test.path)
if result != test.expected {
t.Errorf("For scheme=%s, host=%s, path=%s: expected %s, got %s",
test.scheme, test.host, test.path, test.expected, result)
}
}
}