mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-26 01:53:42 +01:00
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:
parent
612ef98f03
commit
c1b162c974
@ -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)
|
||||||
|
@ -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")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user