11import * as nock from "nock" ;
2+ import { expect } from "chai" ;
3+
24import * as api from "../../api" ;
35import * as provisioningHelper from "../../extensions/provisioningHelper" ;
46import * as extensionsApi from "../../extensions/extensionsApi" ;
5- import { expect } from "chai" ;
67import { FirebaseError } from "../../error" ;
78
89const TEST_INSTANCES_RESPONSE = { } ;
@@ -35,105 +36,97 @@ const FIREBASE_STORAGE_DEFAULT_BUCKET_LINKED_RESPONSE = {
3536 ] ,
3637} ;
3738
38- describe . only ( "provisioningHelper" , ( ) => {
39+ describe ( "provisioningHelper" , ( ) => {
3940 afterEach ( ( ) => {
4041 nock . cleanAll ( ) ;
4142 } ) ;
4243
4344 describe ( "getUsedProducts" , ( ) => {
45+ let testSpec : extensionsApi . ExtensionSpec ;
46+
47+ beforeEach ( ( ) => {
48+ testSpec = {
49+ apis : [
50+ {
51+ apiName : "unrelated.googleapis.com" ,
52+ } ,
53+ ] as extensionsApi . Api [ ] ,
54+ roles : [
55+ {
56+ role : "unrelated.role" ,
57+ } ,
58+ ] as extensionsApi . Role [ ] ,
59+ resources : [
60+ {
61+ propertiesYaml :
62+ "availableMemoryMb: 1024\neventTrigger:\n eventType: providers/unrelates.service/eventTypes/something.do\n resource: projects/_/buckets/${param:IMG_BUCKET}\nlocation: ${param:LOCATION}\nruntime: nodejs10\n" ,
63+ } ,
64+ ] as extensionsApi . Resource [ ] ,
65+ } as extensionsApi . ExtensionSpec ;
66+ } ) ;
67+
4468 it ( "returns empty array when nothing is used" , ( ) => {
45- expect (
46- provisioningHelper . getUsedProducts ( {
47- apis : [
48- {
49- apiName : "unrelated.googleapis.com" ,
50- } ,
51- ] as extensionsApi . Api [ ] ,
52- roles : [
53- {
54- role : "unrelated.role" ,
55- } ,
56- ] as extensionsApi . Role [ ] ,
57- resources : [
58- {
59- propertiesYaml :
60- "availableMemoryMb: 1024\neventTrigger:\n eventType: providers/unrelates.service/eventTypes/something.do\n resource: projects/_/buckets/${param:IMG_BUCKET}\nlocation: ${param:LOCATION}\nruntime: nodejs10\n" ,
61- } ,
62- ] as extensionsApi . Resource [ ] ,
63- } as extensionsApi . ExtensionSpec )
64- ) . to . be . empty ;
69+ expect ( provisioningHelper . getUsedProducts ( testSpec ) ) . to . be . empty ;
6570 } ) ;
71+
6672 it ( "returns STORAGE when Storage API is used" , ( ) => {
67- expect (
68- provisioningHelper . getUsedProducts ( {
69- apis : [
70- {
71- apiName : "storage-component.googleapis.com" ,
72- } ,
73- ] as extensionsApi . Api [ ] ,
74- resources : [ ] as extensionsApi . Resource [ ] ,
75- } as extensionsApi . ExtensionSpec )
76- ) . to . be . deep . eq ( [ provisioningHelper . DeferredProduct . STORAGE ] ) ;
73+ testSpec . apis ?. push ( {
74+ apiName : "storage-component.googleapis.com" ,
75+ reason : "whatever" ,
76+ } ) ;
77+ expect ( provisioningHelper . getUsedProducts ( testSpec ) ) . to . be . deep . eq ( [
78+ provisioningHelper . DeferredProduct . STORAGE ,
79+ ] ) ;
7780 } ) ;
81+
7882 it ( "returns STORAGE when Storage Role is used" , ( ) => {
79- expect (
80- provisioningHelper . getUsedProducts ( {
81- roles : [
82- {
83- role : "storage.object.admin" ,
84- } ,
85- ] as extensionsApi . Role [ ] ,
86- resources : [ ] as extensionsApi . Resource [ ] ,
87- } as extensionsApi . ExtensionSpec )
88- ) . to . be . deep . eq ( [ provisioningHelper . DeferredProduct . STORAGE ] ) ;
83+ testSpec . roles ?. push ( {
84+ role : "storage.object.admin" ,
85+ reason : "whatever" ,
86+ } ) ;
87+ expect ( provisioningHelper . getUsedProducts ( testSpec ) ) . to . be . deep . eq ( [
88+ provisioningHelper . DeferredProduct . STORAGE ,
89+ ] ) ;
8990 } ) ;
91+
9092 it ( "returns STORAGE when Storage trigger is used" , ( ) => {
91- expect (
92- provisioningHelper . getUsedProducts ( {
93- resources : [
94- {
95- propertiesYaml :
96- "availableMemoryMb: 1024\neventTrigger:\n eventType: google.storage.object.finalize\n resource: projects/_/buckets/${param:IMG_BUCKET}\nlocation: ${param:LOCATION}\nruntime: nodejs10\n" ,
97- } ,
98- ] as extensionsApi . Resource [ ] ,
99- } as extensionsApi . ExtensionSpec )
100- ) . to . be . deep . eq ( [ provisioningHelper . DeferredProduct . STORAGE ] ) ;
93+ testSpec . resources ?. push ( {
94+ propertiesYaml :
95+ "availableMemoryMb: 1024\neventTrigger:\n eventType: google.storage.object.finalize\n resource: projects/_/buckets/${param:IMG_BUCKET}\nlocation: ${param:LOCATION}\nruntime: nodejs10\n" ,
96+ } as extensionsApi . Resource ) ;
97+ expect ( provisioningHelper . getUsedProducts ( testSpec ) ) . to . be . deep . eq ( [
98+ provisioningHelper . DeferredProduct . STORAGE ,
99+ ] ) ;
101100 } ) ;
101+
102102 it ( "returns AUTH when Authentication API is used" , ( ) => {
103- expect (
104- provisioningHelper . getUsedProducts ( {
105- apis : [
106- {
107- apiName : "identitytoolkit.googleapis.com" ,
108- } ,
109- ] as extensionsApi . Api [ ] ,
110- resources : [ ] as extensionsApi . Resource [ ] ,
111- } as extensionsApi . ExtensionSpec )
112- ) . to . be . deep . eq ( [ provisioningHelper . DeferredProduct . AUTH ] ) ;
103+ testSpec . apis ?. push ( {
104+ apiName : "identitytoolkit.googleapis.com" ,
105+ reason : "whatever" ,
106+ } ) ;
107+ expect ( provisioningHelper . getUsedProducts ( testSpec ) ) . to . be . deep . eq ( [
108+ provisioningHelper . DeferredProduct . AUTH ,
109+ ] ) ;
113110 } ) ;
111+
114112 it ( "returns AUTH when Authentication Role is used" , ( ) => {
115- expect (
116- provisioningHelper . getUsedProducts ( {
117- roles : [
118- {
119- role : "firebaseauth.user.admin" ,
120- } ,
121- ] as extensionsApi . Role [ ] ,
122- resources : [ ] as extensionsApi . Resource [ ] ,
123- } as extensionsApi . ExtensionSpec )
124- ) . to . be . deep . eq ( [ provisioningHelper . DeferredProduct . AUTH ] ) ;
113+ testSpec . roles ?. push ( {
114+ role : "firebaseauth.user.admin" ,
115+ reason : "whatever" ,
116+ } ) ;
117+ expect ( provisioningHelper . getUsedProducts ( testSpec ) ) . to . be . deep . eq ( [
118+ provisioningHelper . DeferredProduct . AUTH ,
119+ ] ) ;
125120 } ) ;
121+
126122 it ( "returns AUTH when Auth trigger is used" , ( ) => {
127- expect (
128- provisioningHelper . getUsedProducts ( {
129- resources : [
130- {
131- propertiesYaml :
132- "availableMemoryMb: 1024\neventTrigger:\n eventType: providers/firebase.auth/eventTypes/user.create\n resource: projects/_/buckets/${param:IMG_BUCKET}\nlocation: ${param:LOCATION}\nruntime: nodejs10\n" ,
133- } ,
134- ] as extensionsApi . Resource [ ] ,
135- } as extensionsApi . ExtensionSpec )
136- ) . to . be . deep . eq ( [ provisioningHelper . DeferredProduct . AUTH ] ) ;
123+ testSpec . resources ?. push ( {
124+ propertiesYaml :
125+ "availableMemoryMb: 1024\neventTrigger:\n eventType: providers/firebase.auth/eventTypes/user.create\n resource: projects/_/buckets/${param:IMG_BUCKET}\nlocation: ${param:LOCATION}\nruntime: nodejs10\n" ,
126+ } as extensionsApi . Resource ) ;
127+ expect ( provisioningHelper . getUsedProducts ( testSpec ) ) . to . be . deep . eq ( [
128+ provisioningHelper . DeferredProduct . AUTH ,
129+ ] ) ;
137130 } ) ;
138131 } ) ;
139132
@@ -145,6 +138,7 @@ describe.only("provisioningHelper", () => {
145138 } as extensionsApi . ExtensionSpec )
146139 ) . to . be . fulfilled ;
147140 } ) ;
141+
148142 it ( "passes provisioning check when all is provisioned" , async ( ) => {
149143 nock ( api . firedataOrigin )
150144 . get ( `/v1/projects/${ PROJECT_ID } /products` )
@@ -159,6 +153,7 @@ describe.only("provisioningHelper", () => {
159153
160154 expect ( nock . isDone ( ) ) . to . be . true ;
161155 } ) ;
156+
162157 it ( "fails provisioning check storage when default bucket is not linked" , async ( ) => {
163158 nock ( api . firedataOrigin )
164159 . get ( `/v1/projects/${ PROJECT_ID } /products` )
@@ -179,6 +174,7 @@ describe.only("provisioningHelper", () => {
179174
180175 expect ( nock . isDone ( ) ) . to . be . true ;
181176 } ) ;
177+
182178 it ( "fails provisioning check storage when no firebase storage buckets" , async ( ) => {
183179 nock ( api . firedataOrigin )
184180 . get ( `/v1/projects/${ PROJECT_ID } /products` )
@@ -191,6 +187,7 @@ describe.only("provisioningHelper", () => {
191187
192188 expect ( nock . isDone ( ) ) . to . be . true ;
193189 } ) ;
190+
194191 it ( "fails provisioning check storage when no auth is not provisioned" , async ( ) => {
195192 nock ( api . firedataOrigin ) . get ( `/v1/projects/${ PROJECT_ID } /products` ) . reply ( 200 , { } ) ;
196193 nock ( api . firebaseStorageOrigin )
0 commit comments