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