/** * 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); } }
/** * 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); }
/** * 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()); }
/** * 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); }
/** * 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; }