123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- // jest.resetModules()
- import assert from 'assert'
- import config from '../config.local'
- import fs from 'fs'
- import path from 'path'
- import tcb from '../../src/index'
- import xml2js from 'xml2js'
- import { ERROR } from '../../lib/const/code'
- describe('storage.uploadFile: 上传文件', () => {
- beforeEach(async () => {
- jest.resetModules()
- jest.resetAllMocks()
- })
- const app = tcb.init(config)
- it('mock getUploadMetadata报错', async () => {
- // jest.resetModules()
- // mock错误
- jest.mock('request', () => {
- return jest.fn().mockImplementation((params, callback) => {
- const body = { code: 'STORAGE_EXCEED_AUTHORITY' }
- process.nextTick(() => {
- callback(null, { statusCode: 200, body })
- })
- })
- })
- const tcb1 = require('../../src/index')
- const app1 = tcb1.init(config)
- try {
- let result = await app1.getUploadMetadata({
- // cloudPath: "test-admin.jpeg",
- cloudPath: '11112.png'
- })
- } catch (err) {
- assert(err.code === 'STORAGE_EXCEED_AUTHORITY')
- }
- }, 30000)
- it('mock uploadFile SignatureDoesNotMatch 报错', async () => {
- // mock错误
- jest.mock('request', () => {
- function mockRequest1(params, callback) {
- const body = { data: {} }
- process.nextTick(() => {
- callback(null, { statusCode: 200, body })
- })
- }
- function mockRequest2(params, callback) {
- const obj = {
- Error: {
- Code: 'SignatureDoesNotMatch',
- Message: ''
- }
- }
- const builder = new xml2js.Builder()
- const xml = builder.buildObject(obj)
- callback(null, { body: xml }, xml)
- }
- let mR
- let i = 0
- return jest.fn().mockImplementation((params, callback) => {
- // if(!mR) {
- // mR = mockRequest(params, callback)
- // }
- if (i === 0) {
- mockRequest1(params, callback)
- } else {
- mockRequest2(params, callback)
- }
- i++
- // return mR.next()
- })
- })
- const tcb2 = require('../../src/index')
- const app2 = tcb2.init(config)
- try {
- const result1 = await app2.uploadFile({
- cloudPath: '测试.png',
- fileContent: 'test'
- })
- // console.log(result1)
- } catch (err) {
- assert(err.code === ERROR.SYS_ERR.code)
- }
- }, 100000)
- it('mock getUploadMetadata request err 报错', async () => {
- // jest.resetModules()
- // mock错误
- jest.mock('request', () => {
- return jest.fn().mockImplementation((params, callback) => {
- process.nextTick(() => {
- callback({ code: 'testError' }, { statusCode: 200, body: {} })
- })
- })
- })
- const tcb3 = require('../../src/index')
- const app3 = tcb3.init(config)
- try {
- let result = await app3.uploadFile({
- cloudPath: '测试.png',
- fileContent: 'test'
- })
- } catch (err) {
- assert(err.code === 'testError')
- }
- }, 30000)
- it('mock uploadFile request 报错', async () => {
- // mock错误
- jest.mock('request', () => {
- function mockRequest1(params, callback) {
- process.nextTick(() => {
- callback(null, { statusCode: 200, body: { data: {} } })
- })
- }
- function mockRequest2(params, callback) {
- callback({ code: 'testErr' }, null, null)
- }
- let mR
- let i = 0
- return jest.fn().mockImplementation((params, callback) => {
- if (i === 0) {
- mockRequest1(params, callback)
- } else {
- mockRequest2(params, callback)
- }
- i++
- })
- })
- const tcb4 = require('../../src/index')
- const app4 = tcb4.init(config)
- try {
- const result1 = await app4.uploadFile({
- cloudPath: '测试.png',
- fileContent: 'test'
- })
- } catch (err) {
- assert(err.code === 'testErr')
- }
- }, 30000)
- it('mock parseXML 报错', async () => {
- // mock错误
- jest.mock('request', () => {
- function mockRequest1(params, callback) {
- process.nextTick(() => {
- callback(null, { statusCode: 200, body: { data: {} } })
- })
- }
- function mockRequest2(params, callback) {
- // const obj = {Error:{
- // Code: 'SignatureDoesNotMatch',
- // Message: ''
- // }}
- // const builder = new xml2js.Builder();
- // const xml = builder.buildObject('ERROR');
- process.nextTick(() => {
- callback(null, { body: 'ERROR' }, 'ERROR')
- })
- }
- let mR
- let i = 0
- return jest.fn().mockImplementation((params, callback) => {
- // if(!mR) {
- // mR = mockRequest(params, callback)
- // }
- if (i === 0) {
- mockRequest1(params, callback)
- } else {
- mockRequest2(params, callback)
- }
- i++
- // return mR.next()
- })
- })
- const tcb5 = require('../../src/index')
- const app5 = tcb5.init(config)
- try {
- const result1 = await app5.uploadFile({
- cloudPath: '测试.png',
- fileContent: 'test'
- })
- } catch (err) {
- assert(err.message)
- }
- }, 30000)
- it('mock uploadFile 非SignatureDoesNotMatch 报错', async () => {
- // jest.resetModules()
- // mock错误
- jest.mock('request', () => {
- function mockRequest1(params, callback) {
- process.nextTick(() => {
- callback(null, { statusCode: 200, body: { data: {} } }, { data: {} })
- })
- }
- function mockRequest2(params, callback) {
- const obj = {
- Error: {
- Code: 'Not_SignatureDoesNotMatch',
- Message: ''
- }
- }
- const builder = new xml2js.Builder()
- const xml = builder.buildObject(obj)
- callback(null, { body: xml }, xml)
- }
- let mR
- let i = 0
- return jest.fn().mockImplementation((params, callback) => {
- // if(!mR) {
- // mR = mockRequest(params, callback)
- // }
- if (i === 0) {
- mockRequest1(params, callback)
- } else {
- mockRequest2(params, callback)
- }
- i++
- // return mR.next()
- })
- })
- const tcb6 = require('../../src/index')
- const app6 = tcb6.init(config)
- try {
- const result1 = await app6.uploadFile({
- cloudPath: '测试.png',
- fileContent: 'test'
- })
- } catch (err) {
- assert(err.code === ERROR.STORAGE_REQUEST_FAIL.code)
- }
- }, 30000)
- it('获取COS直传信息', async () => {
- const app = tcb.init(config)
- let result = await app.getUploadMetadata({
- // cloudPath: "test-admin.jpeg",
- cloudPath: 'test.png'
- })
- assert(result.data.url)
- assert(result.data.token)
- assert(result.data.authorization)
- }, 30000)
- it('上传文件', async () => {
- const app = tcb.init(config)
- const result1 = await app.uploadFile({
- cloudPath: '测试.png',
- fileContent: fs.createReadStream(path.resolve(__dirname, './my-photo.png'))
- })
- assert(result1.fileID)
- const result2 = await app.getTempFileURL({
- fileList: [result1.fileID]
- })
- assert(result2.fileList)
- assert(result2.fileList[0].fileID)
- }, 30000)
- })
|