(t *testing.T)
| 537 | } |
| 538 | |
| 539 | func TestRoleInheritance(t *testing.T) { |
| 540 | ctx := base.TestCtx(t) |
| 541 | // Create some roles: |
| 542 | bucket := base.GetTestBucket(t) |
| 543 | defer bucket.Close(ctx) |
| 544 | dataStore := bucket.GetSingleDataStore() |
| 545 | auth := NewTestAuthenticator(t, dataStore, nil, DefaultAuthenticatorOptions(base.TestCtx(t))) |
| 546 | role, err := auth.NewRole("square", ch.BaseSetOf(t, "dull", "duller", "dullest")) |
| 547 | require.NoError(t, err) |
| 548 | require.NoError(t, auth.Save(role)) |
| 549 | role, err = auth.NewRole("frood", ch.BaseSetOf(t, "hoopy", "hoopier", "hoopiest")) |
| 550 | require.NoError(t, err) |
| 551 | assert.Equal(t, nil, auth.Save(role)) |
| 552 | |
| 553 | user, err := auth.NewUser("arthur", "password", ch.BaseSetOf(t, "britain")) |
| 554 | require.NoError(t, err) |
| 555 | userImpl, ok := user.(*userImpl) |
| 556 | require.True(t, ok) |
| 557 | // Directly set the roles, bypassing the usual SetRoles method, so we can set the "since" value: |
| 558 | userImpl.setRolesSince(ch.TimedSet{"square": ch.NewVbSimpleSequence(0x3), "nonexistent": ch.NewVbSimpleSequence(0x42), "frood": ch.NewVbSimpleSequence(0x4)}) |
| 559 | assert.Equal(t, ch.TimedSet{"square": ch.NewVbSimpleSequence(0x3), "nonexistent": ch.NewVbSimpleSequence(0x42), "frood": ch.NewVbSimpleSequence(0x4)}, user.RoleNames()) |
| 560 | require.NoError(t, auth.Save(user)) |
| 561 | |
| 562 | user2, err := auth.GetUser("arthur") |
| 563 | require.NoError(t, err) |
| 564 | log.Printf("Channels = %s", user2.Channels()) |
| 565 | user2Channels, err := user2.inheritedChannels() |
| 566 | require.NoError(t, err) |
| 567 | assert.Equal(t, ch.AtSequence(ch.BaseSetOf(t, "!", "britain"), 1), user2.Channels()) |
| 568 | assert.Equal(t, ch.TimedSet{"!": ch.NewVbSimpleSequence(0x1), "britain": ch.NewVbSimpleSequence(0x1), "dull": ch.NewVbSimpleSequence(0x3), "duller": ch.NewVbSimpleSequence(0x3), "dullest": ch.NewVbSimpleSequence(0x3), "hoopy": ch.NewVbSimpleSequence(0x4), "hoopier": ch.NewVbSimpleSequence(0x4), "hoopiest": ch.NewVbSimpleSequence(0x4)}, user2Channels) |
| 569 | |
| 570 | requireCanSeeChannels(t, user2, "britain", "duller", "hoopy") |
| 571 | require.NoError(t, user2.authorizeAllChannels(ch.BaseSetOf(t, "britain", "dull", "hoopiest"))) |
| 572 | } |
| 573 | |
| 574 | func TestRegisterUser(t *testing.T) { |
| 575 | ctx := base.TestCtx(t) |
nothing calls this directly
no test coverage detected