FIROAuthProviderTests.m 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /*
  2. * Copyright 2017 Google
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #import <TargetConditionals.h>
  17. #if TARGET_OS_IOS
  18. #import <XCTest/XCTest.h>
  19. @import FirebaseAuth;
  20. @import FirebaseCore;
  21. /** @var kFakeAuthorizedDomain
  22. @brief A fake authorized domain for the app.
  23. */
  24. static NSString *const kFakeAuthorizedDomain = @"test.firebaseapp.com";
  25. /** @var kFakeBundleID
  26. @brief A fake bundle ID.
  27. */
  28. static NSString *const kFakeBundleID = @"com.firebaseapp.example";
  29. /** @var kFakeAccessToken
  30. @brief A fake access token for testing.
  31. */
  32. static NSString *const kFakeAccessToken = @"fakeAccessToken";
  33. /** @var kFakeIDToken
  34. @brief A fake ID token for testing.
  35. */
  36. static NSString *const kFakeIDToken = @"fakeIDToken";
  37. /** @var kFakeProviderID
  38. @brief A fake provider ID for testing.
  39. */
  40. static NSString *const kFakeProviderID = @"fakeProviderID";
  41. /** @var kFakeGivenName
  42. @brief A fake given name for testing.
  43. */
  44. static NSString *const kFakeGivenName = @"fakeGivenName";
  45. /** @var kFakeFamilyName
  46. @brief A fake family name for testing.
  47. */
  48. static NSString *const kFakeFamilyName = @"fakeFamilyName";
  49. /** @var kFakeAPIKey
  50. @brief A fake API key.
  51. */
  52. static NSString *const kFakeAPIKey = @"asdfghjkl";
  53. /** @var kFakeEmulatorHost
  54. @brief A fake emulator host.
  55. */
  56. static NSString *const kFakeEmulatorHost = @"emulatorhost";
  57. /** @var kFakeEmulatorPort
  58. @brief A fake emulator port.
  59. */
  60. static NSString *const kFakeEmulatorPort = @"12345";
  61. /** @var kFakeClientID
  62. @brief A fake client ID.
  63. */
  64. static NSString *const kFakeClientID = @"123456.apps.googleusercontent.com";
  65. /** @var kFakeReverseClientID
  66. @brief The dot-reversed version of the fake client ID.
  67. */
  68. static NSString *const kFakeReverseClientID = @"com.googleusercontent.apps.123456";
  69. /** @var kFakeFirebaseAppID
  70. @brief A fake Firebase app ID.
  71. */
  72. static NSString *const kFakeFirebaseAppID = @"1:123456789:ios:123abc456def";
  73. /** @var kFakeEncodedFirebaseAppID
  74. @brief A fake encoded Firebase app ID to be used as a custom URL scheme.
  75. */
  76. static NSString *const kFakeEncodedFirebaseAppID = @"app-1-123456789-ios-123abc456def";
  77. /** @var kFakeTenantID
  78. @brief A fake tenant ID.
  79. */
  80. static NSString *const kFakeTenantID = @"tenantID";
  81. /** @var kFakeOAuthResponseURL
  82. @brief A fake OAuth response URL used in test.
  83. */
  84. static NSString *const kFakeOAuthResponseURL = @"fakeOAuthResponseURL";
  85. /** @var kFakeRedirectURLResponseURL
  86. @brief A fake callback URL (minus the scheme) containing a fake response URL.
  87. */
  88. @interface FIROAuthProviderTests : XCTestCase
  89. @end
  90. @implementation FIROAuthProviderTests
  91. /** @fn testObtainingOAuthCredentialNoIDToken
  92. @brief Tests the correct creation of an OAuthCredential without an IDToken.
  93. */
  94. - (void)testObtainingOAuthCredentialNoIDToken {
  95. FIRAuthCredential *credential = [FIROAuthProvider credentialWithProviderID:kFakeProviderID
  96. accessToken:kFakeAccessToken];
  97. XCTAssertTrue([credential isKindOfClass:[FIROAuthCredential class]]);
  98. FIROAuthCredential *OAuthCredential = (FIROAuthCredential *)credential;
  99. XCTAssertEqualObjects(OAuthCredential.accessToken, kFakeAccessToken);
  100. XCTAssertEqualObjects(OAuthCredential.provider, kFakeProviderID);
  101. XCTAssertNil(OAuthCredential.IDToken);
  102. }
  103. /** @fn testObtainingOAuthCredentialWithFullName
  104. @brief Tests the correct creation of an OAuthCredential with a fullName.
  105. */
  106. - (void)testObtainingOAuthCredentialWithFullName {
  107. NSPersonNameComponents *fullName = [[NSPersonNameComponents alloc] init];
  108. fullName.givenName = kFakeGivenName;
  109. fullName.familyName = kFakeFamilyName;
  110. FIRAuthCredential *credential = [FIROAuthProvider appleCredentialWithIDToken:kFakeIDToken
  111. rawNonce:nil
  112. fullName:fullName];
  113. XCTAssertTrue([credential isKindOfClass:[FIROAuthCredential class]]);
  114. FIROAuthCredential *OAuthCredential = (FIROAuthCredential *)credential;
  115. XCTAssertEqualObjects(OAuthCredential.provider, @"apple.com");
  116. XCTAssertEqualObjects(OAuthCredential.IDToken, kFakeIDToken);
  117. XCTAssertNil(OAuthCredential.accessToken);
  118. }
  119. /** @fn testObtainingOAuthCredentialWithIDToken
  120. @brief Tests the correct creation of an OAuthCredential with an IDToken
  121. */
  122. - (void)testObtainingOAuthCredentialWithIDToken {
  123. FIRAuthCredential *credential = [FIROAuthProvider credentialWithProviderID:kFakeProviderID
  124. IDToken:kFakeIDToken
  125. accessToken:kFakeAccessToken];
  126. XCTAssertTrue([credential isKindOfClass:[FIROAuthCredential class]]);
  127. FIROAuthCredential *OAuthCredential = (FIROAuthCredential *)credential;
  128. XCTAssertEqualObjects(OAuthCredential.accessToken, kFakeAccessToken);
  129. XCTAssertEqualObjects(OAuthCredential.provider, kFakeProviderID);
  130. XCTAssertEqualObjects(OAuthCredential.IDToken, kFakeIDToken);
  131. }
  132. @end
  133. #endif // TARGET_OS_IOS