diff options
Diffstat (limited to 'internal/api')
| -rw-r--r-- | internal/api/client/auth/authorize_test.go | 21 | 
1 files changed, 12 insertions, 9 deletions
diff --git a/internal/api/client/auth/authorize_test.go b/internal/api/client/auth/authorize_test.go index e3e4ce9ee..738b3b910 100644 --- a/internal/api/client/auth/authorize_test.go +++ b/internal/api/client/auth/authorize_test.go @@ -20,7 +20,7 @@ type AuthAuthorizeTestSuite struct {  type authorizeHandlerTestCase struct {  	description            string -	mutateUserAccount      func(*gtsmodel.User, *gtsmodel.Account) +	mutateUserAccount      func(*gtsmodel.User, *gtsmodel.Account) []string  	expectedStatusCode     int  	expectedLocationHeader string  } @@ -29,40 +29,44 @@ func (suite *AuthAuthorizeTestSuite) TestAccountAuthorizeHandler() {  	tests := []authorizeHandlerTestCase{  		{  			description: "user has their email unconfirmed", -			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { -				// nothing to do, weed_lord420 already has their email unconfirmed +			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string { +				user.ConfirmedAt = time.Time{} +				return []string{"confirmed_at"}  			},  			expectedStatusCode:     http.StatusSeeOther,  			expectedLocationHeader: auth.CheckYourEmailPath,  		},  		{  			description: "user has their email confirmed but is not approved", -			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { +			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string {  				user.ConfirmedAt = time.Now()  				user.Email = user.UnconfirmedEmail +				return []string{"confirmed_at", "email"}  			},  			expectedStatusCode:     http.StatusSeeOther,  			expectedLocationHeader: auth.WaitForApprovalPath,  		},  		{  			description: "user has their email confirmed and is approved, but User entity has been disabled", -			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { +			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string {  				user.ConfirmedAt = time.Now()  				user.Email = user.UnconfirmedEmail  				user.Approved = testrig.TrueBool()  				user.Disabled = testrig.TrueBool() +				return []string{"confirmed_at", "email", "approved", "disabled"}  			},  			expectedStatusCode:     http.StatusSeeOther,  			expectedLocationHeader: auth.AccountDisabledPath,  		},  		{  			description: "user has their email confirmed and is approved, but Account entity has been suspended", -			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) { +			mutateUserAccount: func(user *gtsmodel.User, account *gtsmodel.Account) []string {  				user.ConfirmedAt = time.Now()  				user.Email = user.UnconfirmedEmail  				user.Approved = testrig.TrueBool()  				user.Disabled = testrig.FalseBool()  				account.SuspendedAt = time.Now() +				return []string{"confirmed_at", "email", "approved", "disabled"}  			},  			expectedStatusCode:     http.StatusSeeOther,  			expectedLocationHeader: auth.AccountDisabledPath, @@ -77,7 +81,6 @@ func (suite *AuthAuthorizeTestSuite) TestAccountAuthorizeHandler() {  		*user = *suite.testUsers["unconfirmed_account"]  		*account = *suite.testAccounts["unconfirmed_account"] -		user.SignInCount++ // cannot be 0 or fails NULL constraint  		testSession := sessions.Default(ctx)  		testSession.Set(sessionUserID, user.ID) @@ -86,11 +89,11 @@ func (suite *AuthAuthorizeTestSuite) TestAccountAuthorizeHandler() {  			panic(fmt.Errorf("failed on case %s: %w", testCase.description, err))  		} -		testCase.mutateUserAccount(user, account) +		columns := testCase.mutateUserAccount(user, account)  		testCase.description = fmt.Sprintf("%s, %t, %s", user.Email, *user.Disabled, account.SuspendedAt) -		err := suite.db.UpdateUser(context.Background(), user) +		err := suite.db.UpdateUser(context.Background(), user, columns...)  		suite.NoError(err)  		err = suite.db.UpdateAccount(context.Background(), account)  		suite.NoError(err)  | 
