Esempio n. 1
0
  /**
   * Propertyを登録する.
   *
   * @param token トークン
   * @param cell セル名
   * @param box ボックス名
   * @param collection コレクション名
   * @param entityTypeName EntityType名
   * @param propertyName Property名
   * @param type PropertyのType項目
   * @param nullable PropertyのNullable項目
   * @param defaultValue PropertyのDefaultValue項目
   * @param collectionKind PropertyのcollectionKind項目
   * @param isKey PropertyのisKey項目
   * @param uniqueKey PropertyのUniqueKey項目
   * @param code 期待するレスポンスコード
   * @return レスポンス
   */
  public static DcResponse create(
      String token,
      String cell,
      String box,
      String collection,
      String entityTypeName,
      String propertyName,
      String type,
      boolean nullable,
      Object defaultValue,
      String collectionKind,
      boolean isKey,
      String uniqueKey,
      int code) {

    String url = UrlUtils.property(cell, box, collection, null, null);
    DcRequest req = DcRequest.post(url);
    req.header(HttpHeaders.AUTHORIZATION, token);
    req.addJsonBody(PROPERTY_NAME_KEY, propertyName);
    req.addJsonBody(PROPERTY_ENTITYTYPE_NAME_KEY, entityTypeName);
    req.addJsonBody(PROPERTY_TYPE_KEY, type);
    req.addJsonBody(PROPERTY_NULLABLE_KEY, nullable);
    req.addJsonBody(PROPERTY_DEFAULT_VALUE_KEY, defaultValue);
    req.addJsonBody(PROPERTY_COLLECTION_KIND_KEY, collectionKind);
    req.addJsonBody(PROPERTY_IS_KEY_KEY, isKey);
    req.addJsonBody(PROPERTY_UNIQUE_KEY_KEY, uniqueKey);

    // リクエスト実行
    DcResponse response = AbstractCase.request(req);
    if (code != -1) {
      assertEquals(code, response.getStatusCode());
    }
    return response;
  }
  /** UserDataに完全一致検索クエリのキーを真偽値falseで指定して対象のデータのみ取得できること. */
  @Test
  public final void UserDataに完全一致検索クエリのキーを真偽値falseで指定して対象のデータのみ取得できること() {
    String entityTypeName = "boolFilterTest";
    try {
      // Boolean検索のテスト用データを作成する
      createTestData(entityTypeName);

      // 取得対象のデータに対する検索を実施する
      // ユーザデータの一覧取得
      String searchRequestUrl =
          UrlUtils.userData(cellName, boxName, colName, entityTypeName)
              + "?$filter=bool+eq+false&$inlinecount=allpages";
      DcRequest req = DcRequest.get(searchRequestUrl);
      req.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
      req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
      DcResponse searchResponse = request(req);
      assertEquals(HttpStatus.SC_OK, searchResponse.getStatusCode());
      JSONObject responseBody = searchResponse.bodyAsJson();

      // ヒットしたデータが1件であることを確認する
      String count = (String) ((JSONObject) responseBody.get("d")).get("__count");
      assertEquals("1", count);

      // 期待したデータが取得できたことを確認する
      JSONArray results = (JSONArray) ((JSONObject) responseBody.get("d")).get("results");
      assertEquals("boolFalse", (String) ((JSONObject) results.get(0)).get("__id"));
      assertEquals(false, (Boolean) ((JSONObject) results.get(0)).get("bool"));
    } finally {
      deleteTestData(entityTypeName);
    }
  }
  /** serviceコレクション配下のリソースのMOVEで405エラーとなること. */
  @Test
  public final void serviceコレクション配下のリソースのMOVEで405エラーとなること() {
    final String srcCol = "srcColName";
    final String destColName = "destColName";
    final String destUrl = UrlUtils.box(CELL_NAME, BOX_NAME, destColName);
    try {
      // 事前準備
      DavResourceUtils.createServiceCollection(
          AbstractCase.BEARER_MASTER_TOKEN, HttpStatus.SC_CREATED, CELL_NAME, BOX_NAME, srcCol);

      // 移動
      // このリソースはサービス実行用であるが、MOVEメソッドは実行対象外としているため405が返却される。
      String srcUrl = UrlUtils.box(CELL_NAME, BOX_NAME, srcCol, "dummyResource");
      DcRequest req = DcRequest.move(srcUrl);
      req.header(HttpHeaders.AUTHORIZATION, AbstractCase.BEARER_MASTER_TOKEN);
      req.header(HttpHeaders.DESTINATION, destUrl);
      req.header(HttpHeaders.OVERWRITE, "F");
      DcResponse response = AbstractCase.request(req);

      assertThat(response.getStatusCode()).isEqualTo(HttpStatus.SC_METHOD_NOT_ALLOWED);
      DcCoreException expectedException = DcCoreException.Misc.METHOD_NOT_ALLOWED;
      ODataCommon.checkErrorResponseBody(
          response, expectedException.getCode(), expectedException.getMessage());
    } finally {
      DavResourceUtils.deleteCollection(CELL_NAME, BOX_NAME, srcCol, TOKEN, -1);
    }
  }
 /** UserDataに完全一致検索クエリのキーに文字列hogeを指定した場合ステータスコード400が返却されること. */
 @Test
 public final void UserDataに完全一致検索クエリのキーに文字列hogeを指定した場合ステータスコード400が返却されること() {
   // 取得対象のデータに対する検索を実施する
   // ユーザデータの一覧取得
   String entityTypeName = "SalesDetail";
   String searchRequestUrl =
       UrlUtils.userData(cellName, boxName, colName, entityTypeName)
           + "?$filter=truth+eq+%27hoge%27&$inlinecount=allpages";
   DcRequest req = DcRequest.get(searchRequestUrl);
   req.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
   req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
   DcResponse searchResponse = request(req);
   assertEquals(HttpStatus.SC_BAD_REQUEST, searchResponse.getStatusCode());
 }
