2222import static org .junit .Assert .assertTrue ;
2323import static org .junit .Assert .fail ;
2424
25+ import com .google .firebase .testing .TestUtils ;
2526import com .google .firebase .ErrorCode ;
2627import com .google .firebase .FirebaseApp ;
2728import com .google .firebase .FirebaseOptions ;
@@ -44,6 +45,10 @@ public class FirebaseRemoteConfigTest {
4445 private static final FirebaseRemoteConfigException TEST_EXCEPTION =
4546 new FirebaseRemoteConfigException (ErrorCode .INTERNAL , "Test error message" );
4647
48+ private static final String MOCK_SERVER_TEMPLATE_RESPONSE = TestUtils
49+ .loadResource ("getServerRemoteConfig.json" );
50+
51+
4752 @ After
4853 public void tearDown () {
4954 TestOnlyImplFirebaseTrampolines .clearInstancesForTest ();
@@ -80,6 +85,19 @@ public void testDefaultRemoteConfigClient() {
8085 assertEquals (expectedUrl , ((FirebaseRemoteConfigClientImpl ) client ).getRemoteConfigUrl ());
8186 }
8287
88+ @ Test
89+ public void testDefaultServerRemoteConfigClient () {
90+ FirebaseApp app = FirebaseApp .initializeApp (TEST_OPTIONS , "custom-app" );
91+ FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig .getInstance (app );
92+
93+ FirebaseRemoteConfigClient client = remoteConfig .getRemoteConfigClient ();
94+
95+ assertTrue (client instanceof FirebaseRemoteConfigClientImpl );
96+ assertSame (client , remoteConfig .getRemoteConfigClient ());
97+ String expectedUrl = "https://firebaseremoteconfig.googleapis.com/v1/projects/test-project/namespaces/firebase-server/serverRemoteConfig" ;
98+ assertEquals (expectedUrl , ((FirebaseRemoteConfigClientImpl ) client ).getServerRemoteConfigUrl ());
99+ }
100+
83101 @ Test
84102 public void testAppDelete () {
85103 FirebaseApp app = FirebaseApp .initializeApp (TEST_OPTIONS , "custom-app" );
@@ -597,4 +615,76 @@ private FirebaseRemoteConfig getRemoteConfig(FirebaseRemoteConfigClient client)
597615 FirebaseApp app = FirebaseApp .initializeApp (TEST_OPTIONS );
598616 return new FirebaseRemoteConfig (app , client );
599617 }
618+
619+
620+ // Get Server template tests
621+
622+ @ Test
623+ public void testGetServerTemplate () throws FirebaseRemoteConfigException {
624+ String TEST_SERVER_TEMPLATE = "{\n " +
625+ " \" etag\" : \" etag-123456789012-1\" ,\n " +
626+ " \" parameters\" : {},\n " +
627+ " \" serverConditions\" : [],\n " +
628+ " \" parameterGroups\" : {}\n " +
629+ "}" ;
630+ MockRemoteConfigClient client = MockRemoteConfigClient .fromServerTemplate (
631+ new ServerTemplateData ().setETag (TEST_ETAG ).toJSON ());
632+ FirebaseRemoteConfig remoteConfig = getRemoteConfig (client );
633+
634+ ServerTemplate template = remoteConfig .getServerTemplate ();
635+ String templateData = template .toJson ();
636+ assertEquals (TEST_SERVER_TEMPLATE , templateData );
637+ }
638+
639+ @ Test
640+ public void testGetServerTemplate1 () throws FirebaseRemoteConfigException {
641+ MockRemoteConfigClient client = MockRemoteConfigClient .fromTemplate (
642+ new Template ().setETag (TEST_ETAG ));
643+ FirebaseRemoteConfig remoteConfig = getRemoteConfig (client );
644+
645+ Template template = remoteConfig .getTemplate ();
646+
647+ assertEquals (TEST_ETAG , template .getETag ());
648+ }
649+
650+ @ Test
651+ public void testGetServerTemplateFailure () {
652+ MockRemoteConfigClient client = MockRemoteConfigClient .fromException (TEST_EXCEPTION );
653+ FirebaseRemoteConfig remoteConfig = getRemoteConfig (client );
654+
655+ try {
656+ remoteConfig .getServerTemplate ();
657+ } catch (FirebaseRemoteConfigException e ) {
658+ assertSame (TEST_EXCEPTION , e );
659+ }
660+ }
661+
662+ @ Test
663+ public void testGetServerTemplateAsync () throws Exception {
664+ String TEST_SERVER_TEMPLATE = "{\n " +
665+ " \" etag\" : \" etag-123456789012-1\" ,\n " +
666+ " \" parameters\" : {},\n " +
667+ " \" serverConditions\" : [],\n " +
668+ " \" parameterGroups\" : {}\n " +
669+ "}" ;
670+ MockRemoteConfigClient client = MockRemoteConfigClient .fromServerTemplate (
671+ new ServerTemplateData ().setETag (TEST_ETAG ).toJSON ());
672+ FirebaseRemoteConfig remoteConfig = getRemoteConfig (client );
673+
674+ ServerTemplate template = remoteConfig .getServerTemplateAsync ().get ();
675+ String templateData = template .toJson ();
676+ assertEquals (TEST_SERVER_TEMPLATE , templateData );
677+ }
678+
679+ @ Test
680+ public void testGetServerTemplateAsyncFailure () throws InterruptedException {
681+ MockRemoteConfigClient client = MockRemoteConfigClient .fromException (TEST_EXCEPTION );
682+ FirebaseRemoteConfig remoteConfig = getRemoteConfig (client );
683+
684+ try {
685+ remoteConfig .getServerTemplateAsync ().get ();
686+ } catch (ExecutionException e ) {
687+ assertSame (TEST_EXCEPTION , e .getCause ());
688+ }
689+ }
600690}
0 commit comments