FIRRemoteConfigTests.m 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. #import <XCTest/XCTest.h>
  2. #import "FirebaseRemoteConfig/Sources/Public/FirebaseRemoteConfig/FIRRemoteConfig.h"
  3. #import "FirebaseCore/Sources/Public/FirebaseCore/FIRApp.h"
  4. @import FirebaseABTesting;
  5. @interface FIRRemoteConfigTests : XCTestCase
  6. @property (nonatomic, strong) FIRApp *mockApp;
  7. @property (nonatomic, strong) FIRRemoteConfig *remoteConfig;
  8. @end
  9. @implementation FIRRemoteConfigTests
  10. - (void)setUp {
  11. self.mockApp = OCMClassMock([FIRApp class]);
  12. OCMStub([self.mockApp isDefaultAppConfigured]).andReturn(YES);
  13. self.remoteConfig = [FIRRemoteConfig remoteConfigWithApp:self.mockApp];
  14. }
  15. - (FIROptions *)firstAppOptions {
  16. FIROptions *options = [[FIROptions alloc] initWithGoogleAppID:@"1:123:ios:123abc"
  17. GCMSenderID:@"123"];
  18. options.APIKey = @"AIzaSy-ApiKeyWithValidFormat_0123456789";
  19. options.projectID = @"project-id";
  20. return options;
  21. }
  22. - (void)testPublicAPI {
  23. [FIRRemoteConfig remoteConfig];
  24. [FIRRemoteConfig remoteConfigWithApp:self.mockApp];
  25. [FIRRemoteConfig remoteConfigWithFIRNamespace:@"namespace"];
  26. [FIRRemoteConfig remoteConfigWithFIRNamespace:@"namespace" app:self.mockApp];
  27. [self testAllMethods];
  28. }
  29. - (void)testAllMethods{
  30. FIRRemoteConfig *config = [FIRRemoteConfig remoteConfig];
  31. FIRRemoteConfigSettings *settings = [[FIRRemoteConfigSettings alloc] init];
  32. config.configSettings = settings;
  33. [config fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError * _Nullable error) {}];
  34. [config fetchWithExpirationDuration:43200 completionHandler:nil];
  35. [config fetchAndActivateWithCompletionHandler:^(FIRRemoteConfigFetchAndActivateStatus status, NSError * _Nullable error) {}];
  36. [config activateWithCompletion:^(BOOL changed, NSError *_Nullable error){
  37. }];
  38. FIRRemoteConfigValue *value = config[@"key"];
  39. __unused NSString *strValue = value.stringValue;
  40. __unused NSNumber *numValue = value.numberValue;
  41. __unused NSData *dataValue = value.dataValue;
  42. __unused BOOL boolValue = value.boolValue;
  43. __unused id jsonValue = value.JSONValue;
  44. FIRRemoteConfigValue *sourceValue = [config configValueForKey:@"key" source:FIRRemoteConfigSourceRemote];
  45. FIRRemoteConfigValue *sourceValueDefault = [config configValueForKey:@"key" source:FIRRemoteConfigSourceDefault];
  46. FIRRemoteConfigValue *sourceValueStatic = [config configValueForKey:@"key" source:FIRRemoteConfigSourceStatic];
  47. [_configInstances[0] objectForKeyedSubscript:@"key"];
  48. [_configInstances[0] configValueForKey:@"key"];
  49. [_configInstances[0] configValueForKey:@"key" source:FIRRemoteConfigSourceRemote];
  50. [_configInstances[0] allKeysFromSource:FIRRemoteConfigSourceRemote];
  51. [_configInstances[0] keysWithPrefix:@"prefix"];
  52. [_configInstances[0] defaultValueForKey:@"key"];
  53. [_configInstances[0] setDefaults:@{}];
  54. [_configInstances[0] setDefaultsFromPlistFileName:@"Defaults-testInfo"];
  55. [_configInstances[0] configSettings];
  56. [_configInstances[0] setCustomSignals:@{} withCompletion:nil];
  57. [_configInstances[0] addOnConfigUpdateListener:nil];
  58. [_configInstances[0] addRemoteConfigInteropSubscriber:nil];
  59. // Enums
  60. FIRRemoteConfigFetchStatus status = FIRRemoteConfigFetchStatusFailure;
  61. FIRRemoteConfigFetchAndActivateStatus statusActivate = FIRRemoteConfigFetchAndActivateStatusError;
  62. FIRRemoteConfigSource source = FIRRemoteConfigSourceDefault;
  63. FIRRemoteConfigError errorCode = FIRRemoteConfigErrorUnknown;
  64. FIRRemoteConfigError errorCodeUpdate = FIRRemoteConfigUpdateErrorNotFetched;
  65. FIRRemoteConfigError errorCodeCustomSignals = FIRRemoteConfigCustomSignalsErrorUnknown;
  66. // Enums
  67. FIRRemoteConfigFetchStatus fetchStatus = FIRRemoteConfigFetchStatusFailure;
  68. FIRRemoteConfigFetchAndActivateStatus fetchAndActivateStatus =
  69. FIRRemoteConfigFetchAndActivateStatusError;
  70. FIRRemoteConfigSource remoteSource = FIRRemoteConfigSourceRemote;
  71. //Custom Signals
  72. FIRRemoteConfigCustomSignalsError signalCode = FIRRemoteConfigCustomSignalsErrorInvalidValueType;
  73. signalCode = FIRRemoteConfigCustomSignalsErrorLimitExceeded;
  74. FIRRemoteConfigCustomSignalsError signalCodeUnknown = FIRRemoteConfigCustomSignalsErrorUnknown;
  75. NSString *s = FIRRemoteConfigCustomSignalsErrorDomain;
  76. [_configInstances[0] setCustomSignals:@{@"signal" : @1}];
  77. [_configInstances[0] setCustomSignals:@{@"signal" : @1}];
  78. NSDictionary<NSString *, NSObject *> *customSignals = @{
  79. @"signal1":@"stringValue",
  80. @"signal2":@1,
  81. @"signal3":@"stringValue2",
  82. };
  83. [_configInstances[0] setCustomSignals:customSignals withCompletion:nil];
  84. NSString *string = FIRRemoteConfigThrottledEndTimeInSecondsKey;
  85. string = FIRRemoteConfigErrorDomain;
  86. string = FIRRemoteConfigCustomSignalsErrorDomain;
  87. string = FIRRemoteConfigUpdateErrorDomain;
  88. NSString *const string2 = @"error_throttled_end_time_seconds";
  89. NSString *const string3 = @"error_throttled_end_time_seconds_key";
  90. }
  91. - (void)testTypes{
  92. //typedefs
  93. FIRRemoteConfigFetchCompletion completion;
  94. FIRRemoteConfigActivateCompletion completion2;
  95. FIRRemoteConfigInitializationCompletion completion3;
  96. FIRRemoteConfigFetchAndActivateCompletion completion4;
  97. // Enums
  98. FIRRemoteConfigFetchStatus fetchStatus;
  99. FIRRemoteConfigFetchAndActivateStatus fetchAndActivateStatus;
  100. FIRRemoteConfigSource source = FIRRemoteConfigSourceDefault;
  101. source = FIRRemoteConfigSourceRemote;
  102. source = FIRRemoteConfigSourceStatic;
  103. FIRRemoteConfigError error;
  104. FIRRemoteConfigError errorCode = FIRRemoteConfigErrorUnknown;
  105. errorCode = FIRRemoteConfigErrorThrottled;
  106. errorCode = FIRRemoteConfigErrorInternalError;
  107. FIRRemoteConfigUpdateError errorCodeUpdate = FIRRemoteConfigUpdateErrorNotFetched;
  108. errorCodeUpdate = FIRRemoteConfigUpdateErrorStreamError;
  109. errorCodeUpdate = FIRRemoteConfigUpdateErrorMessageInvalid;
  110. errorCodeUpdate = FIRRemoteConfigUpdateErrorUnavailable;
  111. FIRRemoteConfigCustomSignalsError signalCode = FIRRemoteConfigCustomSignalsErrorInvalidValueType;
  112. signalCode = FIRRemoteConfigCustomSignalsErrorLimitExceeded;
  113. signalCode = FIRRemoteConfigCustomSignalsErrorUnknown;
  114. // FIRRemoteConfigFetchStatus
  115. FIRRemoteConfigFetchStatus status;
  116. status = FIRRemoteConfigFetchStatusFailure;
  117. status = FIRRemoteConfigFetchStatusNoFetchYet;
  118. status = FIRRemoteConfigFetchStatusSuccess;
  119. status = FIRRemoteConfigFetchStatusThrottled;
  120. // FIRRemoteConfigFetchAndActivateStatus
  121. FIRRemoteConfigFetchAndActivateStatus fetchAndActivateStatus =
  122. FIRRemoteConfigFetchAndActivateStatusError;
  123. fetchAndActivateStatus = FIRRemoteConfigFetchAndActivateStatusSuccessFetchedFromRemote;
  124. fetchAndActivateStatus = FIRRemoteConfigFetchAndActivateStatusSuccessUsingPreFetchedData;
  125. fetchAndActivateStatus = FIRRemoteConfigFetchAndActivateStatusError;
  126. //FIRRemoteConfigSource
  127. FIRRemoteConfigSource remoteSource;
  128. remoteSource = FIRRemoteConfigSourceDefault;
  129. remoteSource = FIRRemoteConfigSourceRemote;
  130. remoteSource = FIRRemoteConfigSourceStatic;
  131. //FIRRemoteConfigError
  132. FIRRemoteConfigError errorCode2 = FIRRemoteConfigErrorUnknown;
  133. errorCode2 = FIRRemoteConfigErrorThrottled;
  134. errorCode2 = FIRRemoteConfigErrorInternalError;
  135. // FIRRemoteConfigFetchCompletion
  136. FIRRemoteConfigFetchCompletion fetchCompletion;
  137. // FIRRemoteConfigActivateCompletion
  138. FIRRemoteConfigActivateCompletion activateCompletion;
  139. // FIRRemoteConfigInitializationCompletion
  140. FIRRemoteConfigInitializationCompletion initializationCompletion;
  141. //FIRRemoteConfigFetchAndActivateCompletion
  142. FIRRemoteConfigFetchAndActivateCompletion fetchAndActivateCompletion;
  143. //FIRRemoteConfigValue
  144. FIRRemoteConfigValue *value;
  145. NSString *string = value.stringValue;
  146. NSNumber *number = value.numberValue;
  147. NSData *data = value.dataValue;
  148. BOOL boolValue = value.boolValue;
  149. id json = value.JSONValue;
  150. FIRRemoteConfigSource source = value.source;
  151. //FIRRemoteConfigUpdate
  152. FIRRemoteConfigUpdate *update;
  153. // FIRRemoteConfigSettings
  154. FIRRemoteConfigSettings *setings = [[FIRRemoteConfigSettings alloc] init];
  155. //NSNotificationName
  156. NSNotificationName notificationName;
  157. notificationName = FIRRemoteConfigActivateNotification;
  158. // NSNotificationName
  159. NSNotificationName name;
  160. name = FIRRolloutsStateDidChangeNotificationName;
  161. // FIRRemoteConfigThrottledEndTimeInSecondsKey
  162. NSString *const string2 = @"error_throttled_end_time_seconds";
  163. //FIRRemoteConfigUpdateError
  164. NSString *const string3 = @"error_throttled_end_time_seconds_key";
  165. //NS_SWIFT_NAME
  166. NSString *name2 = FIRNamespaceGoogleMobilePlatform;
  167. NSString *name3 = FIRRemoteConfigThrottledEndTimeInSecondsKey;
  168. NSString *name4 = FIRRemoteConfigErrorDomain;
  169. NSString *name5 = FIRRemoteConfigUpdateErrorDomain;
  170. NSString *name6 = FIRRemoteConfigCustomSignalsErrorDomain;
  171. NSString *name7 = FIRRemoteConfigUpdateErrorDomain;
  172. //FIRRemoteConfigFetchStatus
  173. FIRRemoteConfigFetchStatus fetchStatus4;
  174. }
  175. @end