@@ -32,7 +32,7 @@ const VALID_PARAMETERS = {
32
32
} ,
33
33
// eslint-disable-next-line @typescript-eslint/camelcase
34
34
welcome_message : {
35
- defaultValue : { value : ' welcome text' + Date . now ( ) } ,
35
+ defaultValue : { value : ` welcome text ${ Date . now ( ) } ` } ,
36
36
conditionalValues : {
37
37
ios : { value : 'welcome ios text' } ,
38
38
android : { value : 'welcome android text' } ,
@@ -57,16 +57,22 @@ const VALID_PARAMETER_GROUPS = {
57
57
} ,
58
58
} ;
59
59
60
- const VALID_CONDITIONS : admin . remoteConfig . RemoteConfigCondition [ ] = [ {
61
- name : 'ios' ,
62
- expression : 'device.os == \'ios\'' ,
63
- tagColor : 'INDIGO' ,
64
- } ,
65
- {
66
- name : 'android' ,
67
- expression : 'device.os == \'android\'' ,
68
- tagColor : 'GREEN' ,
69
- } ] ;
60
+ const VALID_CONDITIONS : admin . remoteConfig . RemoteConfigCondition [ ] = [
61
+ {
62
+ name : 'ios' ,
63
+ expression : 'device.os == \'ios\'' ,
64
+ tagColor : 'INDIGO' ,
65
+ } ,
66
+ {
67
+ name : 'android' ,
68
+ expression : 'device.os == \'android\'' ,
69
+ tagColor : 'GREEN' ,
70
+ } ,
71
+ ] ;
72
+
73
+ const VALID_VERSION = {
74
+ description : `template description ${ Date . now ( ) } ` ,
75
+ }
70
76
71
77
let currentTemplate : admin . remoteConfig . RemoteConfigTemplate ;
72
78
@@ -88,13 +94,16 @@ describe('admin.remoteConfig', () => {
88
94
currentTemplate . conditions = VALID_CONDITIONS ;
89
95
currentTemplate . parameters = VALID_PARAMETERS ;
90
96
currentTemplate . parameterGroups = VALID_PARAMETER_GROUPS ;
97
+ currentTemplate . version = VALID_VERSION ;
91
98
return admin . remoteConfig ( ) . validateTemplate ( currentTemplate )
92
99
. then ( ( template ) => {
93
100
expect ( template . etag ) . matches ( / ^ e t a g - [ 0 - 9 ] * - [ 0 - 9 ] * $ / ) ;
94
101
expect ( template . conditions . length ) . to . equal ( 2 ) ;
95
102
expect ( template . conditions ) . to . deep . equal ( VALID_CONDITIONS ) ;
96
103
expect ( template . parameters ) . to . deep . equal ( VALID_PARAMETERS ) ;
97
104
expect ( template . parameterGroups ) . to . deep . equal ( VALID_PARAMETER_GROUPS ) ;
105
+ expect ( template . version ) . to . be . not . undefined ;
106
+ expect ( template . version ! . description ) . equals ( VALID_VERSION . description ) ;
98
107
} ) ;
99
108
} ) ;
100
109
@@ -103,6 +112,7 @@ describe('admin.remoteConfig', () => {
103
112
currentTemplate . conditions = [ ] ;
104
113
currentTemplate . parameters = VALID_PARAMETERS ;
105
114
currentTemplate . parameterGroups = VALID_PARAMETER_GROUPS ;
115
+ currentTemplate . version = VALID_VERSION ;
106
116
return admin . remoteConfig ( ) . validateTemplate ( currentTemplate )
107
117
. should . eventually . be . rejected . and . have . property ( 'code' , 'remote-config/invalid-argument' ) ;
108
118
} ) ;
@@ -114,13 +124,16 @@ describe('admin.remoteConfig', () => {
114
124
currentTemplate . conditions = VALID_CONDITIONS ;
115
125
currentTemplate . parameters = VALID_PARAMETERS ;
116
126
currentTemplate . parameterGroups = VALID_PARAMETER_GROUPS ;
127
+ currentTemplate . version = VALID_VERSION ;
117
128
return admin . remoteConfig ( ) . publishTemplate ( currentTemplate )
118
129
. then ( ( template ) => {
119
130
expect ( template . etag ) . matches ( / ^ e t a g - [ 0 - 9 ] * - [ 0 - 9 ] * $ / ) ;
120
131
expect ( template . conditions . length ) . to . equal ( 2 ) ;
121
132
expect ( template . conditions ) . to . deep . equal ( VALID_CONDITIONS ) ;
122
133
expect ( template . parameters ) . to . deep . equal ( VALID_PARAMETERS ) ;
123
134
expect ( template . parameterGroups ) . to . deep . equal ( VALID_PARAMETER_GROUPS ) ;
135
+ expect ( template . version ) . to . be . not . undefined ;
136
+ expect ( template . version ! . description ) . equals ( VALID_VERSION . description ) ;
124
137
} ) ;
125
138
} ) ;
126
139
@@ -129,20 +142,92 @@ describe('admin.remoteConfig', () => {
129
142
currentTemplate . conditions = [ ] ;
130
143
currentTemplate . parameters = VALID_PARAMETERS ;
131
144
currentTemplate . parameterGroups = VALID_PARAMETER_GROUPS ;
145
+ currentTemplate . version = VALID_VERSION ;
132
146
return admin . remoteConfig ( ) . publishTemplate ( currentTemplate )
133
147
. should . eventually . be . rejected . and . have . property ( 'code' , 'remote-config/invalid-argument' ) ;
134
148
} ) ;
135
149
} ) ;
136
150
137
151
describe ( 'getTemplate' , ( ) => {
138
- it ( 'verfy that getTemplate() returns the most recently published template' , ( ) => {
152
+ it ( 'should return the most recently published template' , ( ) => {
139
153
return admin . remoteConfig ( ) . getTemplate ( )
140
154
. then ( ( template ) => {
141
155
expect ( template . etag ) . matches ( / ^ e t a g - [ 0 - 9 ] * - [ 0 - 9 ] * $ / ) ;
142
156
expect ( template . conditions . length ) . to . equal ( 2 ) ;
143
157
expect ( template . conditions ) . to . deep . equal ( VALID_CONDITIONS ) ;
144
158
expect ( template . parameters ) . to . deep . equal ( VALID_PARAMETERS ) ;
145
159
expect ( template . parameterGroups ) . to . deep . equal ( VALID_PARAMETER_GROUPS ) ;
160
+ expect ( template . version ) . to . be . not . undefined ;
161
+ expect ( template . version ! . description ) . equals ( VALID_VERSION . description ) ;
162
+ } ) ;
163
+ } ) ;
164
+ } ) ;
165
+
166
+ let versionOneNumber : string ;
167
+ let versionTwoNumber : string ;
168
+ const versionOneDescription = `getTemplateAtVersion test v1 ${ Date . now ( ) } ` ;
169
+ const versionTwoDescription = `getTemplateAtVersion test v2 ${ Date . now ( ) } ` ;
170
+
171
+ describe ( 'getTemplateAtVersion' , ( ) => {
172
+ before ( async ( ) => {
173
+ // obtain the current active template
174
+ let activeTemplate = await admin . remoteConfig ( ) . getTemplate ( ) ;
175
+
176
+ // publish a new template to create a new version number
177
+ activeTemplate . version = { description : versionOneDescription } ;
178
+ activeTemplate = await admin . remoteConfig ( ) . publishTemplate ( activeTemplate )
179
+ expect ( activeTemplate . version ) . to . be . not . undefined ;
180
+ versionOneNumber = activeTemplate . version ! . versionNumber ! ;
181
+
182
+ // publish another template to create a second version number
183
+ activeTemplate . version = { description : versionTwoDescription } ;
184
+ activeTemplate = await admin . remoteConfig ( ) . publishTemplate ( activeTemplate )
185
+ expect ( activeTemplate . version ) . to . be . not . undefined ;
186
+ versionTwoNumber = activeTemplate . version ! . versionNumber ! ;
187
+ } ) ;
188
+
189
+ it ( 'should return the requested template version v1' , ( ) => {
190
+ return admin . remoteConfig ( ) . getTemplateAtVersion ( versionOneNumber )
191
+ . then ( ( template ) => {
192
+ expect ( template . etag ) . matches ( / ^ e t a g - [ 0 - 9 ] * - [ 0 - 9 ] * $ / ) ;
193
+ expect ( template . version ) . to . be . not . undefined ;
194
+ expect ( template . version ! . versionNumber ) . equals ( versionOneNumber ) ;
195
+ expect ( template . version ! . description ) . equals ( versionOneDescription ) ;
196
+ } ) ;
197
+ } ) ;
198
+ } ) ;
199
+
200
+ describe ( 'listVersions' , ( ) => {
201
+ it ( 'should return the most recently published 2 versions' , ( ) => {
202
+ return admin . remoteConfig ( ) . listVersions ( {
203
+ pageSize : 2 ,
204
+ } )
205
+ . then ( ( response ) => {
206
+ expect ( response . versions . length ) . to . equal ( 2 ) ;
207
+ // versions should be in reverse chronological order
208
+ expect ( response . versions [ 0 ] . description ) . equals ( versionTwoDescription ) ;
209
+ expect ( response . versions [ 0 ] . versionNumber ) . equals ( versionTwoNumber ) ;
210
+ expect ( response . versions [ 1 ] . description ) . equals ( versionOneDescription ) ;
211
+ expect ( response . versions [ 1 ] . versionNumber ) . equals ( versionOneNumber ) ;
212
+ } ) ;
213
+ } ) ;
214
+ } ) ;
215
+
216
+ describe ( 'rollback' , ( ) => {
217
+ it ( 'verify the most recent template version before rollback to the one prior' , ( ) => {
218
+ return admin . remoteConfig ( ) . getTemplate ( )
219
+ . then ( ( template ) => {
220
+ expect ( template . version ) . to . be . not . undefined ;
221
+ expect ( template . version ! . versionNumber ) . equals ( versionTwoNumber ) ;
222
+ } ) ;
223
+ } ) ;
224
+
225
+ it ( 'should rollback to the requested version' , ( ) => {
226
+ return admin . remoteConfig ( ) . rollback ( versionOneNumber )
227
+ . then ( ( template ) => {
228
+ expect ( template . version ) . to . be . not . undefined ;
229
+ expect ( template . version ! . updateType ) . equals ( 'ROLLBACK' ) ;
230
+ expect ( template . version ! . description ) . equals ( `Rollback to version ${ versionOneNumber } ` ) ;
146
231
} ) ;
147
232
} ) ;
148
233
} ) ;
0 commit comments