Skip to content

Commit 8f8bad1

Browse files
authored
fix: fix cos error convert, add test for convert (#188)
* fix: fix cos error convert, add test for convert * fix: fix cos test name * fix: fix test of invalid cos name
1 parent 3b4d576 commit 8f8bad1

File tree

2 files changed

+52
-10
lines changed

2 files changed

+52
-10
lines changed

__tests__/cos.test.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { convertCosError } from './../src/modules/cos/index';
12
import { CosDeployInputs, CosWebsiteInputs } from './../src/modules/cos/interface';
23
import { Cos } from '../src';
34
import path from 'path';
@@ -75,10 +76,33 @@ describe('Cos', () => {
7576
const res = await cos.deploy({ ...inputs, bucket: '1234567890' });
7677
expect(res).toBe(undefined);
7778
} catch (err) {
79+
console.log(JSON.stringify(err));
7880
expect(err.type).toBe('API_COS_putBucket');
7981
}
8082
});
8183

84+
test('should convert error correct', async () => {
85+
expect(
86+
convertCosError({
87+
message: 'message',
88+
}).message,
89+
).toBe('message');
90+
91+
expect(
92+
convertCosError({
93+
error: 'message',
94+
}).message,
95+
).toBe('message');
96+
97+
expect(
98+
convertCosError({
99+
error: {
100+
Message: 'message',
101+
},
102+
}).message,
103+
).toBe('message');
104+
});
105+
82106
test('should deploy Cos success', async () => {
83107
const res = await cos.deploy(inputs);
84108
await sleep(1000);
@@ -88,6 +112,15 @@ describe('Cos', () => {
88112
expect(data).toMatch(/Serverless\sFramework/gi);
89113
});
90114

115+
test('should deploy Cos success again (update)', async () => {
116+
const res = await cos.deploy(inputs);
117+
await sleep(1000);
118+
const reqUrl = `https://${bucket}.cos.${process.env.REGION}.myqcloud.com/index.html`;
119+
const { data } = await axios.get(reqUrl);
120+
expect(res).toEqual(inputs);
121+
expect(data).toMatch(/Serverless\sFramework/gi);
122+
});
123+
91124
test('should Cos getObjectUrl success', async () => {
92125
const res = await cos.getObjectUrl({
93126
bucket,

src/modules/cos/index.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,37 @@ import fs from 'fs';
3535
import { traverseDirSync } from '../../utils';
3636
import { ApiTypeError, ApiError } from '../../utils/error';
3737

38-
interface CosError {
39-
error?: {
40-
Code?: string;
41-
Message?: string;
42-
Stack?: string;
43-
RequestId?: string;
44-
};
38+
export interface CosError {
39+
error?:
40+
| {
41+
Code?: string;
42+
Message?: string;
43+
Stack?: string;
44+
RequestId?: string;
45+
}
46+
| string;
4547
code?: string;
4648
message?: string;
4749
stack?: string;
4850
requestId?: string;
4951
}
5052

5153
/** 将 Cos error 转为统一的形式 */
52-
function convertCosError(err: CosError) {
53-
const e = {
54+
export function convertCosError(err: CosError) {
55+
if (typeof err.error === 'string') {
56+
return {
57+
code: err.code!,
58+
message: err.message! ?? err.error,
59+
stack: err?.stack,
60+
reqId: err?.requestId,
61+
};
62+
}
63+
return {
5464
code: err?.error?.Code ?? err.code!,
5565
message: err?.error?.Message ?? err.message!,
5666
stack: err?.stack ?? err?.error?.Stack!,
5767
reqId: err?.error?.RequestId ?? err.requestId!,
5868
};
59-
return e;
6069
}
6170

6271
function constructCosError(

0 commit comments

Comments
 (0)