Improve private domain's behavior tests and logic (#256)

Improved the behavior tests for private domains
and its logic as well because on existing accounts
there was no primary status update
This commit is contained in:
Maycon Santos 2022-03-10 13:47:36 +01:00 committed by GitHub
parent 612ef98f03
commit c1b162c974
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 63 additions and 53 deletions

View File

@ -248,11 +248,16 @@ func (am *DefaultAccountManager) updateAccountDomainAttributes(account *Account,
func (am *DefaultAccountManager) handleExistingUserAccount(existingAcc *Account, domainAcc *Account, claims jwtclaims.AuthorizationClaims) error { func (am *DefaultAccountManager) handleExistingUserAccount(existingAcc *Account, domainAcc *Account, claims jwtclaims.AuthorizationClaims) error {
var err error var err error
if domainAcc == nil || existingAcc.Id != domainAcc.Id { if domainAcc != nil && existingAcc.Id != domainAcc.Id {
err = am.updateAccountDomainAttributes(existingAcc, claims, false) err = am.updateAccountDomainAttributes(existingAcc, claims, false)
if err != nil { if err != nil {
return err return err
} }
} else {
err = am.updateAccountDomainAttributes(existingAcc, claims, true)
if err != nil {
return err
}
} }
// we should register the account ID to this user's metadata in our IDP manager // we should register the account ID to this user's metadata in our IDP manager
@ -268,24 +273,21 @@ func (am *DefaultAccountManager) handleExistingUserAccount(existingAcc *Account,
// otherwise it will create a new account and make it primary account for the domain. // otherwise it will create a new account and make it primary account for the domain.
func (am *DefaultAccountManager) handleNewUserAccount(domainAcc *Account, claims jwtclaims.AuthorizationClaims) (*Account, error) { func (am *DefaultAccountManager) handleNewUserAccount(domainAcc *Account, claims jwtclaims.AuthorizationClaims) (*Account, error) {
var ( var (
account *Account account *Account
primaryAccount bool err error
) )
lowerDomain := strings.ToLower(claims.Domain) lowerDomain := strings.ToLower(claims.Domain)
// if domain already has a primary account, add regular user // if domain already has a primary account, add regular user
if domainAcc != nil { if domainAcc != nil {
account = domainAcc account = domainAcc
account.Users[claims.UserId] = NewRegularUser(claims.UserId) account.Users[claims.UserId] = NewRegularUser(claims.UserId)
primaryAccount = false
} else { } else {
account = NewAccount(claims.UserId, lowerDomain) account = NewAccount(claims.UserId, lowerDomain)
account.Users[claims.UserId] = NewAdminUser(claims.UserId) account.Users[claims.UserId] = NewAdminUser(claims.UserId)
primaryAccount = true err = am.updateAccountDomainAttributes(account, claims, true)
} if err != nil {
return nil, err
err := am.updateAccountDomainAttributes(account, claims, primaryAccount) }
if err != nil {
return nil, err
} }
err = am.updateIDPMetadata(claims.UserId, account.Id) err = am.updateIDPMetadata(claims.UserId, account.Id)

View File

@ -39,15 +39,16 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
type initUserParams jwtclaims.AuthorizationClaims type initUserParams jwtclaims.AuthorizationClaims
type test struct { type test struct {
name string name string
inputClaims jwtclaims.AuthorizationClaims inputClaims jwtclaims.AuthorizationClaims
inputInitUserParams initUserParams inputInitUserParams initUserParams
inputUpdateAttrs bool inputUpdateAttrs bool
inputUpdateClaimAccount bool inputUpdateClaimAccount bool
testingFunc require.ComparisonAssertionFunc testingFunc require.ComparisonAssertionFunc
expectedMSG string expectedMSG string
expectedUserRole UserRole expectedUserRole UserRole
expectedDomainCategory string expectedDomainCategory string
expectedPrimaryDomainStatus bool
} }
var ( var (
@ -68,11 +69,12 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
UserId: "pub-domain-user", UserId: "pub-domain-user",
DomainCategory: PublicCategory, DomainCategory: PublicCategory,
}, },
inputInitUserParams: defaultInitAccount, inputInitUserParams: defaultInitAccount,
testingFunc: require.NotEqual, testingFunc: require.NotEqual,
expectedMSG: "account IDs shouldn't match", expectedMSG: "account IDs shouldn't match",
expectedUserRole: UserRoleAdmin, expectedUserRole: UserRoleAdmin,
expectedDomainCategory: "", expectedDomainCategory: "",
expectedPrimaryDomainStatus: false,
} }
initUnknown := defaultInitAccount initUnknown := defaultInitAccount
@ -86,11 +88,12 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
UserId: "unknown-domain-user", UserId: "unknown-domain-user",
DomainCategory: UnknownCategory, DomainCategory: UnknownCategory,
}, },
inputInitUserParams: initUnknown, inputInitUserParams: initUnknown,
testingFunc: require.NotEqual, testingFunc: require.NotEqual,
expectedMSG: "account IDs shouldn't match", expectedMSG: "account IDs shouldn't match",
expectedUserRole: UserRoleAdmin, expectedUserRole: UserRoleAdmin,
expectedDomainCategory: "", expectedDomainCategory: "",
expectedPrimaryDomainStatus: false,
} }
testCase3 := test{ testCase3 := test{
@ -100,11 +103,12 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
UserId: "pvt-domain-user", UserId: "pvt-domain-user",
DomainCategory: PrivateCategory, DomainCategory: PrivateCategory,
}, },
inputInitUserParams: defaultInitAccount, inputInitUserParams: defaultInitAccount,
testingFunc: require.NotEqual, testingFunc: require.NotEqual,
expectedMSG: "account IDs shouldn't match", expectedMSG: "account IDs shouldn't match",
expectedUserRole: UserRoleAdmin, expectedUserRole: UserRoleAdmin,
expectedDomainCategory: PrivateCategory, expectedDomainCategory: PrivateCategory,
expectedPrimaryDomainStatus: true,
} }
privateInitAccount := defaultInitAccount privateInitAccount := defaultInitAccount
@ -118,12 +122,13 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
UserId: "pvt-domain-user", UserId: "pvt-domain-user",
DomainCategory: PrivateCategory, DomainCategory: PrivateCategory,
}, },
inputUpdateAttrs: true, inputUpdateAttrs: true,
inputInitUserParams: privateInitAccount, inputInitUserParams: privateInitAccount,
testingFunc: require.Equal, testingFunc: require.Equal,
expectedMSG: "account IDs should match", expectedMSG: "account IDs should match",
expectedUserRole: UserRoleUser, expectedUserRole: UserRoleUser,
expectedDomainCategory: PrivateCategory, expectedDomainCategory: PrivateCategory,
expectedPrimaryDomainStatus: true,
} }
testCase5 := test{ testCase5 := test{
@ -133,11 +138,12 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
UserId: defaultInitAccount.UserId, UserId: defaultInitAccount.UserId,
DomainCategory: PrivateCategory, DomainCategory: PrivateCategory,
}, },
inputInitUserParams: defaultInitAccount, inputInitUserParams: defaultInitAccount,
testingFunc: require.Equal, testingFunc: require.Equal,
expectedMSG: "account IDs should match", expectedMSG: "account IDs should match",
expectedUserRole: UserRoleAdmin, expectedUserRole: UserRoleAdmin,
expectedDomainCategory: PrivateCategory, expectedDomainCategory: PrivateCategory,
expectedPrimaryDomainStatus: true,
} }
testCase6 := test{ testCase6 := test{
@ -147,12 +153,13 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
UserId: defaultInitAccount.UserId, UserId: defaultInitAccount.UserId,
DomainCategory: PrivateCategory, DomainCategory: PrivateCategory,
}, },
inputUpdateClaimAccount: true, inputUpdateClaimAccount: true,
inputInitUserParams: defaultInitAccount, inputInitUserParams: defaultInitAccount,
testingFunc: require.Equal, testingFunc: require.Equal,
expectedMSG: "account IDs should match", expectedMSG: "account IDs should match",
expectedUserRole: UserRoleAdmin, expectedUserRole: UserRoleAdmin,
expectedDomainCategory: PrivateCategory, expectedDomainCategory: PrivateCategory,
expectedPrimaryDomainStatus: true,
} }
for _, testCase := range []test{testCase1, testCase2, testCase3, testCase4, testCase5, testCase6} { for _, testCase := range []test{testCase1, testCase2, testCase3, testCase4, testCase5, testCase6} {
t.Run(testCase.name, func(t *testing.T) { t.Run(testCase.name, func(t *testing.T) {
@ -177,8 +184,9 @@ func TestDefaultAccountManager_GetAccountWithAuthorizationClaims(t *testing.T) {
testCase.testingFunc(t, initAccount.Id, account.Id, testCase.expectedMSG) testCase.testingFunc(t, initAccount.Id, account.Id, testCase.expectedMSG)
require.EqualValues(t, testCase.expectedUserRole, account.Users[testCase.inputClaims.UserId].Role, "user role should match") require.EqualValues(t, testCase.expectedUserRole, account.Users[testCase.inputClaims.UserId].Role, "expected user role should match")
require.EqualValues(t, testCase.expectedDomainCategory, account.DomainCategory, "account domain category should match") require.EqualValues(t, testCase.expectedDomainCategory, account.DomainCategory, "expected account domain category should match")
require.EqualValues(t, testCase.expectedPrimaryDomainStatus, account.IsDomainPrimaryAccount, "expected account primary status should match")
}) })
} }
} }