mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-10 22:45:59 +05:45
* Migrate Firebase off @import statements
* - Migrate tests and test utils from @import to #import.
- Update Xcode projects for tests to explicitly link in framework deps.
- Update check_no_module_imports.sh to look for @imports in tests/test utils/
integration tests.
* Ensure check_no_module_imports.sh explicitly exits with code 0 on success.
191 lines
7.2 KiB
Objective-C
191 lines
7.2 KiB
Objective-C
// 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 "FIRError.h"
|
|
#import "FIRFunctions+Internal.h"
|
|
#import "FIRFunctions.h"
|
|
#import "FIRHTTPSCallable.h"
|
|
#import "FUNFakeApp.h"
|
|
#import "FUNFakeInstanceID.h"
|
|
|
|
@interface FIRIntegrationTests : XCTestCase {
|
|
FIRFunctions *_functions;
|
|
}
|
|
@end
|
|
|
|
@implementation FIRIntegrationTests
|
|
|
|
- (void)setUp {
|
|
[super setUp];
|
|
id app = [[FUNFakeApp alloc] initWithProjectID:@"functions-integration-test"];
|
|
_functions = [FIRFunctions functionsForApp:app];
|
|
[_functions useLocalhost];
|
|
}
|
|
|
|
- (void)tearDown {
|
|
[super tearDown];
|
|
}
|
|
|
|
- (void)testData {
|
|
NSDictionary *data = @{
|
|
@"bool" : @YES,
|
|
@"int" : @2,
|
|
@"long" : @3L,
|
|
@"string" : @"four",
|
|
@"array" : @[ @5, @6 ],
|
|
@"null" : [NSNull null],
|
|
};
|
|
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"dataTest"];
|
|
[function callWithObject:data
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNil(error);
|
|
XCTAssertEqualObjects(@"stub response", result.data[@"message"]);
|
|
XCTAssertEqualObjects(@42, result.data[@"code"]);
|
|
XCTAssertEqualObjects(@420L, result.data[@"long"]);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testScalar {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"scalarTest"];
|
|
[function callWithObject:@17
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNil(error);
|
|
XCTAssertEqualObjects(@76, result.data);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testToken {
|
|
// Recreate _functions with a token.
|
|
id app = [[FUNFakeApp alloc] initWithProjectID:@"functions-integration-test" token:@"token"];
|
|
FIRFunctions *functions = [FIRFunctions functionsForApp:app];
|
|
[functions useLocalhost];
|
|
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [functions HTTPSCallableWithName:@"tokenTest"];
|
|
[function callWithObject:@{}
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNil(error);
|
|
XCTAssertEqualObjects(@{}, result.data);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testInstanceID {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"instanceIdTest"];
|
|
[function callWithObject:@{}
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNil(error);
|
|
XCTAssertEqualObjects(@{}, result.data);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testNull {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"nullTest"];
|
|
[function callWithObject:[NSNull null]
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertEqualObjects([NSNull null], result.data);
|
|
XCTAssertNil(error);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
|
|
// Test the version with no arguments.
|
|
[function
|
|
callWithCompletion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertEqualObjects([NSNull null], result.data);
|
|
XCTAssertNil(error);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testMissingResult {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"missingResultTest"];
|
|
[function
|
|
callWithCompletion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNotNil(error);
|
|
XCTAssertEqual(FIRFunctionsErrorCodeInternal, error.code);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testUnhandledError {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"unhandledErrorTest"];
|
|
[function callWithObject:@{}
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNotNil(error);
|
|
XCTAssertEqual(FIRFunctionsErrorCodeInternal, error.code);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testUnknownError {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"unknownErrorTest"];
|
|
[function callWithObject:@{}
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNotNil(error);
|
|
XCTAssertEqual(FIRFunctionsErrorCodeInternal, error.code);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testExplicitError {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"explicitErrorTest"];
|
|
[function callWithObject:@{}
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNotNil(error);
|
|
XCTAssertEqual(FIRFunctionsErrorCodeOutOfRange, error.code);
|
|
XCTAssertEqualObjects(@"explicit nope", error.userInfo[NSLocalizedDescriptionKey]);
|
|
NSDictionary *expectedDetails = @{ @"start" : @10, @"end" : @20, @"long" : @30L };
|
|
XCTAssertEqualObjects(expectedDetails, error.userInfo[FIRFunctionsErrorDetailsKey]);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
- (void)testHttpError {
|
|
XCTestExpectation *expectation = [[XCTestExpectation alloc] init];
|
|
FIRHTTPSCallable *function = [_functions HTTPSCallableWithName:@"httpErrorTest"];
|
|
[function callWithObject:@{}
|
|
completion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) {
|
|
XCTAssertNotNil(error);
|
|
XCTAssertEqual(FIRFunctionsErrorCodeInvalidArgument, error.code);
|
|
[expectation fulfill];
|
|
}];
|
|
[self waitForExpectations:@[ expectation ] timeout:10];
|
|
}
|
|
|
|
@end
|