Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove deprecated API in FDLURLComponents. #2768

Merged
merged 2 commits into from Apr 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
82 changes: 4 additions & 78 deletions Example/DynamicLinks/Tests/FDLURLComponentsTests.m
Expand Up @@ -528,7 +528,7 @@ - (void)testFDLComponentsNotNilOnDomainWithHTTPScheme {
NSURL *link = [NSURL URLWithString:linkString];

FIRDynamicLinkComponents *components =
[FIRDynamicLinkComponents componentsWithLink:link domain:@"http://xyz.page.link"];
[FIRDynamicLinkComponents componentsWithLink:link domainURIPrefix:@"https://xyz.page.link"];

XCTAssertNotNil(components);
}
Expand All @@ -538,7 +538,7 @@ - (void)testFDLComponentsNotNilOnDomainWithHTTPSScheme {
NSURL *link = [NSURL URLWithString:linkString];

FIRDynamicLinkComponents *components =
[FIRDynamicLinkComponents componentsWithLink:link domain:@"https://xyz.page.link"];
[FIRDynamicLinkComponents componentsWithLink:link domainURIPrefix:@"https://xyz.page.link"];

XCTAssertNotNil(components);
}
Expand All @@ -549,10 +549,9 @@ - (void)testFDLComponentsFailsOnMalformedDomain {

FIRDynamicLinkComponents *components =
[FIRDynamicLinkComponents componentsWithLink:link
domain:@"this is invalid domain URI Prefix"];
domainURIPrefix:@"this is invalid domain URI Prefix"];

XCTAssertNotNil(components);
XCTAssertNil(components.url);
XCTAssertNil(components);
}

- (void)testFDLComponentsCreatesFullLinkCorrectly {
Expand Down Expand Up @@ -708,79 +707,6 @@ - (void)testShortenURL {
[componentsClassMock stopMocking];
}

- (void)testDeprecatedMethodComponentsWithLinkForDomain {
NSString *shortURLString = @"https://xyz.page.link/abcd";

// Mock key provider
id keyProviderClassMock = OCMClassMock([FIRDynamicLinkComponentsKeyProvider class]);
[[[keyProviderClassMock expect] andReturn:@"fake-api-key"] APIKey];

id componentsClassMock = OCMClassMock([FIRDynamicLinkComponents class]);
[[componentsClassMock expect]
sendHTTPRequest:OCMOCK_ANY
completion:[OCMArg checkWithBlock:^BOOL(id obj) {
void (^completion)(NSData *_Nullable, NSError *_Nullable) = obj;
NSDictionary *JSON = @{@"shortLink" : shortURLString};
NSData *JSONData = [NSJSONSerialization dataWithJSONObject:JSON options:0 error:0];
completion(JSONData, nil);
return YES;
}]];

XCTestExpectation *expectation = [self expectationWithDescription:@"completion called"];
NSURL *link = [NSURL URLWithString:@"https://google.com/abc"];
FIRDynamicLinkComponents *components =
[FIRDynamicLinkComponents componentsWithLink:link domain:@"xyz.page.link"];
[components
shortenWithCompletion:^(NSURL *_Nullable shortURL, NSArray<NSString *> *_Nullable warnings,
NSError *_Nullable error) {
XCTAssertEqualObjects(shortURL.absoluteString, shortURLString);
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:0.1 handler:nil];

[keyProviderClassMock verify];
[keyProviderClassMock stopMocking];
[componentsClassMock verify];
[componentsClassMock stopMocking];
}

- (void)testDeprecatedMethodComponentsWithLinkForDomainWithInvalidDomainScheme {
NSString *shortURLString = @"https://xyz.page.link/abcd";

// Mock key provider
id keyProviderClassMock = OCMClassMock([FIRDynamicLinkComponentsKeyProvider class]);
[[[keyProviderClassMock expect] andReturn:@"fake-api-key"] APIKey];

id componentsClassMock = OCMClassMock([FIRDynamicLinkComponents class]);
[[componentsClassMock expect]
sendHTTPRequest:OCMOCK_ANY
completion:[OCMArg checkWithBlock:^BOOL(id obj) {
void (^completion)(NSData *_Nullable, NSError *_Nullable) = obj;
NSDictionary *JSON = @{@"shortLink" : shortURLString};
NSData *JSONData = [NSJSONSerialization dataWithJSONObject:JSON options:0 error:0];
completion(JSONData, nil);
return YES;
}]];

XCTestExpectation *expectation = [self expectationWithDescription:@"completion called"];
NSURL *link = [NSURL URLWithString:@"https://google.com/abc"];
FIRDynamicLinkComponents *components =
[FIRDynamicLinkComponents componentsWithLink:link domain:@"http://xyz.page.link"];
XCTAssertNotNil(components);
[components
shortenWithCompletion:^(NSURL *_Nullable shortURL, NSArray<NSString *> *_Nullable warnings,
NSError *_Nullable error) {
XCTAssertEqualObjects(shortURL.absoluteString, shortURLString);
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:0.1 handler:nil];

[keyProviderClassMock verify];
[keyProviderClassMock stopMocking];
[componentsClassMock verify];
[componentsClassMock stopMocking];
}

- (void)testShortenURLReturnsErrorWhenAPIKeyMissing {
NSString *shortURLString = @"https://xyz.page.link/abcd";

Expand Down
32 changes: 0 additions & 32 deletions Firebase/DynamicLinks/Public/FDLURLComponents.h
Expand Up @@ -505,38 +505,6 @@ FIR_SWIFT_NAME(DynamicLinkComponents)
*/
@property(nonatomic, nullable, readonly) NSURL *url;

/**
* @method componentsWithLink:domain:
* @abstract Generates a Dynamic Link URL components object with the minimum necessary parameters
* set to generate a fully-functional Dynamic Link.
* @param link Deep link to be stored in created Dynamic link. This link also called "payload" of
* the Dynamic link.
* @param domain Domain of your App. This value must be equal to your assigned domain from Firebase
* Console. (e.g. xyz.page.link). Note that the domain scheme is required to be https and is
* assumed as such by this API.
*/
+ (instancetype)componentsWithLink:(NSURL *)link
domain:(NSString *)domain
NS_SWIFT_UNAVAILABLE("Use init(link:domain:)")DEPRECATED_MSG_ATTRIBUTE(
"This method is deprecated. Please use the new method with support for "
"domainURIPrefix- init(link:domainURIPrefix:).");

/**
* @method initWithLink:domain:
* @abstract Generates a Dynamic Link URL components object with the minimum necessary parameters
* set to generate a fully-functional Dynamic Link.
* @param link Deep link to be stored in created Dynamic link. This link also called "payload" of
* the Dynamic link.
* @param domain Domain of your App. This value must be equal to your assigned domain from Firebase
* Console. (e.g. xyz.page.link). Note that the domain scheme is required to be https and is
* assumed as such by this API.
*/
- (instancetype)initWithLink:(NSURL *)link
domain:(NSString *)domain
DEPRECATED_MSG_ATTRIBUTE(
"This method is deprecated. Please use the new method with support for "
"domainURIPrefix- init(link:domainURIPrefix:).");

/**
* @method componentsWithLink:domainURIPrefix:
* @abstract Generates a Dynamic Link URL components object with the minimum necessary parameters
Expand Down