@@ -60,7 +60,8 @@ - (void)setUp {
60
60
XCTAssertTrue (self.testServer .isRunning );
61
61
62
62
self.uploader = [[GDTCCTUploader alloc ] init ];
63
- self.uploader .testServerURL = [self .testServer.serverURL URLByAppendingPathComponent: @" logBatch" ];
63
+ GDTCCTUploader.testServerURL =
64
+ [self .testServer.serverURL URLByAppendingPathComponent: @" logBatch" ];
64
65
}
65
66
66
67
- (void )tearDown {
@@ -72,6 +73,17 @@ - (void)tearDown {
72
73
73
74
#pragma mark - Upload flow tests
74
75
76
+ - (void )testUploadURLsAreCorrect {
77
+ GDTCCTUploader.testServerURL = nil ;
78
+ NSDictionary <NSNumber *, NSURL *> *URLs = GDTCCTUploader.uploadURLs ;
79
+ XCTAssertEqualObjects (URLs[@(kGDTCORTargetCCT )], [self serverURLForTarget: kGDTCORTargetCCT ]);
80
+ XCTAssertEqualObjects (URLs[@(kGDTCORTargetFLL )], [self serverURLForTarget: kGDTCORTargetFLL ]);
81
+ XCTAssertEqualObjects (URLs[@(kGDTCORTargetCSH )], [self serverURLForTarget: kGDTCORTargetCSH ]);
82
+ XCTAssertEqualObjects (URLs[@(kGDTCORTargetINT )], [self serverURLForTarget: kGDTCORTargetINT ]);
83
+ GDTCCTUploader.testServerURL =
84
+ [self .testServer.serverURL URLByAppendingPathComponent: @" logBatch" ];
85
+ }
86
+
75
87
- (void )testUploadTargetWhenThereAreEventsToUpload {
76
88
// 0. Generate test events.
77
89
id <GDTCORStorageProtocol> storage = GDTCORStorageInstanceForTarget (kGDTCORTargetTest );
@@ -283,7 +295,8 @@ - (void)testUploadTarget_WhenThereAreBothStoredBatchAndEvents_ThenRemoveBatchAnd
283
295
}
284
296
285
297
- (void )testUploadTarget_WhenThereAreNoEventsFirstThenEventsAdded_ThenUploadNewEvent {
286
- self.uploader .testServerURL = [self .testServer.serverURL URLByAppendingPathComponent: @" logBatch" ];
298
+ GDTCCTUploader.testServerURL =
299
+ [self .testServer.serverURL URLByAppendingPathComponent: @" logBatch" ];
287
300
288
301
// 1. Test stored batch upload.
289
302
// 1.1. Set up expectations.
@@ -710,4 +723,76 @@ - (void)assertUploadTargetRespectsNextRequestWaitTime:(NSTimeInterval)nextReques
710
723
[self waitForUploadOperationsToFinish: self .uploader];
711
724
}
712
725
726
+ - (nullable NSURL *)serverURLForTarget : (GDTCORTarget)target {
727
+ // These strings should be interleaved to construct the real URL. This is just to (hopefully)
728
+ // fool github URL scanning bots.
729
+ static NSURL *CCTServerURL;
730
+ static NSString *const kINTServerURL =
731
+ @" https://dummyapiverylong-dummy.dummy.com/dummy/api/very/long" ;
732
+ static dispatch_once_t CCTOnceToken;
733
+ dispatch_once (&CCTOnceToken, ^{
734
+ const char *p1 = " hts/frbslgiggolai.o/0clgbth" ;
735
+ const char *p2 = " tp:/ieaeogn.ogepscmvc/o/ac" ;
736
+ const char URL[54 ] = {p1[0 ], p2[0 ], p1[1 ], p2[1 ], p1[2 ], p2[2 ], p1[3 ], p2[3 ], p1[4 ],
737
+ p2[4 ], p1[5 ], p2[5 ], p1[6 ], p2[6 ], p1[7 ], p2[7 ], p1[8 ], p2[8 ],
738
+ p1[9 ], p2[9 ], p1[10 ], p2[10 ], p1[11 ], p2[11 ], p1[12 ], p2[12 ], p1[13 ],
739
+ p2[13 ], p1[14 ], p2[14 ], p1[15 ], p2[15 ], p1[16 ], p2[16 ], p1[17 ], p2[17 ],
740
+ p1[18 ], p2[18 ], p1[19 ], p2[19 ], p1[20 ], p2[20 ], p1[21 ], p2[21 ], p1[22 ],
741
+ p2[22 ], p1[23 ], p2[23 ], p1[24 ], p2[24 ], p1[25 ], p2[25 ], p1[26 ], ' \0 ' };
742
+ CCTServerURL = [NSURL URLWithString: [NSString stringWithUTF8String: URL]];
743
+ });
744
+
745
+ static NSURL *FLLServerURL;
746
+ static dispatch_once_t FLLOnceToken;
747
+ dispatch_once (&FLLOnceToken, ^{
748
+ const char *p1 = " hts/frbslgigp.ogepscmv/ieo/eaybtho" ;
749
+ const char *p2 = " tp:/ieaeogn-agolai.o/1frlglgc/aclg" ;
750
+ const char URL[69 ] = {p1[0 ], p2[0 ], p1[1 ], p2[1 ], p1[2 ], p2[2 ], p1[3 ], p2[3 ], p1[4 ],
751
+ p2[4 ], p1[5 ], p2[5 ], p1[6 ], p2[6 ], p1[7 ], p2[7 ], p1[8 ], p2[8 ],
752
+ p1[9 ], p2[9 ], p1[10 ], p2[10 ], p1[11 ], p2[11 ], p1[12 ], p2[12 ], p1[13 ],
753
+ p2[13 ], p1[14 ], p2[14 ], p1[15 ], p2[15 ], p1[16 ], p2[16 ], p1[17 ], p2[17 ],
754
+ p1[18 ], p2[18 ], p1[19 ], p2[19 ], p1[20 ], p2[20 ], p1[21 ], p2[21 ], p1[22 ],
755
+ p2[22 ], p1[23 ], p2[23 ], p1[24 ], p2[24 ], p1[25 ], p2[25 ], p1[26 ], p2[26 ],
756
+ p1[27 ], p2[27 ], p1[28 ], p2[28 ], p1[29 ], p2[29 ], p1[30 ], p2[30 ], p1[31 ],
757
+ p2[31 ], p1[32 ], p2[32 ], p1[33 ], p2[33 ], ' \0 ' };
758
+ FLLServerURL = [NSURL URLWithString: [NSString stringWithUTF8String: URL]];
759
+ });
760
+
761
+ static NSURL *CSHServerURL;
762
+ static dispatch_once_t CSHOnceToken;
763
+ dispatch_once (&CSHOnceToken, ^{
764
+ // These strings should be interleaved to construct the real URL. This is just to (hopefully)
765
+ // fool github URL scanning bots.
766
+ const char *p1 = " hts/cahyiseot-agolai.o/1frlglgc/aclg" ;
767
+ const char *p2 = " tp:/rsltcrprsp.ogepscmv/ieo/eaybtho" ;
768
+ const char URL[72 ] = {p1[0 ], p2[0 ], p1[1 ], p2[1 ], p1[2 ], p2[2 ], p1[3 ], p2[3 ], p1[4 ],
769
+ p2[4 ], p1[5 ], p2[5 ], p1[6 ], p2[6 ], p1[7 ], p2[7 ], p1[8 ], p2[8 ],
770
+ p1[9 ], p2[9 ], p1[10 ], p2[10 ], p1[11 ], p2[11 ], p1[12 ], p2[12 ], p1[13 ],
771
+ p2[13 ], p1[14 ], p2[14 ], p1[15 ], p2[15 ], p1[16 ], p2[16 ], p1[17 ], p2[17 ],
772
+ p1[18 ], p2[18 ], p1[19 ], p2[19 ], p1[20 ], p2[20 ], p1[21 ], p2[21 ], p1[22 ],
773
+ p2[22 ], p1[23 ], p2[23 ], p1[24 ], p2[24 ], p1[25 ], p2[25 ], p1[26 ], p2[26 ],
774
+ p1[27 ], p2[27 ], p1[28 ], p2[28 ], p1[29 ], p2[29 ], p1[30 ], p2[30 ], p1[31 ],
775
+ p2[31 ], p1[32 ], p2[32 ], p1[33 ], p2[33 ], p1[34 ], p2[34 ], p1[35 ], ' \0 ' };
776
+ CSHServerURL = [NSURL URLWithString: [NSString stringWithUTF8String: URL]];
777
+ });
778
+
779
+ switch (target) {
780
+ case kGDTCORTargetCCT :
781
+ return CCTServerURL;
782
+
783
+ case kGDTCORTargetFLL :
784
+ return FLLServerURL;
785
+
786
+ case kGDTCORTargetCSH :
787
+ return CSHServerURL;
788
+
789
+ case kGDTCORTargetINT :
790
+ return [NSURL URLWithString: kINTServerURL ];
791
+
792
+ default :
793
+ return nil ;
794
+ break ;
795
+ }
796
+ }
797
+
713
798
@end
0 commit comments