@@ -10,6 +10,24 @@ describe('Cos', () => {
1010 } ;
1111 const bucket = `serverless-cos-test-${ process . env . TENCENT_APP_ID } ` ;
1212 const staticPath = path . join ( __dirname , 'static' ) ;
13+ const policy = {
14+ Statement : [
15+ {
16+ Principal : { qcs : [ 'qcs::cam::anyone:anyone' ] } ,
17+ Effect : 'Allow' ,
18+ Action : [
19+ 'name/cos:HeadBucket' ,
20+ 'name/cos:ListMultipartUploads' ,
21+ 'name/cos:ListParts' ,
22+ 'name/cos:GetObject' ,
23+ 'name/cos:HeadObject' ,
24+ 'name/cos:OptionsObject' ,
25+ ] ,
26+ Resource : [ `qcs::cos:${ process . env . REGION } :uid/${ process . env . TENCENT_APP_ID } :${ bucket } /*` ] ,
27+ } ,
28+ ] ,
29+ version : '2.0' ,
30+ } ;
1331 const inputs = {
1432 bucket : bucket ,
1533 src : staticPath ,
@@ -43,6 +61,9 @@ describe('Cos', () => {
4361 force : true ,
4462 protocol : 'https' ,
4563 replace : true ,
64+ acl : {
65+ permissions : 'public-read' ,
66+ } ,
4667 } ;
4768 const cos = new Cos ( credentials , process . env . REGION ) ;
4869
@@ -65,6 +86,29 @@ describe('Cos', () => {
6586 expect ( content ) . toMatch ( / S e r v e r l e s s \s F r a m e w o r k / gi) ;
6687 } ) ;
6788
89+ test ( 'should deploy Cos success with policy' , async ( ) => {
90+ inputs . acl . permissions = 'private' ;
91+ inputs . policy = policy ;
92+ const res = await cos . deploy ( inputs ) ;
93+ await sleep ( 1000 ) ;
94+ const reqUrl = `https://${ bucket } .cos.${ process . env . REGION } .myqcloud.com/index.html` ;
95+ const content = await request . get ( reqUrl ) ;
96+ expect ( res ) . toEqual ( inputs ) ;
97+ expect ( content ) . toMatch ( / S e r v e r l e s s \s F r a m e w o r k / gi) ;
98+ } ) ;
99+
100+ test ( 'should deploy website success with policy' , async ( ) => {
101+ websiteInputs . acl . permissions = 'private' ;
102+ websiteInputs . policy = policy ;
103+ const res = await cos . website ( websiteInputs ) ;
104+ await sleep ( 1000 ) ;
105+ const websiteUrl = `${ inputs . bucket } .cos-website.${ process . env . REGION } .myqcloud.com` ;
106+ const reqUrl = `${ websiteInputs . protocol } ://${ websiteUrl } ` ;
107+ const content = await request . get ( reqUrl ) ;
108+ expect ( res ) . toBe ( websiteUrl ) ;
109+ expect ( content ) . toMatch ( / S e r v e r l e s s \s F r a m e w o r k / gi) ;
110+ } ) ;
111+
68112 test ( 'should remove Cos success' , async ( ) => {
69113 await cos . remove ( inputs ) ;
70114 try {
0 commit comments