예제 #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;
  }
  /** 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);
    }
  }
예제 #3
0
  /**
   * Propertyを取得する.
   *
   * @param token トークン
   * @param cell セル名
   * @param box ボックス名
   * @param collection コレクション名
   * @param query クエリ
   * @return レスポンス
   */
  public static DcResponse list(
      String token, String cell, String box, String collection, String query) {
    String locationUrl = UrlUtils.property(cell, box, collection, null, null);
    if (null != query) {
      locationUrl += query;
    }

    // Property取得
    DcRequest req = DcRequest.get(locationUrl);
    req.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
    req.header(HttpHeaders.AUTHORIZATION, OAuth2Helper.Scheme.BEARER + " " + token);
    return AbstractCase.request(req);
  }
예제 #4
0
  /**
   * Propertyを取得する.
   *
   * @param token トークン
   * @param cell セル名
   * @param box ボックス名
   * @param collection コレクション名
   * @param propertyName Property名
   * @param entityTypeName EntityType名
   * @return レスポンス
   */
  public static DcResponse get(
      String token,
      String cell,
      String box,
      String collection,
      String propertyName,
      String entityTypeName) {
    String locationUrl = UrlUtils.property(cell, box, collection, propertyName, entityTypeName);

    // Property取得
    DcRequest req = DcRequest.get(locationUrl);
    req.header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
    req.header(HttpHeaders.AUTHORIZATION, OAuth2Helper.Scheme.BEARER + " " + token);
    return AbstractCase.request(req);
  }
  /** ユーザスキーマメタデータの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());
  }
예제 #6
0
  /**
   * Propertyを更新する.
   *
   * @param token トークン
   * @param cell セル名
   * @param box ボックス名
   * @param collection コレクション名
   * @param srcPropertyName 更新前Property名
   * @param srcEntityTypeName 更新前EntityType名
   * @param body リクエストボディ
   * @return レスポンス
   */
  public static DcResponse update(
      String token,
      String cell,
      String box,
      String collection,
      String srcPropertyName,
      String srcEntityTypeName,
      JSONObject body) {

    // リクエストパラメータ設定
    DcRequest req =
        DcRequest.put(UrlUtils.property(cell, box, collection, srcPropertyName, srcEntityTypeName));
    req.header(HttpHeaders.AUTHORIZATION, OAuth2Helper.Scheme.BEARER + " " + token);
    req.header(HttpHeaders.IF_MATCH, "*");
    req.addStringBody(body.toJSONString());

    // リクエスト実行
    return AbstractCase.request(req);
  }
예제 #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;
  }