Esempio n. 5
0
  /** 小文字Cell名で作成したCellに対してCellレベルAPIが利用できること. */
  @Test
  public final void 小文字Cell名で作成したCellに対してCellレベルAPIが利用できること() {
    // 小文字Cell名のCellを作成
    DcRequest req = DcRequest.post(UrlUtils.unitCtl(Cell.EDM_TYPE_NAME));
    cellNormal(req, cellNameLower);

    // 小文字Cell名を指定してBoxの一覧取得を実行
    req = DcRequest.get(UrlUtils.cellCtl(cellNameLower, "Box"));
    req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
    DcResponse response = request(req);

    // 200になることを確認
    assertEquals(HttpStatus.SC_OK, response.getStatusCode());
  }
  /** ユーザスキーマメタデータのMOVEで405エラーとなること. */
  @Test
  public final void ユーザスキーマメタデータのMOVEで405エラーとなること() {
    final String destColName = "destColName";
    final String destUrl = UrlUtils.box(CELL_NAME, BOX_NAME, destColName);
    // 移動
    String srcUrl = UrlUtils.box(CELL_NAME, BOX_NAME, Setup.TEST_ODATA, "$metadata/$metadata");
    DcRequest req = DcRequest.move(srcUrl);
    req.header(HttpHeaders.AUTHORIZATION, AbstractCase.BEARER_MASTER_TOKEN);
    req.header(HttpHeaders.DESTINATION, destUrl);
    req.header(HttpHeaders.OVERWRITE, "F");
    DcResponse response = AbstractCase.request(req);

    assertThat(response.getStatusCode()).isEqualTo(HttpStatus.SC_METHOD_NOT_ALLOWED);
    DcCoreException expectedException = DcCoreException.Misc.METHOD_NOT_ALLOWED;
    ODataCommon.checkErrorResponseBody(
        response, expectedException.getCode(), expectedException.getMessage());
  }
Esempio n. 7
0
  /**
   * Propertyを削除する.
   *
   * @param token トークン
   * @param cell セル名
   * @param box ボックス名
   * @param collection コレクション名
   * @param entityTypeName EntityType名
   * @param propertyName Property名
   * @param code 期待するレスポンスコード
   * @return レスポンス
   */
  public static DcResponse delete(
      String token,
      String cell,
      String box,
      String collection,
      String entityTypeName,
      String propertyName,
      int code) {

    String url = UrlUtils.property(cell, box, collection, propertyName, entityTypeName);
    DcRequest req = DcRequest.delete(url);
    req.header(HttpHeaders.AUTHORIZATION, token);

    // リクエスト実行
    DcResponse response = AbstractCase.request(req);
    if (code != -1) {
      assertEquals(code, response.getStatusCode());
    }
    return response;
  }