diff options
Diffstat (limited to 'Example/Auth/Tests/FIRFakeBackendRPCIssuer.m')
-rw-r--r-- | Example/Auth/Tests/FIRFakeBackendRPCIssuer.m | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/Example/Auth/Tests/FIRFakeBackendRPCIssuer.m b/Example/Auth/Tests/FIRFakeBackendRPCIssuer.m new file mode 100644 index 0000000..93589e7 --- /dev/null +++ b/Example/Auth/Tests/FIRFakeBackendRPCIssuer.m @@ -0,0 +1,86 @@ +/* + * 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 "FIRFakeBackendRPCIssuer.h" + +/** @var kFakeErrorDomain + @brief Fake error domain used for testing. + */ +static NSString *const kFakeErrorDomain = @"fake domain"; + +@implementation FIRFakeBackendRPCIssuer { + /** @var _handler + @brief A block we must invoke when @c respondWithError or @c respondWithJSON are called. + */ + FIRAuthBackendRPCIssuerCompletionHandler _handler; +} + +- (void)asyncPostToURL:(NSURL *)URL + body:(NSData *)body + contentType:(NSString *)contentType + completionHandler:(FIRAuthBackendRPCIssuerCompletionHandler)handler { + _requestURL = [URL copy]; + _requestData = body; + NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:body options:0 error:nil]; + _decodedRequest = JSON; + _contentType = contentType; + _handler = handler; +} + +- (void)respondWithData:(NSData *)data error:(NSError *)error { + NSAssert(_handler, @"There is no pending RPC request."); + NSAssert(data || error, @"At least one of: data or error should be been non-nil."); + FIRAuthBackendRPCIssuerCompletionHandler handler = _handler; + _handler = nil; + handler(data, error); +} + +- (NSData *)respondWithServerErrorMessage:(NSString *)errorMessage error:(NSError *)error { + return [self respondWithJSON:@{ @"error" : @{ @"message" : errorMessage } } error:error]; +} + +- (NSData *)respondWithServerErrorMessage:(NSString *)errorMessage { + NSError *error = [NSError errorWithDomain:NSCocoaErrorDomain code:0 userInfo:nil]; + return [self respondWithServerErrorMessage:errorMessage error:error]; +} + +- (NSData *)respondWithJSON:(NSDictionary *)JSON error:(NSError *)error { + NSError *JSONEncodingError; + NSData *data; + if (JSON) { + data = [NSJSONSerialization dataWithJSONObject:JSON + options:NSJSONWritingPrettyPrinted + error:&JSONEncodingError]; + } + NSAssert(!JSONEncodingError, @"An error occurred encoding the JSON response."); + [self respondWithData:data error:error]; + return data; +} + +- (NSData *)respondWithJSONError:(NSDictionary *)JSONError { + return [self respondWithJSON:JSONError + error:[NSError errorWithDomain:kFakeErrorDomain code:0 userInfo:nil]]; +} + +- (NSData *)respondWithError:(NSError *)error { + return [self respondWithJSON:nil error:error]; +} + +- (NSData *)respondWithJSON:(NSDictionary *)JSON { + return [self respondWithJSON:JSON error:nil]; +} + +@end |