MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / TestRoleInheritance

Function TestRoleInheritance

auth/auth_test.go:539–572  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

537}
538
539func TestRoleInheritance(t *testing.T) {
540 ctx := base.TestCtx(t)
541 // Create some roles:
542 bucket := base.GetTestBucket(t)
543 defer bucket.Close(ctx)
544 dataStore := bucket.GetSingleDataStore()
545 auth := NewTestAuthenticator(t, dataStore, nil, DefaultAuthenticatorOptions(base.TestCtx(t)))
546 role, err := auth.NewRole("square", ch.BaseSetOf(t, "dull", "duller", "dullest"))
547 require.NoError(t, err)
548 require.NoError(t, auth.Save(role))
549 role, err = auth.NewRole("frood", ch.BaseSetOf(t, "hoopy", "hoopier", "hoopiest"))
550 require.NoError(t, err)
551 assert.Equal(t, nil, auth.Save(role))
552
553 user, err := auth.NewUser("arthur", "password", ch.BaseSetOf(t, "britain"))
554 require.NoError(t, err)
555 userImpl, ok := user.(*userImpl)
556 require.True(t, ok)
557 // Directly set the roles, bypassing the usual SetRoles method, so we can set the "since" value:
558 userImpl.setRolesSince(ch.TimedSet{"square": ch.NewVbSimpleSequence(0x3), "nonexistent": ch.NewVbSimpleSequence(0x42), "frood": ch.NewVbSimpleSequence(0x4)})
559 assert.Equal(t, ch.TimedSet{"square": ch.NewVbSimpleSequence(0x3), "nonexistent": ch.NewVbSimpleSequence(0x42), "frood": ch.NewVbSimpleSequence(0x4)}, user.RoleNames())
560 require.NoError(t, auth.Save(user))
561
562 user2, err := auth.GetUser("arthur")
563 require.NoError(t, err)
564 log.Printf("Channels = %s", user2.Channels())
565 user2Channels, err := user2.inheritedChannels()
566 require.NoError(t, err)
567 assert.Equal(t, ch.AtSequence(ch.BaseSetOf(t, "!", "britain"), 1), user2.Channels())
568 assert.Equal(t, ch.TimedSet{"!": ch.NewVbSimpleSequence(0x1), "britain": ch.NewVbSimpleSequence(0x1), "dull": ch.NewVbSimpleSequence(0x3), "duller": ch.NewVbSimpleSequence(0x3), "dullest": ch.NewVbSimpleSequence(0x3), "hoopy": ch.NewVbSimpleSequence(0x4), "hoopier": ch.NewVbSimpleSequence(0x4), "hoopiest": ch.NewVbSimpleSequence(0x4)}, user2Channels)
569
570 requireCanSeeChannels(t, user2, "britain", "duller", "hoopy")
571 require.NoError(t, user2.authorizeAllChannels(ch.BaseSetOf(t, "britain", "dull", "hoopiest")))
572}
573
574func TestRegisterUser(t *testing.T) {
575 ctx := base.TestCtx(t)

Callers

nothing calls this directly

Calls 15

RoleNamesMethod · 0.95
TestCtxFunction · 0.92
GetTestBucketFunction · 0.92
NewTestAuthenticatorFunction · 0.85
requireCanSeeChannelsFunction · 0.85
NewRoleMethod · 0.80
SaveMethod · 0.80
NewUserMethod · 0.80
GetUserMethod · 0.80
CloseMethod · 0.65
setRolesSinceMethod · 0.65

Tested by

no test coverage detected