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

Function TestRoleAccessQuery

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

Source from the content-addressed store, hash-verified

298}
299
300func TestRoleAccessQuery(t *testing.T) {
301 db, ctx := setupTestDB(t)
302 defer db.Close(ctx)
303 collection, ctx := GetSingleDatabaseCollectionWithUser(ctx, t, db)
304
305 collection.ChannelMapper = channels.NewChannelMapper(ctx,
306 `function(doc, oldDoc) {
307 role(doc.accessUser, "role:" + doc.accessChannel)
308}`, db.Options.JavascriptTimeout)
309 // Add docs with access grants assignment
310 for i := 1; i <= 5; i++ {
311 _, _, err := collection.Put(ctx, fmt.Sprintf("accessTest%d", i), Body{"accessUser": "user1", "accessChannel": fmt.Sprintf("channel%d", i)})
312 assert.NoError(t, err, "Put accessTest doc")
313 }
314
315 // Standard query
316 username := "user1"
317 results, queryErr := collection.QueryRoleAccess(base.TestCtx(t), username)
318 assert.NoError(t, queryErr, "Query error")
319 var row map[string]interface{}
320 rowCount := 0
321 for results.Next(ctx, &row) {
322 rowCount++
323 }
324 assert.Equal(t, 5, rowCount)
325 assert.NoError(t, results.Close())
326
327 // Attempt to introduce syntax errors. Each of these should return zero rows and no error.
328 // Validates select clause protection
329 usernames := []string{"user1'", "user1?", "user1 ! user2$"}
330 // usernames = append(usernames, "user1`AND") // TODO: MB-50619 - broken until Server 7.1.0
331 for _, username := range usernames {
332 results, queryErr = collection.QueryRoleAccess(base.TestCtx(t), username)
333 assert.NoError(t, queryErr, "Query error")
334 rowCount = 0
335 for results.Next(ctx, &row) {
336 rowCount++
337 }
338 assert.Equal(t, 0, rowCount)
339 assert.NoError(t, results.Close())
340 }
341}
342
343func countQueryResults(ctx context.Context, results sgbucket.QueryResultIterator) int {
344

Callers

nothing calls this directly

Calls 9

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

Tested by

no test coverage detected