(t *testing.T)
| 3931 | } |
| 3932 | |
| 3933 | func 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 | } |
nothing calls this directly
no test coverage detected