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

Function TestAccessQuery

db/query_test.go:251–298  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

249}
250
251func TestAccessQuery(t *testing.T) {
252
253 if base.TestsDisableGSI() {
254 t.Skip("This test is Couchbase Server and UseViews=false only")
255 }
256
257 db, ctx := setupTestDB(t)
258 defer db.Close(ctx)
259 collection, ctx := GetSingleDatabaseCollectionWithUser(ctx, t, db)
260
261 collection.ChannelMapper = channels.NewChannelMapper(ctx,
262 `function(doc, oldDoc) {
263 access(doc.accessUser, doc.accessChannel)
264}`,
265 db.Options.JavascriptTimeout)
266 // Add docs with access grants assignment
267 for i := 1; i <= 5; i++ {
268 _, _, err := collection.Put(ctx, fmt.Sprintf("accessTest%d", i), Body{"accessUser": "user1", "accessChannel": fmt.Sprintf("channel%d", i)})
269 assert.NoError(t, err, "Put accessTest doc")
270 }
271
272 // Standard query
273 username := "user1"
274 results, queryErr := collection.QueryAccess(base.TestCtx(t), username)
275 assert.NoError(t, queryErr, "Query error")
276 var row map[string]interface{}
277 rowCount := 0
278 for results.Next(ctx, &row) {
279 rowCount++
280 }
281 assert.Equal(t, 5, rowCount)
282 assert.NoError(t, results.Close())
283
284 // Attempt to introduce syntax errors. Each of these should return zero rows and no error.
285 // Validates select clause protection
286 usernames := []string{"user1'", "user1?", "user1 ! user2$"}
287 // usernames = append(usernames, "user1`AND") // TODO: MB-50619 - broken until Server 7.1.0
288 for _, username := range usernames {
289 results, queryErr = collection.QueryAccess(base.TestCtx(t), username)
290 assert.NoError(t, queryErr, "Query error")
291 rowCount = 0
292 for results.Next(ctx, &row) {
293 rowCount++
294 }
295 assert.Equal(t, 0, rowCount)
296 assert.NoError(t, results.Close())
297 }
298}
299
300func TestRoleAccessQuery(t *testing.T) {
301 db, ctx := setupTestDB(t)

Callers

nothing calls this directly

Calls 10

TestsDisableGSIFunction · 0.92
NewChannelMapperFunction · 0.92
TestCtxFunction · 0.92
setupTestDBFunction · 0.85
QueryAccessMethod · 0.80
CloseMethod · 0.65
PutMethod · 0.65
NextMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected