(t *testing.T)
| 1214 | } |
| 1215 | |
| 1216 | func 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) |
nothing calls this directly
no test coverage detected