diff options
author | 2017-05-15 12:27:07 -0700 | |
---|---|---|
committer | 2017-05-15 12:27:07 -0700 | |
commit | 98ba64449a632518bd2b86fe8d927f4a960d3ddc (patch) | |
tree | 131d9c4272fa6179fcda6c5a33fcb3b1bd57ad2e /Example/Auth/Tests/FIRDeleteAccountResponseTests.m | |
parent | 32461366c9e204a527ca05e6e9b9404a2454ac51 (diff) |
Initial
Diffstat (limited to 'Example/Auth/Tests/FIRDeleteAccountResponseTests.m')
-rw-r--r-- | Example/Auth/Tests/FIRDeleteAccountResponseTests.m | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/Example/Auth/Tests/FIRDeleteAccountResponseTests.m b/Example/Auth/Tests/FIRDeleteAccountResponseTests.m new file mode 100644 index 0000000..f75735e --- /dev/null +++ b/Example/Auth/Tests/FIRDeleteAccountResponseTests.m @@ -0,0 +1,172 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import <XCTest/XCTest.h> + +#import "FIRAuthErrors.h" +#import "FIRAuthBackend.h" +#import "FIRDeleteAccountRequest.h" +#import "FIRDeleteAccountResponse.h" +#import "FIRFakeBackendRPCIssuer.h" + +/** @var kTestAPIKey + @brief Fake API key used for testing. + */ +static NSString *const kTestAPIKey = @"APIKey"; + +/** @var kLocalID + @brief Fake LocalID used for testing. + */ +static NSString *const kLocalID = @"LocalID"; + +/** @var kAccessToken + @brief Fake AccessToken used for testing. + */ +static NSString *const kAccessToken = @"AccessToken"; + +/** @var kUserDisabledErrorMessage + @brief The error returned by the server if the user account is diabled. + */ +static NSString *const kUserDisabledErrorMessage = @"USER_DISABLED"; + +/** @var kinvalidUserTokenErrorMessage + @brief This is the error message the server responds with if user's saved auth credential is + invalid, and the user needs to sign in again. + */ +static NSString *const kinvalidUserTokenErrorMessage = @"INVALID_ID_TOKEN:"; + +/** @var kCredentialTooOldErrorMessage + @brief This is the error message the server responds with if account change is attempted 5 + minutes after signing in. + */ +static NSString *const kCredentialTooOldErrorMessage = @"CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"; + +/** @class FIRDeleteUserResponseTests + @brief Tests for @c FIRDeleteAccountResponse. + */ +@interface FIRDeleteAccountResponseTests : XCTestCase +@end +@implementation FIRDeleteAccountResponseTests { + /** @var _RPCIssuer + @brief This backend RPC issuer is used to fake network responses for each test in the suite. + In the @c setUp method we initialize this and set @c FIRAuthBackend's RPC issuer to it. + */ + FIRFakeBackendRPCIssuer *_RPCIssuer; +} + +- (void)setUp { + [super setUp]; + FIRFakeBackendRPCIssuer *RPCIssuer = [[FIRFakeBackendRPCIssuer alloc] init]; + [FIRAuthBackend setDefaultBackendImplementationWithRPCIssuer:RPCIssuer]; + _RPCIssuer = RPCIssuer; +} + +- (void)tearDown { + _RPCIssuer = nil; + [FIRAuthBackend setDefaultBackendImplementationWithRPCIssuer:nil]; + [super tearDown]; +} + +/** @fn testUserDisabledError + @brief This test simulates the occurrence of a @c userDisabled error. + */ +- (void)testUserDisabledError { + FIRDeleteAccountRequest *request = [[FIRDeleteAccountRequest alloc] initWithAPIKey:kTestAPIKey + localID:kLocalID + accessToken:kAccessToken]; + + __block BOOL callbackInvoked; + __block NSError *RPCError; + [FIRAuthBackend deleteAccount:request + callback:^(NSError *_Nullable error) { + callbackInvoked = YES; + RPCError = error; + }]; + + [_RPCIssuer respondWithServerErrorMessage:kUserDisabledErrorMessage]; + + XCTAssert(callbackInvoked); + XCTAssertNotNil(RPCError); + XCTAssertEqual(RPCError.code, FIRAuthErrorCodeUserDisabled); +} + +/** @fn testinvalidUserTokenError + @brief This test simulates the occurrence of a @c invalidUserToken error. + */ +- (void)testinvalidUserTokenError { + FIRDeleteAccountRequest *request = [[FIRDeleteAccountRequest alloc] initWithAPIKey:kTestAPIKey + localID:kLocalID + accessToken:kAccessToken]; + + __block BOOL callbackInvoked; + __block NSError *RPCError; + [FIRAuthBackend deleteAccount:request + callback:^(NSError *_Nullable error) { + callbackInvoked = YES; + RPCError = error; + }]; + + [_RPCIssuer respondWithServerErrorMessage:kinvalidUserTokenErrorMessage]; + + XCTAssert(callbackInvoked); + XCTAssertNotNil(RPCError); + XCTAssertEqual(RPCError.code, FIRAuthErrorCodeInvalidUserToken); +} + +/** @fn testrequiredRecentLoginError + @brief This test simulates the occurrence of a @c credentialTooOld error. + */ +- (void)testrequiredRecentLoginError { + FIRDeleteAccountRequest *request = [[FIRDeleteAccountRequest alloc] initWithAPIKey:kTestAPIKey + localID:kLocalID + accessToken:kAccessToken]; + __block BOOL callbackInvoked; + __block NSError *RPCError; + [FIRAuthBackend deleteAccount:request + callback:^(NSError *_Nullable error) { + callbackInvoked = YES; + RPCError = error; + }]; + + [_RPCIssuer respondWithServerErrorMessage:kCredentialTooOldErrorMessage]; + + XCTAssert(callbackInvoked); + XCTAssertNotNil(RPCError); + XCTAssertEqual(RPCError.code, FIRAuthErrorCodeRequiresRecentLogin); +} + +/** @fn testSuccessfulDeleteAccount + @brief This test simulates a completed succesful deleteAccount operation. + */ +- (void)testSuccessfulDeleteAccountResponse { + FIRDeleteAccountRequest *request = [[FIRDeleteAccountRequest alloc] initWithAPIKey:kTestAPIKey + localID:kLocalID + accessToken:kAccessToken]; + __block BOOL callbackInvoked; + __block NSError *RPCError; + [FIRAuthBackend deleteAccount:request + callback:^(NSError *_Nullable error) { + callbackInvoked = YES; + RPCError = error; + }]; + + [_RPCIssuer respondWithJSON:@{}]; + + XCTAssert(callbackInvoked); + XCTAssertNil(RPCError); +} + +@end |