mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-13 00:33:06 +03:00
107 lines
2.5 KiB
Go
107 lines
2.5 KiB
Go
package service
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestGetDNProperty(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
property string
|
|
dn string
|
|
expectedResult string
|
|
}{
|
|
{
|
|
name: "simple case",
|
|
property: "cn",
|
|
dn: "cn=username,ou=people,dc=example,dc=com",
|
|
expectedResult: "username",
|
|
},
|
|
{
|
|
name: "property not found",
|
|
property: "uid",
|
|
dn: "cn=username,ou=people,dc=example,dc=com",
|
|
expectedResult: "",
|
|
},
|
|
{
|
|
name: "mixed case property",
|
|
property: "CN",
|
|
dn: "cn=username,ou=people,dc=example,dc=com",
|
|
expectedResult: "username",
|
|
},
|
|
{
|
|
name: "mixed case DN",
|
|
property: "cn",
|
|
dn: "CN=username,OU=people,DC=example,DC=com",
|
|
expectedResult: "username",
|
|
},
|
|
{
|
|
name: "spaces in DN",
|
|
property: "cn",
|
|
dn: "cn=username, ou=people, dc=example, dc=com",
|
|
expectedResult: "username",
|
|
},
|
|
{
|
|
name: "value with special characters",
|
|
property: "cn",
|
|
dn: "cn=user.name+123,ou=people,dc=example,dc=com",
|
|
expectedResult: "user.name+123",
|
|
},
|
|
{
|
|
name: "empty DN",
|
|
property: "cn",
|
|
dn: "",
|
|
expectedResult: "",
|
|
},
|
|
{
|
|
name: "empty property",
|
|
property: "",
|
|
dn: "cn=username,ou=people,dc=example,dc=com",
|
|
expectedResult: "",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := getDNProperty(tt.property, tt.dn)
|
|
if result != tt.expectedResult {
|
|
t.Errorf("getDNProperty(%q, %q) = %q, want %q",
|
|
tt.property, tt.dn, result, tt.expectedResult)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestConvertLdapIdToString(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
expected string
|
|
}{
|
|
{
|
|
name: "valid UTF-8 string",
|
|
input: "simple-utf8-id",
|
|
expected: "simple-utf8-id",
|
|
},
|
|
{
|
|
name: "binary UUID (16 bytes)",
|
|
input: string([]byte{0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf1}),
|
|
expected: "12345678-9abc-def0-1234-56789abcdef1",
|
|
},
|
|
{
|
|
name: "non-UTF8, non-UUID returns base64",
|
|
input: string([]byte{0xff, 0xfe, 0xfd, 0xfc}),
|
|
expected: "//79/A==",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := convertLdapIdToString(tt.input)
|
|
if got != tt.expected {
|
|
t.Errorf("Expected %q, got %q", tt.expected, got)
|
|
}
|
|
})
|
|
}
|
|
}
|