@Test
  @Category(IntegrationTest.class)
  public void developerEditionAppUserWorks() {
    final String enterpriseId = TestConfig.getEnterpriseID();
    final String clientId = TestConfig.getClientID();
    final String clientSecret = TestConfig.getClientSecret();
    final String privateKey = TestConfig.getPrivateKey();
    final String privateKeyPassword = TestConfig.getPrivateKeyPassword();

    BoxDeveloperEditionConnection appAuthConnection =
        BoxDeveloperEditionConnection.getAppAuthConnection(
            enterpriseId, clientId, clientSecret, privateKey, privateKeyPassword);
    final String name = "app user name two";
    BoxUser.Info createdUserInfo = BoxUser.createAppUser(appAuthConnection, name);
    final String appUserId = createdUserInfo.getID();

    BoxDeveloperEditionConnection api =
        BoxDeveloperEditionConnection.getAppUserConnection(
            appUserId, clientId, clientSecret, privateKey, privateKeyPassword);
    BoxUser appUser = new BoxUser(api, appUserId);

    assertThat(api.getAccessToken(), not(equalTo(null)));

    BoxUser.Info info = appUser.getInfo();

    assertThat(info.getID(), equalTo(appUserId));
    assertThat(info.getName(), equalTo(name));

    api.refresh();

    BoxUser appUserFromAdmin = new BoxUser(appAuthConnection, appUserId);
    appUserFromAdmin.delete(false, true);
  }
  @Test
  @Category(IntegrationTest.class)
  public void successfullySavesAndRestoresConnection() {
    final String originalAccessToken = TestConfig.getAccessToken();
    final String originalRefreshToken = TestConfig.getRefreshToken();
    BoxAPIConnection api =
        new BoxAPIConnection(
            TestConfig.getClientID(),
            TestConfig.getClientSecret(),
            originalAccessToken,
            originalRefreshToken);
    String state = api.save();

    BoxAPIConnection restoredAPI =
        BoxAPIConnection.restore(TestConfig.getClientID(), TestConfig.getClientSecret(), state);
    BoxFolder.Info rootFolderInfo = BoxFolder.getRootFolder(restoredAPI).getInfo();

    TestConfig.setAccessToken(restoredAPI.getAccessToken());
    TestConfig.setRefreshToken(restoredAPI.getRefreshToken());
  }
  @Test
  @Category(IntegrationTest.class)
  public void doesNotRefreshWhenGetAccessTokenIsCalledAndTokenHasNotExpired() {
    final String originalAccessToken = TestConfig.getAccessToken();
    final String originalRefreshToken = TestConfig.getRefreshToken();
    BoxAPIConnection api =
        new BoxAPIConnection(
            TestConfig.getClientID(),
            TestConfig.getClientSecret(),
            originalAccessToken,
            originalRefreshToken);
    api.setExpires(Long.MAX_VALUE);

    String actualAccessToken = api.getAccessToken();
    String actualRefreshToken = api.getRefreshToken();

    assertThat(originalRefreshToken, equalTo(actualRefreshToken));
    assertThat(originalAccessToken, equalTo(actualAccessToken));

    TestConfig.setAccessToken(actualAccessToken);
    TestConfig.setRefreshToken(actualRefreshToken);
  }
  @Test
  @Category(IntegrationTest.class)
  public void refreshSucceeds() {
    final String originalAccessToken = TestConfig.getAccessToken();
    final String originalRefreshToken = TestConfig.getRefreshToken();
    BoxAPIConnection api =
        new BoxAPIConnection(
            TestConfig.getClientID(),
            TestConfig.getClientSecret(),
            originalAccessToken,
            originalRefreshToken);

    api.refresh();

    String actualAccessToken = api.getAccessToken();
    String actualRefreshToken = api.getRefreshToken();

    assertThat(originalRefreshToken, not(equalTo(actualRefreshToken)));
    assertThat(originalAccessToken, not(equalTo(actualAccessToken)));

    TestConfig.setAccessToken(actualAccessToken);
    TestConfig.setRefreshToken(actualRefreshToken);
  }