(t *testing.T)
| 264 | base.RequireWaitForStat(t, func() int64 { return rt.GetDatabase().DbStats.SecurityStats.NumAccessErrors.Value() }, 1) |
| 265 | } |
| 266 | func TestUserHasDocAccessDocNotFound(t *testing.T) { |
| 267 | rt := NewRestTester(t, &RestTesterConfig{ |
| 268 | DatabaseConfig: &DatabaseConfig{DbConfig: DbConfig{ |
| 269 | QueryPaginationLimit: base.Ptr(2), |
| 270 | CacheConfig: &CacheConfig{ |
| 271 | RevCacheConfig: &RevCacheConfig{ |
| 272 | MaxItemCount: base.Ptr(uint32(0)), |
| 273 | }, |
| 274 | ChannelCacheConfig: &ChannelCacheConfig{ |
| 275 | MaxNumber: base.Ptr(0), |
| 276 | }, |
| 277 | }, |
| 278 | }}, |
| 279 | }) |
| 280 | defer rt.Close() |
| 281 | |
| 282 | resp := rt.SendAdminRequest("PUT", "/{{.keyspace}}/doc", `{"channels": ["A"]}`) |
| 283 | RequireStatus(t, resp, http.StatusCreated) |
| 284 | |
| 285 | collection, ctx := rt.GetSingleTestDatabaseCollectionWithUser() |
| 286 | userHasDocAccess, err := db.UserHasDocAccess(ctx, collection, "doc") |
| 287 | assert.NoError(t, err) |
| 288 | assert.True(t, userHasDocAccess) |
| 289 | |
| 290 | // Purge the document from the bucket to force 'not found' |
| 291 | err = collection.Purge(ctx, "doc", true) |
| 292 | require.NoError(t, err) |
| 293 | |
| 294 | userHasDocAccess, err = db.UserHasDocAccess(ctx, collection, "doc") |
| 295 | assert.NoError(t, err) |
| 296 | assert.False(t, userHasDocAccess) |
| 297 | } |
| 298 | |
| 299 | // CBG-2143: Make sure the REST API is returning forbidden errors if when unsupported config option is set |
| 300 | func TestForceAPIForbiddenErrors(t *testing.T) { |
nothing calls this directly
no test coverage detected