AliyunOSSiOSTests/OSSUtilsTests.m (140 lines of code) (raw):
//
// OSSUtilsTests.m
// AliyunOSSiOSTests
//
// Created by huaixu on 2018/4/27.
// Copyright © 2018年 aliyun. All rights reserved.
//
#import <XCTest/XCTest.h>
#import <AliyunOSSiOS/OSSUtil.h>
#import <AliyunOSSiOS/OSSIPv6Adapter.h>
#import <AliyunOSSiOS/OSSServiceSignature.h>
#import <AliyunOSSiOS/NSData+OSS.h>
@interface OSSUtilsTests : XCTestCase
@end
@implementation OSSUtilsTests
- (void)setUp {
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testMIMEWithLowercaseExt {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
NSString *fileName = @"testMIME.mp4";
NSString *mime = [OSSUtil detemineMimeTypeForFilePath:fileName uploadName:nil];
XCTAssertTrue([mime isEqualToString:@"video/mp4"]);
}
- (void)testMIMEWithUppercaseExt {
NSString *fileName = @"testMIME.MP4";
NSString *mime = [OSSUtil detemineMimeTypeForFilePath:fileName uploadName:nil];
XCTAssertTrue([mime isEqualToString:@"video/mp4"]);
}
- (void)testForIpv4 {
OSSIPv6Adapter *adapter = [OSSIPv6Adapter getInstance];
BOOL isIPv4 = [adapter isIPv4Address: @"http://www.baidu.com"];
XCTAssertFalse(isIPv4);
isIPv4 = [adapter isIPv4Address: @"0:0:0:0:0:0:0:1"];
XCTAssertFalse(isIPv4);
isIPv4 = [adapter isIPv4Address: @"30.43.120.112"];
XCTAssertTrue(isIPv4);
}
- (void)testForIpv6 {
OSSIPv6Adapter *adapter = [OSSIPv6Adapter getInstance];
BOOL isIPv6 = [adapter isIPv6Address: @"http://www.baidu.com"];
XCTAssertFalse(isIPv6);
isIPv6 = [adapter isIPv6Address: @"30.43.120.112"];
XCTAssertFalse(isIPv6);
isIPv6 = [adapter isIPv6Address: @"0:0:0:0:0:0:0:1"];
XCTAssertTrue(isIPv6);
}
- (void)testPerformanceExample {
// This is an example of a performance test case.
[self measureBlock:^{
// Put the code you want to measure the time of here.
}];
}
- (void)testBucketName{
///^[a-z0-9][a-z0-9\\-]{1,61}[a-z0-9]$"
BOOL result1 = [OSSUtil validateBucketName:@"123-456abc"];
XCTAssertTrue(result1);
BOOL result2 = [OSSUtil validateBucketName:@"123-456abc*"];
XCTAssertFalse(result2);
BOOL result3 = [OSSUtil validateBucketName:@"-123-456abc"];
XCTAssertFalse(result3);
BOOL result4 = [OSSUtil validateBucketName:@"123\\456abc"];
XCTAssertFalse(result4);
BOOL result5 = [OSSUtil validateBucketName:@"abc123"];
XCTAssertTrue(result5);
BOOL result6 = [OSSUtil validateBucketName:@"abc_123"];
XCTAssertFalse(result6);
BOOL result7 = [OSSUtil validateBucketName:@"a"];
XCTAssertFalse(result7);
BOOL result8 = [OSSUtil validateBucketName:@"abcdefghig-abcdefghig-abcdefghig-abcdefghig-abcdefghig-abcdefghig"];
XCTAssertFalse(result8);
}
- (void)testEndpoint{
NSString *bucketName = @"test-image";
NSString *result1 = [self getResultEndpoint:@"http://123.test:8989/path?ooob" andBucketName:bucketName];
XCTAssertTrue([result1 isEqualToString:@"http://123.test:8989"]);
NSString *result2 = [self getResultEndpoint:@"http://192.168.0.1:8081" andBucketName:bucketName];
XCTAssertTrue([result2 isEqualToString:@"http://192.168.0.1:8081/test-image"]);
NSString *result3 = [self getResultEndpoint:@"http://192.168.0.1" andBucketName:bucketName];
XCTAssertTrue([result3 isEqualToString:@"http://192.168.0.1/test-image"]);
NSString *result4 = [self getResultEndpoint:@"http://oss-cn-region.aliyuncs.com" andBucketName:bucketName];
XCTAssertTrue([result4 isEqualToString:@"http://test-image.oss-cn-region.aliyuncs.com"]);
}
- (NSString *)getResultEndpoint:(NSString *)endpoint andBucketName:(NSString *)name{
NSURLComponents *urlComponents = [[NSURLComponents alloc]initWithString:endpoint];
NSURLComponents *temComs = [NSURLComponents new];
temComs.scheme = urlComponents.scheme;
temComs.host = urlComponents.host;
temComs.port = urlComponents.port;
if ([name oss_isNotEmpty]) {
OSSIPv6Adapter *ipAdapter = [OSSIPv6Adapter getInstance];
if ([OSSUtil isOssOriginBucketHost:temComs.host]) {
// eg. insert bucket to the begining of host.
temComs.host = [NSString stringWithFormat:@"%@.%@",
name, temComs.host];
if ([temComs.scheme.lowercaseString isEqualToString:@"http"] ) {
NSString *dnsResult = [OSSUtil getIpByHost: temComs.host];
temComs.host = dnsResult;
}
} else if ([ipAdapter isIPv4Address:temComs.host] || [ipAdapter isIPv6Address:temComs.host]) {
temComs.path = [NSString stringWithFormat:@"/%@",name];
}
}
return temComs.string;
}
- (void)test_methodDataMD5String {
NSData *data = [@"objectKey" dataUsingEncoding:NSUTF8StringEncoding];
NSString *md5 = @"01C5B2F19CD97A7F8EF0E89E018356C4";
NSError *error;
NSString *figureMd5 = [OSSUtil dataMD5String:data error:&error];
XCTAssertNil(error);
XCTAssertTrue([md5 isEqualToString:figureMd5]);
NSString *oldMethodfigureMd5 = [OSSUtil dataMD5String:data];
XCTAssertTrue([oldMethodfigureMd5 isEqualToString:figureMd5]);
data = [@"document/document/document/document/document/document/document/document/document/document/document/objectKey" dataUsingEncoding:NSUTF8StringEncoding];
md5 = @"666CCA65279EB5E95D2AC797E1A63701";
error = nil;
figureMd5 = [OSSUtil dataMD5String:data error:&error];
XCTAssertNil(error);
XCTAssertTrue([md5 isEqualToString:figureMd5]);
oldMethodfigureMd5 = [OSSUtil dataMD5String:data];
XCTAssertTrue([oldMethodfigureMd5 isEqualToString:figureMd5]);
error = nil;
[OSSUtil dataMD5String:nil error:&error];
XCTAssertNotNil(error);
}
- (void)test_methodFileMD5String {
NSString *file = [[NSBundle mainBundle] pathForResource:@"hasky" ofType:@"jpeg"];
NSString *md5 = @"E1CB762FDDAF4F93FB5B2487B03C6FEA";
NSError *error = nil;
NSString *figureMd5 = [OSSUtil fileMD5String:file error:&error];
XCTAssertNil(error);
XCTAssertTrue([md5 isEqualToString:figureMd5]);
NSString *oldMethodfigureMd5 = [OSSUtil fileMD5String:file];
XCTAssertTrue([oldMethodfigureMd5 isEqualToString:figureMd5]);
}
- (void)test_sha1WithFilePath {
NSString *file = [[NSBundle mainBundle] pathForResource:@"hasky" ofType:@"jpeg"];
NSString *sh1 = @"94692b2712cbaf4d75d44c1f4719776d66bea2b4";
NSString *figureSHA1 = [OSSUtil sha1WithFilePath:file];
XCTAssertTrue([sh1 isEqualToString:figureSHA1]);
}
- (void)test_methodCalculateSha256 {
NSData *se = [[HmacSHA256Signature new] computeHash:[@"signingKey" dataUsingEncoding:NSUTF8StringEncoding]
data:[@"stringToSign" dataUsingEncoding:NSUTF8StringEncoding]];
NSData *dataSha256 = [se oss_calculateSha256];
XCTAssertTrue([[dataSha256 oss_hexString] isEqualToString:@"1e618d7a5cfcac0dcf62cf5f98c69297c43606ee4ee497ce4813f098a83968b3"]);
}
@end