@@ -42,89 +42,133 @@ public class FirebaseRemoteConfigIT {
42
42
43
43
private static FirebaseRemoteConfig remoteConfig ;
44
44
45
- private static final long timestamp = System .currentTimeMillis ();
46
-
47
- private static final Map <String , Parameter > PARAMETERS = ImmutableMap .of (
48
- "welcome_message_text" , new Parameter ()
49
- .setDefaultValue (ParameterValue
50
- .of (String .format ("welcome to app %s" , timestamp )))
51
- .setConditionalValues (ImmutableMap .<String , ParameterValue >of (
52
- "ios_en" ,
53
- ParameterValue .of (String .format ("welcome to app en %s" , timestamp ))
54
- ))
55
- .setDescription ("text for welcome message!" ),
56
- "header_text" , new Parameter ()
57
- .setDefaultValue (ParameterValue .inAppDefault ()));
58
-
59
- private static final Map <String , ParameterGroup > PARAMETER_GROUPS = ImmutableMap .of (
60
- "new menu" , new ParameterGroup ()
61
- .setDescription (String .format ("New Menu %s" , timestamp ))
62
- .setParameters (ImmutableMap .of (
63
- "pumpkin_spice_season" , new Parameter ()
64
- .setDefaultValue (ParameterValue .of ("true" ))
65
- .setDescription ("Whether it's currently pumpkin spice season." ))
66
- ));
67
-
68
45
private static final List <Condition > CONDITIONS = ImmutableList .of (
69
46
new Condition ("ios_en" , "device.os == 'ios' && device.country in ['us', 'uk']" )
70
47
.setTagColor (TagColor .INDIGO ),
71
48
new Condition ("android_en" ,
72
49
"device.os == 'android' && device.country in ['us', 'uk']" ));
73
50
74
- private static final Version VERSION = Version
75
- .withDescription (String .format ("promo config %s" , timestamp ));
76
-
77
51
@ BeforeClass
78
52
public static void setUpClass () {
79
53
remoteConfig = FirebaseRemoteConfig .getInstance (IntegrationTestUtils .ensureDefaultApp ());
80
54
}
81
55
82
56
@ Test
83
- public void testTemplateOperations () throws FirebaseRemoteConfigException {
57
+ public void testValidateTemplate () throws FirebaseRemoteConfigException {
58
+ final Template inputTemplate = remoteConfig .getTemplate ();
59
+ final Map <String , Parameter > expectedParameters = getParameters ();
60
+ final Map <String , ParameterGroup > expectedParameterGroups = getParameterGroups ();
61
+ final Version expectedVersion = getVersion ();
62
+ inputTemplate .setParameters (expectedParameters )
63
+ .setParameterGroups (expectedParameterGroups )
64
+ .setConditions (CONDITIONS )
65
+ .setVersion (expectedVersion );
66
+
67
+ Template validatedTemplate = remoteConfig .validateTemplate (inputTemplate );
68
+
69
+ assertEquals (inputTemplate , validatedTemplate );
70
+ }
71
+
72
+ @ Test
73
+ public void testPublishTemplate () throws FirebaseRemoteConfigException {
84
74
// get template to fetch the active template with correct etag
85
75
final Template oldTemplate = remoteConfig .getTemplate ();
86
76
final Template inputTemplate = Template .fromJSON (oldTemplate .toJSON ());
87
- final String versionNumber = oldTemplate .getVersion ().getVersionNumber ();
88
-
77
+ final Map <String , Parameter > parameters = getParameters ();
78
+ final Map <String , ParameterGroup > parameterGroups = getParameterGroups ();
79
+ final Version version = getVersion ();
89
80
// modify template
90
- inputTemplate .setParameters (PARAMETERS )
91
- .setParameterGroups (PARAMETER_GROUPS )
81
+ inputTemplate .setParameters (parameters )
82
+ .setParameterGroups (parameterGroups )
92
83
.setConditions (CONDITIONS )
93
- .setVersion (VERSION );
94
-
95
- // validate template
96
- Template validatedTemplate = remoteConfig .validateTemplate (inputTemplate );
97
- assertEquals (inputTemplate .getETag (), validatedTemplate .getETag ());
98
- assertEquals (PARAMETERS , validatedTemplate .getParameters ());
99
- assertEquals (PARAMETER_GROUPS , validatedTemplate .getParameterGroups ());
100
- assertEquals (CONDITIONS , validatedTemplate .getConditions ());
101
- assertEquals (VERSION , validatedTemplate .getVersion ());
84
+ .setVersion (version );
102
85
103
86
// publish template
104
87
Template publishedTemplate = remoteConfig .publishTemplate (inputTemplate );
88
+
105
89
assertNotEquals (inputTemplate .getETag (), publishedTemplate .getETag ());
106
- assertEquals (PARAMETERS , publishedTemplate .getParameters ());
107
- assertEquals (PARAMETER_GROUPS , publishedTemplate .getParameterGroups ());
90
+ assertEquals (parameters , publishedTemplate .getParameters ());
91
+ assertEquals (parameterGroups , publishedTemplate .getParameterGroups ());
108
92
assertEquals (CONDITIONS , publishedTemplate .getConditions ());
109
- assertNotEquals (VERSION , publishedTemplate .getVersion ());
93
+ assertNotEquals (version , publishedTemplate .getVersion ());
94
+ }
95
+
96
+ @ Test
97
+ public void testGetTemplate () throws FirebaseRemoteConfigException {
98
+ // get template to fetch the active template with correct etag
99
+ // modify and publish a known template to test get template operation.
100
+ final Template oldTemplate = remoteConfig .getTemplate ();
101
+ final Template inputTemplate = Template .fromJSON (oldTemplate .toJSON ());
102
+ final Map <String , Parameter > parameters = getParameters ();
103
+ final Map <String , ParameterGroup > parameterGroups = getParameterGroups ();
104
+ final Version version = getVersion ();
105
+ inputTemplate .setParameters (parameters )
106
+ .setParameterGroups (parameterGroups )
107
+ .setConditions (CONDITIONS )
108
+ .setVersion (version );
109
+ // publish a known template
110
+ Template publishedTemplate = remoteConfig .publishTemplate (inputTemplate );
110
111
111
112
// get template
112
113
Template currentTemplate = remoteConfig .getTemplate ();
114
+
113
115
assertEquals (publishedTemplate , currentTemplate );
116
+ }
117
+
118
+ @ Test
119
+ public void testGetTemplateAtVersion () throws FirebaseRemoteConfigException {
120
+ // get template to fetch the active template with correct etag.
121
+ // store the template version number.
122
+ // publish a new template to test get template at version operation.
123
+ final Template oldTemplate = remoteConfig .getTemplate ();
124
+ final Template inputTemplate = Template .fromJSON (oldTemplate .toJSON ());
125
+ final String versionNumber = oldTemplate .getVersion ().getVersionNumber ();
126
+ final Map <String , Parameter > parameters = getParameters ();
127
+ final Map <String , ParameterGroup > parameterGroups = getParameterGroups ();
128
+ final Version version = getVersion ();
129
+ inputTemplate .setParameters (parameters )
130
+ .setParameterGroups (parameterGroups )
131
+ .setConditions (CONDITIONS )
132
+ .setVersion (version );
133
+ // publish a new template
134
+ Template publishedTemplate = remoteConfig .publishTemplate (inputTemplate );
114
135
115
136
// get template at version
116
137
Template atVersionTemplate = remoteConfig .getTemplateAtVersion (versionNumber );
138
+
117
139
assertEquals (oldTemplate , atVersionTemplate );
118
140
assertEquals (versionNumber , atVersionTemplate .getVersion ().getVersionNumber ());
141
+ assertNotEquals (publishedTemplate , atVersionTemplate );
142
+ }
143
+
144
+ @ Test
145
+ public void testRollbackTemplate () throws FirebaseRemoteConfigException {
146
+ // get template to fetch the active template with correct etag.
147
+ // store the template version number to rollback.
148
+ final Template oldTemplate = remoteConfig .getTemplate ();
149
+ final Template inputTemplate = Template .fromJSON (oldTemplate .toJSON ());
150
+ final String versionNumber = oldTemplate .getVersion ().getVersionNumber ();
151
+ final Map <String , Parameter > parameters = getParameters ();
152
+ final Map <String , ParameterGroup > parameterGroups = getParameterGroups ();
153
+ final Version version = getVersion ();
154
+ inputTemplate .setParameters (parameters )
155
+ .setParameterGroups (parameterGroups )
156
+ .setConditions (CONDITIONS )
157
+ .setVersion (version );
158
+ // publish a new template before rolling back to versionNumber
159
+ Template publishedTemplate = remoteConfig .publishTemplate (inputTemplate );
119
160
120
161
// rollback template
121
162
Template rolledBackTemplate = remoteConfig .rollback (versionNumber );
163
+
122
164
assertEquals (String .format ("Rollback to version %s" , versionNumber ),
123
165
rolledBackTemplate .getVersion ().getDescription ());
124
166
125
167
// get template to verify rollback
126
168
Template activeTemplate = remoteConfig .getTemplate ();
169
+
127
170
assertEquals (rolledBackTemplate , activeTemplate );
171
+ assertNotEquals (publishedTemplate , activeTemplate );
128
172
}
129
173
130
174
@ Test
@@ -196,4 +240,36 @@ public void onSuccess(ListVersionsPage result) {
196
240
assertEquals (versions .size (), collected .get ());
197
241
assertNull (error .get ());
198
242
}
243
+
244
+ private Map <String , Parameter > getParameters () {
245
+ final long timestamp = System .currentTimeMillis ();
246
+ return ImmutableMap .of (
247
+ "welcome_message_text" , new Parameter ()
248
+ .setDefaultValue (ParameterValue
249
+ .of (String .format ("welcome to app %s" , timestamp )))
250
+ .setConditionalValues (ImmutableMap .<String , ParameterValue >of (
251
+ "ios_en" ,
252
+ ParameterValue .of (String .format ("welcome to app en %s" , timestamp ))
253
+ ))
254
+ .setDescription ("text for welcome message!" ),
255
+ "header_text" , new Parameter ()
256
+ .setDefaultValue (ParameterValue .inAppDefault ()));
257
+ }
258
+
259
+ private Map <String , ParameterGroup > getParameterGroups () {
260
+ final long timestamp = System .currentTimeMillis ();
261
+ return ImmutableMap .of (
262
+ "new menu" , new ParameterGroup ()
263
+ .setDescription (String .format ("New Menu %s" , timestamp ))
264
+ .setParameters (ImmutableMap .of (
265
+ "pumpkin_spice_season" , new Parameter ()
266
+ .setDefaultValue (ParameterValue .of ("true" ))
267
+ .setDescription ("Whether it's currently pumpkin spice season." ))
268
+ ));
269
+ }
270
+
271
+ private Version getVersion () {
272
+ final long timestamp = System .currentTimeMillis ();
273
+ return Version .withDescription (String .format ("promo config %s" , timestamp ));
274
+ }
199
275
}
0 commit comments