@@ -42,89 +42,131 @@ public class FirebaseRemoteConfigIT {
4242
4343 private static FirebaseRemoteConfig remoteConfig ;
4444
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-
6845 private static final List <Condition > CONDITIONS = ImmutableList .of (
6946 new Condition ("ios_en" , "device.os == 'ios' && device.country in ['us', 'uk']" )
7047 .setTagColor (TagColor .INDIGO ),
7148 new Condition ("android_en" ,
7249 "device.os == 'android' && device.country in ['us', 'uk']" ));
7350
74- private static final Version VERSION = Version
75- .withDescription (String .format ("promo config %s" , timestamp ));
76-
7751 @ BeforeClass
7852 public static void setUpClass () {
7953 remoteConfig = FirebaseRemoteConfig .getInstance (IntegrationTestUtils .ensureDefaultApp ());
8054 }
8155
8256 @ 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 )
9264 .setConditions (CONDITIONS )
93- .setVersion (VERSION );
65+ .setVersion (expectedVersion );
9466
95- // validate template
9667 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 );
10284
10385 // publish template
10486 Template publishedTemplate = remoteConfig .publishTemplate (inputTemplate );
87+
10588 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 ());
10891 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 );
110110
111111 // get template
112112 Template currentTemplate = remoteConfig .getTemplate ();
113+
113114 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 );
114134
115135 // get template at version
116136 Template atVersionTemplate = remoteConfig .getTemplateAtVersion (versionNumber );
117- assertEquals (oldTemplate , atVersionTemplate );
137+
138+ assertEquals (previousTemplate , atVersionTemplate );
118139 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 );
119158
120159 // rollback template
121160 Template rolledBackTemplate = remoteConfig .rollback (versionNumber );
161+
122162 assertEquals (String .format ("Rollback to version %s" , versionNumber ),
123163 rolledBackTemplate .getVersion ().getDescription ());
124164
125165 // get template to verify rollback
126166 Template activeTemplate = remoteConfig .getTemplate ();
167+
127168 assertEquals (rolledBackTemplate , activeTemplate );
169+ assertNotEquals (publishedTemplate , activeTemplate );
128170 }
129171
130172 @ Test
@@ -196,4 +238,36 @@ public void onSuccess(ListVersionsPage result) {
196238 assertEquals (versions .size (), collected .get ());
197239 assertNull (error .get ());
198240 }
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+ }
199273}
0 commit comments