@Test
  public void remoteConnectionSettingsPersistence() throws Exception {
    final GlobalConfigurationResource gcr1 = getCurrentSettings();
    final RemoteConnectionSettings rcs1 = gcr1.getGlobalConnectionSettings();

    rcs1.setConnectionTimeout(100);
    rcs1.setQueryString("foo=bar");
    rcs1.setRetrievalRetryCount(10);
    rcs1.setUserAgentString("foo");

    assertThat(save(gcr1).getCode(), isSuccessfulCode());

    final GlobalConfigurationResource gcr2 = getCurrentSettings();
    final RemoteConnectionSettings rcs2 = gcr2.getGlobalConnectionSettings();

    assertThat(rcs2.getConnectionTimeout(), is(equalTo(rcs1.getConnectionTimeout())));
    assertThat(rcs2.getQueryString(), is(equalTo(rcs1.getQueryString())));
    assertThat(rcs2.getRetrievalRetryCount(), is(equalTo(rcs1.getRetrievalRetryCount())));
    assertThat(rcs2.getUserAgentString(), is(equalTo(rcs1.getUserAgentString())));

    // NEXUS-3427: ensure that query string/user agent can be reset
    rcs2.setQueryString(null);
    rcs2.setUserAgentString(null);

    assertThat(save(gcr2).getCode(), isSuccessfulCode());

    final GlobalConfigurationResource gcr3 = getCurrentSettings();
    final RemoteConnectionSettings rcs3 = gcr3.getGlobalConnectionSettings();

    assertThat(rcs3.getConnectionTimeout(), is(equalTo(rcs2.getConnectionTimeout())));
    assertThat(rcs3.getQueryString(), is(equalTo(rcs2.getQueryString())));
    assertThat(rcs3.getRetrievalRetryCount(), is(equalTo(rcs2.getRetrievalRetryCount())));
    assertThat(rcs3.getUserAgentString(), is(equalTo(rcs2.getUserAgentString())));
  }