package coreauth import ( "context" "testing" "sourcecraft.dev/bigbes/sr-ht-core/auth" "sourcecraft.dev/bigbes/sr-ht-spec/authn" ) func TestDerive(t *testing.T) { const ownerUserID = 42 tests := []struct { name string principal authn.Principal wantMethod string wantUserID int wantUser string }{ { name: "owner", principal: authn.Principal{Kind: authn.KindOwner, Owner: "bigbes"}, wantMethod: auth.AUTH_INTERNAL, wantUserID: ownerUserID, wantUser: "bigbes", }, { name: "agent", principal: authn.Principal{Kind: authn.KindAgent, Owner: "bigbes", Agent: "claude-code/spec-writer"}, wantMethod: auth.AUTH_INTERNAL, wantUserID: ownerUserID, wantUser: "bigbes", }, { name: "anonymous", principal: authn.Anonymous(), wantMethod: auth.AUTH_ANON_INTERNAL, wantUserID: 0, wantUser: "", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { ac := Derive(tt.principal, ownerUserID) if ac.AuthMethod != tt.wantMethod { t.Errorf("AuthMethod = %q, want %q", ac.AuthMethod, tt.wantMethod) } if ac.UserID != tt.wantUserID { t.Errorf("UserID = %d, want %d", ac.UserID, tt.wantUserID) } if ac.Username != tt.wantUser { t.Errorf("Username = %q, want %q", ac.Username, tt.wantUser) } }) } } func TestContext(t *testing.T) { const ownerUserID = 7 ctx := Context(context.Background(), authn.Principal{Kind: authn.KindOwner, Owner: "bigbes"}, ownerUserID) ac := auth.ForContext(ctx) if ac == nil { t.Fatal("auth.ForContext returned nil; expected an AuthContext") } if ac.AuthMethod != auth.AUTH_INTERNAL { t.Errorf("AuthMethod = %q, want %q", ac.AuthMethod, auth.AUTH_INTERNAL) } if ac.UserID != ownerUserID { t.Errorf("UserID = %d, want %d", ac.UserID, ownerUserID) } if ac.Username != "bigbes" { t.Errorf("Username = %q, want %q", ac.Username, "bigbes") } }