69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
package models
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestClaimsUnmarshal_ProjectMetadataRoleIDs(t *testing.T) {
|
|
payload := `{
|
|
"users_id":"U0000000003",
|
|
"email_address":"user@example.com",
|
|
"role_id":[30],
|
|
"project_metadata":[
|
|
{"project_id":101,"alias":"proj-a","role_ids":[44,52]}
|
|
]
|
|
}`
|
|
|
|
var claims Claims
|
|
if err := json.Unmarshal([]byte(payload), &claims); err != nil {
|
|
t.Fatalf("expected no error, got %v", err)
|
|
}
|
|
|
|
if len(claims.RoleID) != 1 || claims.RoleID[0] != 30 {
|
|
t.Fatalf("unexpected base role: %v", claims.RoleID)
|
|
}
|
|
|
|
if len(claims.Projects) != 1 {
|
|
t.Fatalf("expected 1 project, got %d", len(claims.Projects))
|
|
}
|
|
|
|
if claims.Projects[0].ProjectID != 101 {
|
|
t.Fatalf("expected project_id=101, got %d", claims.Projects[0].ProjectID)
|
|
}
|
|
|
|
if len(claims.Projects[0].RoleID) != 2 || claims.Projects[0].RoleID[0] != 44 || claims.Projects[0].RoleID[1] != 52 {
|
|
t.Fatalf("unexpected project role ids: %v", claims.Projects[0].RoleID)
|
|
}
|
|
}
|
|
|
|
func TestClaimsUnmarshal_ProjectsMetadataSingleObject(t *testing.T) {
|
|
payload := `{
|
|
"user_id":"U0000000003",
|
|
"email":"user@example.com",
|
|
"role_id":"30",
|
|
"projects_metadata":{"project_id":202,"alias":"proj-b","role_id":"61"}
|
|
}`
|
|
|
|
var claims Claims
|
|
if err := json.Unmarshal([]byte(payload), &claims); err != nil {
|
|
t.Fatalf("expected no error, got %v", err)
|
|
}
|
|
|
|
if claims.UsersID != "U0000000003" {
|
|
t.Fatalf("expected users_id fallback from user_id, got %s", claims.UsersID)
|
|
}
|
|
|
|
if claims.EmailAddress != "user@example.com" {
|
|
t.Fatalf("expected email fallback from email, got %s", claims.EmailAddress)
|
|
}
|
|
|
|
if len(claims.Projects) != 1 {
|
|
t.Fatalf("expected 1 project from projects_metadata object, got %d", len(claims.Projects))
|
|
}
|
|
|
|
if len(claims.Projects[0].RoleID) != 1 || claims.Projects[0].RoleID[0] != 61 {
|
|
t.Fatalf("unexpected project role ids: %v", claims.Projects[0].RoleID)
|
|
}
|
|
}
|