-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathaliyun_api_test.dart
58 lines (54 loc) · 2.18 KB
/
aliyun_api_test.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import 'dart:convert';
import 'dart:io';
import 'package:crypto/crypto.dart';
import 'package:dio/dio.dart';
import 'package:flutter_picgo/api/aliyun_api.dart';
import 'package:flutter_picgo/utils/net.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:path/path.dart' as path;
main() {
test('测试Content-MD5', () {
var digest = AliyunApi.generateContentMD5('0123456789');
expect(digest, 'eB5eJF1ptWaXm4bijSPyxw==');
});
test('测试Auth Header签名', () async {
var sign = AliyunApi.buildSignature('LTAIsXml0iczvY0J',
'yw8eO9Fa9Py2GAPRGG8N3GPKCeKCXl', 'PUT', 'zjyzy', 'test.txt');
try {
await NetUtils.getInstance().put(
'https://zjyzy.oss-cn-shenzhen.aliyuncs.com/test.txt',
options: Options(headers: {
'Authorization': sign,
'Date': HttpDate.format(new DateTime.now()),
}, contentType: 'application/x-www-form-urlencoded'),
);
} on DioError catch (_) {}
});
test('测试FormData提交图片', () async {
String pathname = path
.joinAll([Directory.current.path, '..', 'assets/images', 'logo.png']);
var policyText = {
"expiration":
"2030-01-01T12:00:00.000Z", // 设置Policy的失效时间,如果超过失效时间,就无法通过此Policy上传文件
"conditions": [
{"key": 'logo.png'} // 设置上传文件的大小限制,如果超过限制,文件上传到OSS会报错
]
};
var originSign = base64.encode(utf8.encode(json.encode(policyText)));
var hmacsha1 = Hmac(sha1, utf8.encode('yw8eO9Fa9Py2GAPRGG8N3GPKCeKCXl'));
var sign = hmacsha1.convert(utf8.encode(originSign));
var encodeSign = base64.encode(sign.bytes);
try {
await NetUtils.getInstance().post(
'https://zjyzy.oss-cn-shenzhen.aliyuncs.com',
data: FormData.fromMap({
'key': 'logo.png',
'OSSAccessKeyId': 'LTAIsXml0iczvY0J',
'policy': originSign,
'Signature': encodeSign,
'file': await MultipartFile.fromFile(pathname, filename: 'logo.png')
}),
options: Options(contentType: Headers.formUrlEncodedContentType));
} on DioError catch (_) {}
});
}