/**
* personium.io
* Copyright 2014 FUJITSU LIMITED
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.fujitsu.dc.test.jersey.box.odatacol.schema.complextypeproperty;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpStatus;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.odata4j.edm.EdmSimpleType;
import com.fujitsu.dc.core.DcCoreException;
import com.fujitsu.dc.core.model.ctl.ComplexType;
import com.fujitsu.dc.core.model.ctl.Property;
import com.fujitsu.dc.test.categories.Integration;
import com.fujitsu.dc.test.categories.Regression;
import com.fujitsu.dc.test.categories.Unit;
import com.fujitsu.dc.test.jersey.DaoException;
import com.fujitsu.dc.test.jersey.DcRequest;
import com.fujitsu.dc.test.jersey.DcResponse;
import com.fujitsu.dc.test.jersey.DcRunner;
import com.fujitsu.dc.test.jersey.ODataCommon;
import com.fujitsu.dc.test.jersey.box.odatacol.UserDataComplexTypeUtils;
import com.fujitsu.dc.test.setup.Setup;
import com.fujitsu.dc.test.unit.core.UrlUtils;
import com.fujitsu.dc.test.utils.UserDataUtils;
/**
* ComplexTypeProperty登録のテスト.
*/
@RunWith(DcRunner.class)
@Category({Unit.class, Integration.class, Regression.class })
public class ComplexTypePropertyCreateTest extends ODataCommon {
/** ComplexType NameKey名. */
private static final String COMPLEX_TYPE_NAME_KEY = ComplexType.P_COMPLEXTYPE_NAME.getName().toString();
/** ComplexTypeProperty名. */
private static final String CT_PROPERTY_NAME = "ctp_name";
/** ComplexType名. */
private static final String COMPLEX_TYPE_NAME = "address";
/** ComplexTypeリソースURL. */
private static final String CT_LOCATION_URL =
UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, COMPLEX_TYPE_NAME);
/**
* コンストラクタ.
*/
public ComplexTypePropertyCreateTest() {
super("com.fujitsu.dc.core.rs");
}
/**
* すべてのテスト毎に1度実行される処理.
*/
@Before
public void before() {
// ComplexType作成
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(COMPLEX_TYPE_NAME_KEY, COMPLEX_TYPE_NAME);
// リクエスト実行
request(req);
}
/**
* すべてのテスト毎に1度実行される処理.
*/
@After
public void after() {
// 作成したComplexTypeを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(CT_LOCATION_URL).getStatusCode());
}
/**
* ComplexTypePropertyを新規作成して_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyを新規作成して_正常に作成できること() {
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), ctplocationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctplocationUrl).getStatusCode());
}
}
/**
* 既にデータが存在するComplexTypeに対してComplexTypePropertyのNullableをFalseで作成した場合_BadRequestが返却されること.
*/
@Test
public final void 既にデータが存在するComplexTypeに対してComplexTypePropertyのNullableをFalseで作成した場合_BadRequestが返却されること() {
// TODO ComplexTypeユーザデータ作成処理の実装後に本テストを追加すること
}
/**
* ComplexTypePropertyのName属性がない場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのName属性がない場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.INPUT_REQUIRED_FIELD_MISSING.getCode(),
DcCoreException.OData.INPUT_REQUIRED_FIELD_MISSING
.params(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY)
.getMessage());
}
/**
* ComplexTypePropertyのNameが空文字の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのNameが空文字の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, "");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY)
.getMessage());
}
/**
* ComplexTypePropertyのNameが1文字の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのNameが1文字の場合_正常に作成できること() {
String ctPropertyName = "a";
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, ctPropertyName,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, ctPropertyName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, ctPropertyName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのNameが128文字の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのNameが128文字の場合_正常に作成できること() {
String ctPropertyName = STRING_LENGTH_128;
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, ctPropertyName,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, ctPropertyName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, ctPropertyName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのNameが129文字の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのNameが129文字の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, STRING_LENGTH_129);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY)
.getMessage());
}
/**
* ComplexTypePropertyのNameが利用可能な文字種の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのNameが利用可能な文字種の場合_正常に作成できること() {
String ctPropertyName = "abcdefghijklmnopqrstuvwxyz1234567890-_";
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, ctPropertyName,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, ctPropertyName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, ctPropertyName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのNameが半角英数字以外の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのNameが半角英数字以外の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, "ctp.*name");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY)
.getMessage());
}
/**
* ComplexTypePropertyのNameが先頭文字がハイフンの場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのNameが先頭文字がハイフンの場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, "-ctp_name");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY)
.getMessage());
}
/**
* ComplexTypePropertyのNameが先頭文字がアンダーバーの場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのNameが先頭文字がアンダーバーの場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, "_ctp_name");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY)
.getMessage());
}
/**
* 既に同一名のComplexTypePropertyが作成済みの場合_Conflictが返却されること.
*/
@Test
public final void 既に同一名のComplexTypePropertyが作成済みの場合_Conflictが返却されること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
// リクエスト実行
DcResponse response = request(req);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
// リクエスト実行
response = request(req);
// レスポンスチェック
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.ENTITY_ALREADY_EXISTS.getCode(),
DcCoreException.OData.ENTITY_ALREADY_EXISTS.getMessage());
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyの_ComplexTypeName属性がない場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeName属性がない場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.INPUT_REQUIRED_FIELD_MISSING.getCode(),
DcCoreException.OData.INPUT_REQUIRED_FIELD_MISSING.params(
ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY)
.getMessage());
}
/**
* ComplexTypePropertyの_ComplexTypeNameが空文字の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが空文字の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, "");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY).getMessage());
}
/**
* ComplexTypePropertyの_ComplexTypeNameが1文字の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが1文字の場合_正常に作成できること() {
String complexTypeName = "a";
String ctypelocationUrl =
UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, complexTypeName);
String locationUrl = UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, CT_PROPERTY_NAME, complexTypeName);
try {
// ComplexType作成
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(COMPLEX_TYPE_NAME_KEY, complexTypeName);
// リクエスト実行
DcResponse response = request(req);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
// リクエストパラメータ設定
req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctypelocationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyの_ComplexTypeNameが128文字の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが128文字の場合_正常に作成できること() {
String complexTypeName = STRING_LENGTH_128;
String ctypelocationUrl =
UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, complexTypeName);
String locationUrl = UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, CT_PROPERTY_NAME, complexTypeName);
try {
// ComplexType作成
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(COMPLEX_TYPE_NAME_KEY, complexTypeName);
// リクエスト実行
DcResponse response = request(req);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
// リクエストパラメータ設定
req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctypelocationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyの_ComplexTypeNameが129文字の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが129文字の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, STRING_LENGTH_129);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY).getMessage());
}
/**
* ComplexTypePropertyの_ComplexTypeNameが利用可能な文字種の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが利用可能な文字種の場合_正常に作成できること() {
String complexTypeName = "abcdefghijklmnopqrstuvwxyz1234567890-_";
String ctypelocationUrl =
UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, complexTypeName);
String locationUrl = UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, CT_PROPERTY_NAME, complexTypeName);
try {
// ComplexType作成
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(COMPLEX_TYPE_NAME_KEY, complexTypeName);
// リクエスト実行
DcResponse response = request(req);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
// リクエストパラメータ設定
req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctypelocationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyの_ComplexTypeNameが半角英数字以外の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが半角英数字以外の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, "Ad.*s");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY).getMessage());
}
/**
* ComplexTypePropertyの_ComplexTypeNameが先頭文字がハイフンの場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが先頭文字がハイフンの場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, "-address");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY).getMessage());
}
/**
* ComplexTypePropertyの_ComplexTypeNameが先頭文字がアンダーバーの場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが先頭文字がアンダーバーの場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, "_address");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY).getMessage());
}
/**
* ComplexTypePropertyの_ComplexTypeNameが存在しないComplexTypeの場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyの_ComplexTypeNameが存在しないComplexTypeの場合_BadRequestが返却されること() {
String complexTypeName = "xxx";
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.BODY_NTKP_NOT_FOUND_ERROR.getCode(),
DcCoreException.OData.BODY_NTKP_NOT_FOUND_ERROR.params(complexTypeName).getMessage());
}
/**
* ComplexTypePropertyのTypeがEdmBooleanの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmBooleanの場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmSingleの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmSingleの場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmInt32の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmInt32の場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmDateTimeの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmDateTimeの場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.DATETIME.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.DATETIME.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeが不正な値の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのTypeが不正な値の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY, "Edm.Datetime");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY)
.getMessage());
}
/**
* ComplexTypePropertyのTypeが登録済みのComplexTypeの場合_正常に作成されること.
*/
@Test
public final void ComplexTypePropertyのTypeが登録済みのComplexTypeの場合_正常に作成されること() {
String complexTypeName = "ctPropTest";
String complexLocationUrl =
UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, complexTypeName);
String ctpLocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody("Name", complexTypeName);
// リクエスト実行
DcResponse response = request(req);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
// リクエストパラメータ設定
req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY, complexTypeName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY, complexTypeName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), ctpLocationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctpLocationUrl).getStatusCode());
// 作成したComplexTypeを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(complexLocationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのNullableがtrueの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのNullableがtrueの場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのNullableがfalseの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのNullableがfalseの場合_正常に作成できること() {
String complexTypeName = "xxx";
String ctypelocationUrl =
UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA, complexTypeName);
String locationUrl = UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, CT_PROPERTY_NAME, complexTypeName);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(COMPLEX_TYPE_NAME_KEY, complexTypeName);
// リクエスト実行
DcResponse response = request(req);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
// リクエストパラメータ設定
req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, false);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, complexTypeName);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, false);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctypelocationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのNullableが不正な値の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのNullableが不正な値の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, "test");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY)
.getMessage());
}
/**
* ComplexTypePropertyのTypeがEdmStringでDefaultValueが空文字の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmStringでDefaultValueが空文字の場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "");
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最小値を下回る場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最小値を下回る場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "-2147483649");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY).getMessage());
}
/**
* ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最小値の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最小値の場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, -2147483648);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "-2147483648");
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最大値の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最大値の場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, 2147483647);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "2147483647");
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最大値を上回る場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmInt32でDefaultValueが最大値を上回る場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.INT32.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "2147483648");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY).getMessage());
}
/**
* ComplexTypePropertyのTypeがEdmSingleでDefaultValueが整数5桁_小数5桁の場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmSingleでDefaultValueが整数5桁_小数5桁の場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, 11111.11111);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "11111.11111");
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmSingleでDefaultValueが整数が6桁の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmSingleでDefaultValueが整数が6桁の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, 111111.11111);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY).getMessage());
}
/**
* ComplexTypePropertyのTypeがEdmSingleでDefaultValueが小数が6桁の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmSingleでDefaultValueが小数が6桁の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.SINGLE.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, 11111.111111);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY).getMessage());
}
/**
* ComplexTypePropertyのTypeがEdmBooleanでDefaultValueがtrueの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmBooleanでDefaultValueがtrueの場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, true);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "true");
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmBooleanでDefaultValueがfalseの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmBooleanでDefaultValueがfalseの場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, false);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "false");
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのTypeがEdmBooleanでDefaultValueが不正な値の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのTypeがEdmBooleanでDefaultValueが不正な値の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "test");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY).getMessage());
}
/**
* ComplexTypePropertyのCollectionKindがNoneの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのCollectionKindがNoneの場合_正常に作成できること() {
String locationUrl = UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, CT_PROPERTY_NAME, COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
deleteOdataResource(locationUrl).getStatusCode();
}
}
/**
* ComplexTypePropertyのCollectionKindがListの場合_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのCollectionKindがListの場合_正常に作成できること() {
String locationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, "List");
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, "List");
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), locationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(locationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのCollectionKindが不正な値の場合_BadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyのCollectionKindが不正な値の場合_BadRequestが返却されること() {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, "test");
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
checkErrorResponse(
response.bodyAsJson(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.getCode(),
DcCoreException.OData.REQUEST_FIELD_FORMAT_ERROR.params(
ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY).getMessage());
}
/**
* ComplexTypePropertyを文字列型で作成後に真偽値型で再作成した場合にBadRequestが返却されること.
*/
@Test
public final void ComplexTypePropertyを文字列型で作成後に真偽値型で再作成した場合にBadRequestが返却されること() {
try {
// 1階層のComplexTypeSchemaを作成する
UserDataComplexTypeUtils.createComplexTypeSchema(UserDataComplexTypeUtils.ENTITY_TYPE_NAME,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME, UserDataComplexTypeUtils.ET_STRING_PROP,
UserDataComplexTypeUtils.ET_CT1ST_PROP, UserDataComplexTypeUtils.CT1ST_STRING_PROP);
// 文字列型で作成したComplexTypePropertyを削除する
String ctplocationUrl = UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
UserDataComplexTypeUtils.CT1ST_STRING_PROP, UserDataComplexTypeUtils.COMPLEX_TYPE_NAME);
ODataCommon.deleteOdataResource(ctplocationUrl);
// complexTypePropertyをBoolean型で再作成する
DcResponse response = UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1,
Setup.TEST_ODATA, UserDataComplexTypeUtils.CT1ST_STRING_PROP,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
EdmSimpleType.BOOLEAN.getFullyQualifiedTypeName(), false, null, null);
// レスポンスチェック
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
} finally {
// 作成したComplexTypeSchemaを削除する
UserDataComplexTypeUtils.deleteComplexTypeSchema();
}
}
/**
* Cellをまたがって同じ名前のComplexTypePropertyを追加した場合に正常に作成できること.
*/
@Test
public final void Cellをまたがって同じ名前のComplexTypePropertyを追加した場合に正常に作成できること() {
// 作成するComplexType/ComplexTypePropertyのリソースURL
String ctlocationUrl =
UrlUtils.complexType(Setup.TEST_CELL2, Setup.TEST_BOX1, Setup.TEST_ODATA,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME);
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL2, Setup.TEST_BOX1, Setup.TEST_ODATA,
UserDataComplexTypeUtils.CT1ST_STRING_PROP,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME);
try {
// 1階層のComplexTypeSchemaを作成する
UserDataComplexTypeUtils.createComplexTypeSchema(UserDataComplexTypeUtils.ENTITY_TYPE_NAME,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME, UserDataComplexTypeUtils.ET_STRING_PROP,
UserDataComplexTypeUtils.ET_CT1ST_PROP, UserDataComplexTypeUtils.CT1ST_STRING_PROP);
// Cell2にComplexTypeを作成する
UserDataUtils.createComplexType(Setup.TEST_CELL2, Setup.TEST_BOX1,
Setup.TEST_ODATA, UserDataComplexTypeUtils.COMPLEX_TYPE_NAME);
// Cellのみ異なる同じ名前のComplexTypePropertyを作成する
DcResponse response = UserDataUtils.createComplexTypeProperty(Setup.TEST_CELL2, Setup.TEST_BOX1,
Setup.TEST_ODATA, UserDataComplexTypeUtils.CT1ST_STRING_PROP,
UserDataComplexTypeUtils.COMPLEX_TYPE_NAME,
EdmSimpleType.STRING.getFullyQualifiedTypeName(), false, null, null);
// レスポンスチェック
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
} finally {
// 作成したデータを削除
deleteOdataResource(ctplocationUrl).getStatusCode();
deleteOdataResource(ctlocationUrl).getStatusCode();
UserDataComplexTypeUtils.deleteComplexTypeSchema();
}
}
/**
* ComplexTypePropertyを階層最大値まで新規作成して_正常に作成できること.
*/
@Test
public final void ComplexTypePropertyを階層最大値まで新規作成して_正常に作成できること() {
final int repeatCount = 20;
// 結びつけるComplexType作成
// リクエストパラメータ設定
DcRequest req0 = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req0.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req0.addJsonBody(COMPLEX_TYPE_NAME_KEY, "testComplexType");
// リクエスト実行
request(req0);
try {
DcResponse response = null;
// リクエストパラメータ設定
for (int i = 0; i < repeatCount; i++) {
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY, "testComplexType");
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
try {
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
} catch (Error e) {
fail(">>> loop count : " + i);
}
}
} finally {
// 作成したComplexTypePropertyを削除
for (int i = 0; i < repeatCount; i++) {
try {
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME + i,
COMPLEX_TYPE_NAME);
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctplocationUrl).getStatusCode());
} catch (Exception e) {
System.out.println(">>> " + i);
}
}
// 作成したComplexTypeを削除
String complexTypeUrl = UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
"testComplexType");
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(complexTypeUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyを階層最大値を超えるまで新規作成して_異常を検知できること.
*/
@Test
public final void ComplexTypePropertyを階層最大値を超えるまで新規作成して_異常を検知できること() {
final int repeatCount = 21;
// 結びつけるComplexType作成
// リクエストパラメータ設定
DcRequest req0 = DcRequest.post(ComplexTypePropertyUtils.CT_REQUEST_URL);
req0.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req0.addJsonBody(COMPLEX_TYPE_NAME_KEY, "testComplexType");
// リクエスト実行
request(req0);
try {
DcResponse response = null;
// リクエストパラメータ設定
for (int i = 0; i < repeatCount; i++) {
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY, "testComplexType");
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
if (i < repeatCount - 1) {
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
} else {
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
}
}
} finally {
// 作成したComplexTypePropertyを削除
for (int i = 0; i < repeatCount - 1; i++) {
try {
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME + i,
COMPLEX_TYPE_NAME);
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctplocationUrl).getStatusCode());
} catch (Exception e) {
System.out.println(">>> " + i);
}
}
// 作成したComplexTypeを削除
String complexTypeUrl = UrlUtils.complexType(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
"testComplexType");
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(complexTypeUrl).getStatusCode());
}
}
/**
* Simple型のComplexTypePropertyを階層最大値まで新規作成して_正常に作成できること.
*/
@Test
public final void Simple型のComplexTypePropertyを階層最大値まで新規作成して_正常に作成できること() {
final int repeatCount = 50;
try {
DcResponse response = null;
// リクエストパラメータ設定
for (int i = 0; i < repeatCount; i++) {
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
try {
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
} catch (Error e) {
fail(">>> loop count : " + i);
}
}
} finally {
// 作成したComplexTypePropertyを削除
for (int i = 0; i < repeatCount; i++) {
try {
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME + i,
COMPLEX_TYPE_NAME);
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctplocationUrl).getStatusCode());
} catch (Exception e) {
System.out.println(">>> " + i);
}
}
}
}
/**
* SimpleTypeのComplexTypePropertyを階層最大値を超えるまで新規作成して_異常を検知できること.
*/
@Test
public final void SimpleTypeのComplexTypePropertyを階層最大値を超えるまで新規作成して_異常を検知できること() {
final int repeatCount = 51;
try {
DcResponse response = null;
// リクエストパラメータ設定
for (int i = 0; i < repeatCount; i++) {
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
// リクエスト実行
response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME + i);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
if (i < repeatCount - 1) {
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
} else {
assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusCode());
}
}
} finally {
// 作成したComplexTypePropertyを削除
for (int i = 0; i < repeatCount - 1; i++) {
try {
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME + i,
COMPLEX_TYPE_NAME);
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctplocationUrl).getStatusCode());
} catch (Exception e) {
System.out.println(">>> " + i);
}
}
}
}
/**
* ComplexTypeProperty登録でDefaulltValueに制御コードを指定した場合_レスポンスボディがエスケープされること.
* @throws DaoException レスポンスボディのパースに失敗
*/
@Test
public final void ComplexTypeProperty登録でDefaulltValueに制御コードを指定した場合_レスポンスボディがエスケープされること() throws DaoException {
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.STRING.getFullyQualifiedTypeName());
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, false);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, "\u0000");
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, null);
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
String resBody = response.bodyAsString();
assertTrue(resBody.contains("\\u0000"));
assertFalse(resBody.contains("\u0000"));
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctplocationUrl).getStatusCode());
}
}
/**
* ComplexTypePropertyのEdm.Doubleの場合に正常に作成できること.
*/
@Test
public final void ComplexTypePropertyのEdm_Doubleの場合に正常に作成できること() {
String ctplocationUrl =
UrlUtils.complexTypeProperty(Setup.TEST_CELL1, Setup.TEST_BOX1, Setup.TEST_ODATA,
CT_PROPERTY_NAME,
COMPLEX_TYPE_NAME);
try {
// リクエストパラメータ設定
DcRequest req = DcRequest.post(ComplexTypePropertyUtils.CTP_REQUEST_URL);
req.header(HttpHeaders.AUTHORIZATION, BEARER_MASTER_TOKEN);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
req.addJsonBody(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.DOUBLE.getFullyQualifiedTypeName());
// リクエスト実行
DcResponse response = request(req);
// レスポンスチェック
Map<String, Object> expected = new HashMap<String, Object>();
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NAME_KEY, CT_PROPERTY_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COMPLEXTYPE_NAME_KEY, COMPLEX_TYPE_NAME);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_TYPE_KEY,
EdmSimpleType.DOUBLE.getFullyQualifiedTypeName());
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_NULLABLE_KEY, true);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_DEFAULT_VALUE_KEY, null);
expected.put(ComplexTypePropertyUtils.CT_PROPERTY_COLLECTION_KIND_KEY, Property.COLLECTION_KIND_NONE);
assertEquals(HttpStatus.SC_CREATED, response.getStatusCode());
checkResponseBody(response.bodyAsJson(), ctplocationUrl, ComplexTypePropertyUtils.NAMESPACE, expected);
} finally {
// 作成したComplexTypePropertyを削除
assertEquals(HttpStatus.SC_NO_CONTENT, deleteOdataResource(ctplocationUrl).getStatusCode());
}
}
}