bail if secret is missing and we're trying to authenticate

This commit is contained in:
Stephan Diederich 2013-09-09 02:16:34 +02:00
parent 43db55de17
commit 7c2e2b88a0
3 changed files with 24 additions and 0 deletions

View File

@ -201,6 +201,15 @@ static NSString* const kBITAuthenticatorLastAuthenticatedVersionKey = @"BITAuthe
BITHockeyLog(@"Already authenticating. Ignoring request");
return;
}
if(_authenticationType == BITAuthenticatorAuthTypeEmail && (nil == _authenticationSecret || !_authenticationSecret.length)) {
if(completion) {
NSError *error = [NSError errorWithDomain:kBITAuthenticatorErrorDomain
code:BITAuthenticatorAuthorizationSecretMissing
userInfo:@{NSLocalizedDescriptionKey: @"Authentication secret is not set but required."}];
completion(nil, error);
}
return;
}
BITAuthenticationViewController *viewController = [[BITAuthenticationViewController alloc] initWithDelegate:self];
switch (self.authenticationType) {

View File

@ -94,6 +94,7 @@ typedef NS_ENUM(NSInteger, BITAuthenticatorReason) {
BITAuthenticatorAPIServerReturnedInvalidRespone,
BITAuthenticatorNotAuthorized,
BITAuthenticatorAuthenticationCancelled,
BITAuthenticatorAuthorizationSecretMissing,
};
extern NSString *const __attribute__((unused)) kBITAuthenticatorErrorDomain;

View File

@ -56,6 +56,7 @@ static void *kInstallationIdentification = &kInstallationIdentification;
[super setUp];
_sut = [[BITAuthenticator alloc] initWithAppIdentifier:nil isAppStoreEnvironemt:NO];
_sut.authenticationType = BITAuthenticatorAuthTypeEmailAndPassword;
}
- (void)tearDown {
@ -129,6 +130,7 @@ static void *kInstallationIdentification = &kInstallationIdentification;
- (void) testThatAuthenticateWithTypeEmailShowsAViewController {
id delegateMock = mockProtocol(@protocol(BITAuthenticatorDelegate));
_sut.delegate = delegateMock;
_sut.authenticationSecret = @"myscret";
_sut.authenticationType = BITAuthenticatorAuthTypeEmail;
[_sut authenticateWithCompletion:nil];
@ -136,6 +138,18 @@ static void *kInstallationIdentification = &kInstallationIdentification;
[verifyCount(delegateMock, times(1)) authenticator:_sut willShowAuthenticationController:(id)anything()];
}
- (void) testThatAuthenticateWithTypeEmailShowsAViewControllerOnlyIfAuthenticationSecretIsSet {
id delegateMock = mockProtocol(@protocol(BITAuthenticatorDelegate));
_sut.delegate = delegateMock;
_sut.authenticationSecret = nil;
_sut.authenticationType = BITAuthenticatorAuthTypeEmail;
[_sut authenticateWithCompletion:nil];
[verifyCount(delegateMock, times(0)) authenticator:_sut willShowAuthenticationController:(id)anything()];
}
- (void) testThatAuthenticateWithTypeEmailAndPasswordShowsAViewController {
id delegateMock = mockProtocol(@protocol(BITAuthenticatorDelegate));
_sut.delegate = delegateMock;