Anon: Add support to resolve anonymous identity (#87486)

This commit is contained in:
Karl Persson
2024-05-13 11:06:14 +02:00
committed by GitHub
parent 1983043b71
commit 7125a2e455
2 changed files with 107 additions and 9 deletions
@@ -67,3 +67,67 @@ func TestAnonymous_Authenticate(t *testing.T) {
})
}
}
func TestAnonymous_ResolveIdentity(t *testing.T) {
type TestCase struct {
desc string
cfg *setting.Cfg
orgID int64
namespaceID authn.NamespaceID
org *org.Org
orgErr error
expectedErr error
}
tests := []TestCase{
{
desc: "should return error when org id is not the configured one",
org: &org.Org{ID: 2, Name: "some org"},
cfg: &setting.Cfg{
AnonymousOrgName: "some org",
},
orgID: 1,
namespaceID: authn.AnonymousNamespaceID,
expectedErr: errInvalidOrg,
},
{
desc: "should return error when namespace id does not match anonymous namespace id",
org: &org.Org{ID: 1, Name: "some org"},
cfg: &setting.Cfg{
AnonymousOrgName: "some org",
},
orgID: 1,
namespaceID: authn.MustParseNamespaceID("anonymous:1"),
expectedErr: errInvalidID,
},
{
desc: "should resolve identity",
org: &org.Org{ID: 1, Name: "some org"},
cfg: &setting.Cfg{
AnonymousOrgName: "some org",
},
orgID: 1,
namespaceID: authn.AnonymousNamespaceID,
},
}
for _, tt := range tests {
t.Run(tt.desc, func(t *testing.T) {
c := Anonymous{
cfg: tt.cfg,
log: log.NewNopLogger(),
orgService: &orgtest.FakeOrgService{ExpectedOrg: tt.org, ExpectedError: tt.orgErr},
anonDeviceService: anontest.NewFakeService(),
}
identity, err := c.ResolveIdentity(context.Background(), tt.orgID, tt.namespaceID)
if tt.expectedErr != nil {
assert.ErrorIs(t, err, tt.expectedErr)
assert.Nil(t, identity)
} else {
assert.NoError(t, err)
assert.EqualValues(t, c.newAnonymousIdentity(tt.org), identity)
}
})
}
}