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

Function TestGetPrincipal

auth/auth_test.go:1216–1275  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1214}
1215
1216func TestGetPrincipal(t *testing.T) {
1217 ctx := base.TestCtx(t)
1218 testBucket := base.GetTestBucket(t)
1219 defer testBucket.Close(ctx)
1220 dataStore := testBucket.GetSingleDataStore()
1221 auth := NewTestAuthenticator(t, dataStore, nil, DefaultAuthenticatorOptions(ctx))
1222
1223 const (
1224 channelRead = "read"
1225 channelWrite = "write"
1226 channelExecute = "execute"
1227 channelCreate = "create"
1228 channelUpdate = "update"
1229 channelDelete = "delete"
1230 roleRoot = "root"
1231 roleUser = "user"
1232 username = "batman"
1233 password = "YmF0bWFu"
1234 accessViewKeyRoot = "role:root"
1235 accessViewKeyUser = "role:user"
1236 )
1237
1238 // Create a new role named root with access to read, write and execute channels
1239 role, _ := auth.NewRole(roleRoot, ch.BaseSetOf(t, channelRead, channelWrite, channelExecute))
1240 assert.Equal(t, nil, auth.Save(role))
1241
1242 // Create another role named user with access to read and execute channels; no write channel access.
1243 role, _ = auth.NewRole(roleUser, ch.BaseSetOf(t, channelRead, channelExecute))
1244 assert.Equal(t, nil, auth.Save(role))
1245
1246 // Get the principal against root role and verify the details.
1247 principal, err := auth.GetPrincipal(roleRoot, false)
1248 assert.NoError(t, err)
1249 assert.Equal(t, roleRoot, principal.Name())
1250 assert.Equal(t, accessViewKeyRoot, principal.accessViewKey())
1251 requireCanSeeChannels(t, principal, channelRead, channelWrite, channelExecute)
1252
1253 // Get the principal against user role and verify the details.
1254 principal, err = auth.GetPrincipal(roleUser, false)
1255 assert.NoError(t, err)
1256 assert.Equal(t, roleUser, principal.Name())
1257 assert.Equal(t, accessViewKeyUser, principal.accessViewKey())
1258 requireCanSeeChannels(t, principal, channelRead, channelExecute)
1259 requireCannotSeeChannels(t, principal, channelWrite)
1260
1261 // Create a new user with new set of channels and assign user role to the user.
1262 user, err := auth.NewUser(username, password, ch.BaseSetOf(
1263 t, channelCreate, channelRead, channelUpdate, channelDelete))
1264 require.NoError(t, err)
1265 user.(*userImpl).setRolesSince(ch.TimedSet{roleUser: ch.NewVbSimpleSequence(0x3)})
1266 require.NoError(t, auth.Save(user))
1267
1268 // Get the principal of user and verify the details
1269 principal, err = auth.GetPrincipal(username, true)
1270 assert.NoError(t, err)
1271 assert.Equal(t, username, principal.Name())
1272 assert.Equal(t, username, principal.accessViewKey())
1273 requireCanSeeChannels(t, principal, channelRead, channelExecute, channelCreate, channelUpdate, channelDelete)

Callers

nothing calls this directly

Calls 15

TestCtxFunction · 0.92
GetTestBucketFunction · 0.92
NewTestAuthenticatorFunction · 0.85
requireCanSeeChannelsFunction · 0.85
requireCannotSeeChannelsFunction · 0.85
NewRoleMethod · 0.80
SaveMethod · 0.80
GetPrincipalMethod · 0.80
NewUserMethod · 0.80
CloseMethod · 0.65
NameMethod · 0.65

Tested by

no test coverage detected