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

Function Test_invalidateAllPrincipalsCache

db/database_test.go:3933–4033  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3931}
3932
3933func Test_invalidateAllPrincipalsCache(t *testing.T) {
3934 base.SetUpTestLogging(t, base.LevelDebug, base.KeyAll)
3935 db, ctx := SetupTestDBWithOptions(t, DatabaseContextOptions{AllowConflicts: base.Ptr(true)})
3936 defer db.Close(ctx)
3937
3938 sequenceAllocator, err := newSequenceAllocator(base.DatabaseLogCtx(base.TestCtx(t), db.Name, nil), db.MetadataStore, db.DbStats.DatabaseStats, db.MetadataKeys)
3939 assert.NoError(t, err)
3940
3941 db.sequences = sequenceAllocator
3942
3943 auth := db.Authenticator(ctx)
3944 collection := GetSingleDatabaseCollection(t, db.DatabaseContext)
3945
3946 for i := 0; i < 5; i++ {
3947 role, err := auth.NewRole(fmt.Sprintf("role%d", i), base.SetOf("ABC"))
3948 assert.NoError(t, err)
3949 assert.NotEmpty(t, role)
3950 seq, err := db.sequences.nextSequence(ctx)
3951 assert.NoError(t, err)
3952 role.SetSequence(seq)
3953 err = auth.Save(role)
3954 assert.NoError(t, err)
3955
3956 user, err := auth.NewUser(fmt.Sprintf("user%d", i), "letmein", base.SetOf("ABC"))
3957 assert.NoError(t, err)
3958 assert.NotEmpty(t, user)
3959 seq, err = db.sequences.nextSequence(ctx)
3960 assert.NoError(t, err)
3961 user.SetSequence(seq)
3962 err = auth.Save(user)
3963 assert.NoError(t, err)
3964 }
3965 endSeq, err := db.sequences.getSequence()
3966 assert.NoError(t, err)
3967 assert.Greater(t, endSeq, uint64(0))
3968
3969 collection.invalidateAllPrincipals(ctx, endSeq)
3970 err = collection.WaitForPendingChanges(ctx)
3971 assert.NoError(t, err)
3972
3973 if base.TestsUseNamedCollections() {
3974 dataStoreName := collection.dataStore.GetName()
3975 var scopeName, collectionName string
3976 // Format: sg_int_0_1671048846916047000.sg_test_0.sg_test_0
3977 dataStoreNameSlice := strings.Split(dataStoreName, ".")
3978 require.Len(t, dataStoreNameSlice, 3)
3979 scopeName, collectionName = dataStoreNameSlice[1], dataStoreNameSlice[2]
3980
3981 // Example of Raw response when named collection is used
3982 // Role {"name":"role0","all_channels":null,"sequence":1,
3983 // "collection_access": {"sg_test_0": {"sg_test_2": {"admin_channels":{"ABC":1},"all_channels":{"ABC":1,"!":1},"channel_inval_seq":15}}}}
3984 type Collection struct {
3985 ChannelInvalSeq uint64 `json:"channel_inval_seq,omitempty"`
3986 }
3987 type invalPric struct {
3988 Name string `json:"name,omitempty"`
3989 CollectionAccess map[string]map[string]Collection `json:"collection_access,omitempty"`
3990 }

Callers

nothing calls this directly

Calls 15

SetUpTestLoggingFunction · 0.92
PtrFunction · 0.92
DatabaseLogCtxFunction · 0.92
TestCtxFunction · 0.92
SetOfFunction · 0.92
TestsUseNamedCollectionsFunction · 0.92
SetupTestDBWithOptionsFunction · 0.85
NewRoleMethod · 0.80
nextSequenceMethod · 0.80
SaveMethod · 0.80
NewUserMethod · 0.80

Tested by

no test coverage detected