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

Function testUserFunctionsAsUser

db/functions/function_test.go:292–329  ·  view source on GitHub ↗

User-function tests, run as user "alice":

(t *testing.T, ctx context.Context, db *db.Database)

Source from the content-addressed store, hash-verified

290
291// User-function tests, run as user "alice":
292func testUserFunctionsAsUser(t *testing.T, ctx context.Context, db *db.Database) {
293 testUserFunctionsCommon(t, ctx, db)
294
295 // Checking `context.user.name`:
296 result, err := db.CallUserFunction(ctx, "user_only", nil, true)
297 assert.NoError(t, err)
298 assert.EqualValues(t, "alice", result)
299
300 // Checking `context.admin.func`
301 _, err = db.CallUserFunction(ctx, "sudo_call_forbidden", nil, true)
302 assert.NoError(t, err)
303
304 // No such function:
305 _, err = db.CallUserFunction(ctx, "xxxx", nil, true)
306 assertHTTPError(t, err, 403) // not 404 as for an admin
307
308 _, err = db.CallUserFunction(ctx, "great_and_terrible", nil, true)
309 assertHTTPError(t, err, 403)
310
311 _, err = db.CallUserFunction(ctx, "call_forbidden", nil, true)
312 assertHTTPError(t, err, 403)
313 assert.ErrorContains(t, err, "great_and_terrible") // failed fn name should appear in error
314
315 _, err = db.CallUserFunction(ctx, "admin_only", nil, true)
316 assertHTTPError(t, err, 403)
317
318 _, err = db.CallUserFunction(ctx, "require_admin", nil, true)
319 assertHTTPError(t, err, 403)
320
321 _, err = db.CallUserFunction(ctx, "pevensies_only", nil, true)
322 assertHTTPError(t, err, 403)
323
324 _, err = db.CallUserFunction(ctx, "narnia_only", nil, true)
325 assertHTTPError(t, err, 403)
326
327 _, err = db.CallUserFunction(ctx, "villain_only", nil, true)
328 assertHTTPError(t, err, 403)
329}
330
331// Test CRUD operations
332func TestUserFunctionsCRUD(t *testing.T) {

Callers 1

TestUserFunctionsFunction · 0.70

Calls 3

CallUserFunctionMethod · 0.80
testUserFunctionsCommonFunction · 0.70
assertHTTPErrorFunction · 0.70

Tested by

no test coverage detected