Files
flutter-picgo/test/api/aliyun_api_test.dart
2021-04-23 16:13:43 +08:00

59 lines
2.2 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 (_) {}
});
}