Files
Authorization/models/authorize_test.go
T

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)
}
}