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