mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-07-30 15:10:56 +00:00

git-subtree-dir: submodules/HockeySDK-iOS git-subtree-mainline: 085acd26c4432939403765234266e3c1be0f3dd9 git-subtree-split: c7d0c7026303253e2ac576c02655691e5d314fe2
76 lines
3.0 KiB
Objective-C
76 lines
3.0 KiB
Objective-C
#import <XCTest/XCTest.h>
|
|
#import <OCMock/OCMock.h>
|
|
|
|
#import "BITUpdateManagerPrivate.h"
|
|
#import "BITHockeyBaseManagerPrivate.h"
|
|
|
|
@interface BITUpdateManagerTests : XCTestCase
|
|
|
|
@property (nonatomic, strong) BITUpdateManager *sut;
|
|
|
|
@end
|
|
|
|
@implementation BITUpdateManagerTests
|
|
|
|
- (void)setUp {
|
|
[super setUp];
|
|
self.sut = [[BITUpdateManager alloc] initWithAppIdentifier:@"testIdentifier" appEnvironment:BITEnvironmentOther];
|
|
}
|
|
|
|
- (void)testRequestForUpdateCheck {
|
|
// Given
|
|
id mainBundleMock = OCMPartialMock([NSBundle mainBundle]);
|
|
OCMStub([mainBundleMock objectForInfoDictionaryKey:@"CFBundleVersion"]).andReturn(@"123 {Something, c0f42b3}");
|
|
|
|
id mockBundle = OCMClassMock(NSBundle.class);
|
|
OCMStub([mockBundle mainBundle]).andReturn(mainBundleMock);
|
|
|
|
NSString *testInstallationIdentificationType = @"SomeInstallationIdentificationType";
|
|
NSString *testInstallationIdentification = @"SpecificInstallationIdentification";
|
|
self.sut.installationIdentificationType = testInstallationIdentificationType;
|
|
self.sut.installationIdentification = testInstallationIdentification;
|
|
|
|
|
|
NSURLRequest *request = [self.sut requestForUpdateCheck];
|
|
|
|
XCTAssertTrue(self.sut.sendUsageData);
|
|
|
|
// Test HTTP header
|
|
XCTAssertEqualObjects(request.HTTPMethod, @"GET");
|
|
XCTAssertEqualObjects([request valueForHTTPHeaderField:@"User-Agent"], @"Hockey/iOS");
|
|
XCTAssertEqualObjects([request valueForHTTPHeaderField:@"Accept-Encoding"], @"gzip");
|
|
|
|
XCTAssertEqual(request.cachePolicy, NSURLRequestReloadIgnoringCacheData);
|
|
XCTAssertEqual(request.timeoutInterval, 10.0);
|
|
|
|
// Test URL parts
|
|
XCTAssertEqualObjects(request.URL.host, @"sdk.hockeyapp.net");
|
|
XCTAssertEqualObjects(request.URL.path, @"/api/2/apps/testIdentifier");
|
|
|
|
NSString *identificationString = [NSString stringWithFormat:@"%@=%@", testInstallationIdentificationType, testInstallationIdentification];
|
|
XCTAssertTrue([request.URL.query containsString:identificationString]);
|
|
|
|
// Test identification and usage not present
|
|
self.sut.installationIdentificationType = nil;
|
|
self.sut.installationIdentification = nil;
|
|
self.sut.sendUsageData = NO;
|
|
|
|
request = [self.sut requestForUpdateCheck];
|
|
|
|
XCTAssertFalse([request.URL.query containsString:@"app_version="]);
|
|
XCTAssertFalse([request.URL.query containsString:@"os=iOS"]);
|
|
XCTAssertFalse([request.URL.query containsString:@"os_version="]);
|
|
XCTAssertFalse([request.URL.query containsString:@"device="]);
|
|
XCTAssertFalse([request.URL.query containsString:@"lang="]);
|
|
XCTAssertFalse([request.URL.query containsString:@"first_start_at="]);
|
|
XCTAssertFalse([request.URL.query containsString:@"usage_time="]);
|
|
XCTAssertFalse([request.URL.query containsString:identificationString]);
|
|
|
|
// Test URL encoding
|
|
NSString *requestUrlString = request.URL.absoluteString;
|
|
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@" {}"];
|
|
XCTAssertEqual([requestUrlString rangeOfCharacterFromSet:characterSet].location, NSNotFound, "URL should not contain unencoded characters");
|
|
}
|
|
|
|
@end
|