public CustomApiTests() {
    super("Custom API tests");

    apiNames = new HashMap<CustomApiTests.ApiPermissions, String>();
    apiNames.put(ApiPermissions.Admin, ADMIN_API_NAME);
    apiNames.put(ApiPermissions.User, USER_API_NAME);
    apiNames.put(ApiPermissions.Application, APP_API_NAME);
    apiNames.put(ApiPermissions.Public, PUBLIC_API_NAME);

    Random rndGen = new Random();

    this.addTest(LoginTests.createLogoutTest());

    for (ApiPermissions permission : ApiPermissions.values()) {
      for (int i = 0; i < 10; i++) {
        this.addTest(createJsonApiTest(permission, false, rndGen, i));
      }
    }

    TestCase loginTest = LoginTests.createLoginTest(MobileServiceAuthenticationProvider.Facebook);
    loginTest.setCanRunUnattended(false);
    this.addTest(loginTest);
    TestCase apiAuthenticatedTest = createJsonApiTest(ApiPermissions.User, true, rndGen, 0);
    apiAuthenticatedTest.setCanRunUnattended(false);
    this.addTest(apiAuthenticatedTest);
    this.addTest(LoginTests.createLogoutTest());

    for (TypedTestType testType : TypedTestType.values()) {
      this.addTest(createTypedApiTest(rndGen, testType));
    }

    for (DataFormat inputFormat : DataFormat.values()) {
      for (DataFormat outputFormat : DataFormat.values()) {
        this.addTest(createHttpContentApiTest(inputFormat, outputFormat, rndGen));
      }
    }
  }