/**
* 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.cell.auth;
import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import javax.ws.rs.core.MediaType;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpStatus;
import org.junit.After;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import com.fujitsu.dc.core.auth.OAuth2Helper;
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.AbstractCase;
import com.fujitsu.dc.test.jersey.DcException;
import com.fujitsu.dc.test.jersey.DcResponse;
import com.fujitsu.dc.test.jersey.DcRunner;
import com.fujitsu.dc.test.jersey.bar.BarInstallTestUtils;
import com.fujitsu.dc.test.setup.Setup;
import com.fujitsu.dc.test.unit.core.UrlUtils;
import com.fujitsu.dc.test.utils.BoxUtils;
import com.fujitsu.dc.test.utils.CellUtils;
import com.fujitsu.dc.test.utils.DavResourceUtils;
import com.fujitsu.dc.test.utils.ResourceUtils;
import com.fujitsu.dc.test.utils.RoleUtils;
import com.fujitsu.dc.test.utils.SentMessageUtils;
import com.fujitsu.dc.test.utils.TResponse;
import com.sun.jersey.test.framework.JerseyTest;
/**
* Basic認証のCellレベルのリソースに対するテスト.
*/
@RunWith(DcRunner.class)
@Category({Unit.class, Integration.class, Regression.class })
public class BasicAuthCellLevelTest extends JerseyTest {
private String cellName = Setup.TEST_CELL_BASIC;
private String userName = "account4";
private String password = "password4";
private String authorization = "Basic "
+ Base64.encodeBase64String(String.format(("%s:%s"), userName, password).getBytes());
/**
* コンストラクタ.
*/
public BasicAuthCellLevelTest() {
super("com.fujitsu.dc.core.rs");
}
/**
* すべてのテスト終了後に呼び出される.
*/
@After
public void after() {
// CellのACLをデフォルトに戻す
CellUtils.setAclDefault(cellName, AbstractCase.MASTER_TOKEN_NAME);
}
/**
* Basic認証_認証APIの操作_正常系.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証_認証APIの操作_正常系() throws DcException {
String authTargetCell = Setup.TEST_CELL1;
String authSchemaCell = Setup.TEST_CELL_SCHEMA1;
String authSchemaAccount = "account0";
String authSchemaPassword = "password0";
// __auth(スキーマ認証)
DcResponse dcRes = CellUtils.schemaAuthenticateWithBasic(
authTargetCell, "account4", "password4",
authSchemaCell, authSchemaAccount, authSchemaPassword);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
// __authz
HashMap<String, String> authorizationHeader = new HashMap<String, String>();
authorizationHeader.put(HttpHeaders.AUTHORIZATION, authorization);
dcRes = CellUtils.implicitflowAuthenticate(authTargetCell, authSchemaCell, authSchemaAccount,
authSchemaPassword, "__/redirect.html", ImplicitFlowTest.DEFAULT_STATE, authorizationHeader);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(dcRes.getFirstHeader(HttpHeaders.LOCATION)).contains("access_token");
}
/**
* Basic認証_認証APIの操作_異常系.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証_認証APIの操作_異常系() throws DcException {
String authTargetCell = Setup.TEST_CELL1;
String authSchemaCell = Setup.TEST_CELL_SCHEMA1;
String authSchemaAccount = "account0";
String authSchemaPassword = "password0";
// __auth(スキーマ認証)
// 認証失敗時:400が返却され、WWW-Authenticateヘッダー(Auth Scheme: Basic)が付与される。
DcResponse dcRes = CellUtils.schemaAuthenticateWithBasic(
authTargetCell, "account4", "invlid_password",
authSchemaCell, authSchemaAccount, authSchemaPassword);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_BAD_REQUEST);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
AuthTestCommon.waitForAccountLock();
// __authz
// 認証失敗時:200でHTMLが返却される。この際、HTML中にメッセージが付与される。
// また、WWW-Authenticateヘッダーは付与されない。
HashMap<String, String> authorizationHeader = new HashMap<String, String>();
authorizationHeader.put(HttpHeaders.AUTHORIZATION, authorization);
dcRes = CellUtils.implicitflowAuthenticate(authTargetCell, authSchemaCell, authSchemaAccount,
"invalid_password", "__/redirect.html", ImplicitFlowTest.DEFAULT_STATE, authorizationHeader);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
assertEquals(MediaType.TEXT_HTML + ";charset=UTF-8", dcRes.getFirstHeader(HttpHeaders.CONTENT_TYPE));
ImplicitFlowTest.checkHtmlBody(dcRes, "PS-AU-0004", authTargetCell);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
AuthTestCommon.waitForAccountLock();
}
/**
* Basic認証ーBoxURL取得の操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーBoxURL取得の操作() throws DcException {
String schemaCell = Setup.TEST_CELL_SCHEMA1;
String schemaBox = "schemaBox";
try {
// 事前準備
BoxUtils.createWithSchema(cellName, schemaBox, AbstractCase.MASTER_TOKEN_NAME,
UrlUtils.cellRoot(schemaCell));
// 401エラーとなること
DcResponse dcRes = CellUtils.getBoxUrl(cellName, schemaCell, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
DavResourceUtils.setACLPrivilegeAllForAllUser(cellName, AbstractCase.MASTER_TOKEN_NAME, HttpStatus.SC_OK,
cellName + "/" + schemaBox, "");
dcRes = CellUtils.getBoxUrl(cellName, schemaCell, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
} finally {
BoxUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, schemaBox, -1);
}
}
/**
* Basic認証ーBoxインストールの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーBoxインストールの操作() throws DcException {
String boxName = "installBox";
String location = null;
try {
// 401エラーとなること
TResponse res = CellUtils.boxInstall(cellName, boxName, authorization).statusCode(
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = CellUtils.boxInstall(cellName, "installBox", authorization).statusCode(HttpStatus.SC_ACCEPTED);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
location = res.getHeader(HttpHeaders.LOCATION);
} finally {
if (location != null) {
BarInstallTestUtils.waitBoxInstallCompleted(location);
}
BoxUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, boxName, HttpStatus.SC_NO_CONTENT);
}
}
/**
* Basic認証ー__mypasswordの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ー__mypasswordの操作() throws DcException {
try {
// 401エラーとなること
DcResponse dcRes = CellUtils.changePassword(cellName, "newPassword", authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合も401エラーとなること
setAclPriviriegeAllPrincipalAll(cellName);
dcRes = CellUtils.changePassword(cellName, "newPassword", authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
} finally {
CellUtils.changePassword(cellName, AbstractCase.BEARER_MASTER_TOKEN, password);
}
}
/**
* Basic認証ーaclの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーaclの操作() throws DcException {
// 401エラーとなること
TResponse res = CellUtils.setAclPriviriegeAllPrincipalAll(cellName, authorization).statusCode(
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = CellUtils.setAclPriviriegeAllPrincipalAll(cellName, authorization).statusCode(
HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
}
/**
* Basic認証ーpropfindの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーpropfindの操作() throws DcException {
// 401エラーとなること
TResponse res = CellUtils.propfindWithAnyAuthSchema(cellName, authorization, "1", HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = CellUtils.propfindWithAnyAuthSchema(cellName, authorization, "1", HttpStatus.SC_MULTI_STATUS);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
}
/**
* Basic認証ーproppatchの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーproppatchの操作() throws DcException {
// 401エラーとなること
TResponse res = CellUtils.proppatchWithAnyAuthSchema(cellName, authorization, HttpStatus.SC_UNAUTHORIZED,
"hoge", "huga");
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合であっても401となること
// この場合、通常は無条件でアクセスを許可するところだが、このリソースではBasic認証は許容していないため、認証情報がない状態となる。
// このリソースは、UnitUser以上の権限がないとアクセスできないが、前述のとおり認証情報がないため、401エラーとなる。
setAclPriviriegeAllPrincipalAll(cellName);
res = CellUtils.proppatchWithAnyAuthSchema(cellName, authorization, HttpStatus.SC_UNAUTHORIZED, "hoge", "huga");
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
}
/**
* Basic認証ー__messageの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ー__messageの操作() throws DcException {
String title = "BasicAuthCellLevelTest";
String messageBody = "BasicAuthCellLevelTest000000000000";
String targetCell = Setup.TEST_CELL1;
String messageId = null;
try {
// 401エラーとなること
TResponse res = SentMessageUtils.sentWithAnyAuthSchema(authorization, cellName,
new SentMessageUtils.Request(targetCell), HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
SentMessageUtils.Request request = new SentMessageUtils.Request(targetCell)
.title(title).body(messageBody);
res = SentMessageUtils.sentWithAnyAuthSchema(authorization, cellName,
request, HttpStatus.SC_CREATED);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
messageId = SentMessageUtils.getMessageId(res);
} finally {
SentMessageUtils.delete(AbstractCase.MASTER_TOKEN_NAME, cellName, -1, messageId);
SentMessageUtils.deleteReceivedMessage(targetCell, UrlUtils.cellRoot(cellName), "message", title,
messageBody);
}
}
/**
* Basic認証ー__eventの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ー__eventの操作() throws DcException {
// 401エラーとなること
TResponse res = CellUtils.eventWithAnyAuthSchema(authorization, HttpStatus.SC_UNAUTHORIZED, cellName, "INFO",
"authSchema", "/cell/app", "success");
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = CellUtils.eventWithAnyAuthSchema(authorization, HttpStatus.SC_OK, cellName, "INFO",
"authSchema", "/cell/app", "success");
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
}
/**
* Basic認証ーボックスの__eventの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーボックスの__eventの操作() throws DcException {
String boxName = "boxName";
try {
// 事前準備
BoxUtils.create(cellName, boxName, AbstractCase.MASTER_TOKEN_NAME, HttpStatus.SC_CREATED);
// 401エラーとなること
DcResponse dcRes = CellUtils.eventUnderBox(authorization, cellName, boxName,
"info", "Action", null, null);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
dcRes = CellUtils.eventUnderBox(authorization, cellName, boxName,
"info", "Action", null, null);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
} finally {
BoxUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, boxName, -1);
}
}
/**
* Basic認証ー__logの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ー__logの操作() throws DcException {
// 401エラーとなること
// ログ取得
DcResponse dcRes = CellUtils.getCurrentLogWithAnyAuth(cellName, "default.log", authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ログPROPFIND
TResponse res = CellUtils.propfindArchiveLogDir(cellName, authorization, "1", HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
// ログ取得
dcRes = CellUtils.getCurrentLogWithAnyAuth(cellName, "default.log", authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
// ログPROPFIND
res = CellUtils.propfindArchiveLogDir(cellName, authorization, "1", HttpStatus.SC_MULTI_STATUS);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
}
/**
* Basic認証ーOPTIONSの操作.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーOPTIONSの操作() throws DcException {
// 401エラーとなること
TResponse res = ResourceUtils.requestUtilWithAuthSchema("OPTIONS", authorization, "/" + cellName,
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = ResourceUtils.requestUtilWithAuthSchema("OPTIONS", authorization, "/" + cellName,
HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
}
/**
* Basic認証ーCell再帰削除.
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell再帰削除() throws DcException {
String testCell = "BasicTestCellForBulkDeletion";
try {
// 事前準備
CellUtils.bulkDeletion(AbstractCase.BEARER_MASTER_TOKEN, testCell);
CellUtils.create(testCell, AbstractCase.MASTER_TOKEN_NAME, HttpStatus.SC_CREATED);
// 401エラーとなること
DcResponse dcRes = CellUtils.bulkDeletion(authorization, testCell);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, testCell);
// ACL all-all の場合も401エラーとなること
// この場合、通常は無条件でアクセスを許可するところだが、このリソースではBasic認証は許容していないため、認証情報がない状態となる。
// このリソースは、UnitUser以上の権限がないとアクセスできないが、前述のとおり認証情報がないため、401エラーとなる。
setAclPriviriegeAllPrincipalAll(testCell);
dcRes = CellUtils.bulkDeletion(authorization, testCell);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, testCell);
} finally {
CellUtils.bulkDeletion(AbstractCase.BEARER_MASTER_TOKEN, testCell);
}
}
/**
* Basic認証ーCell制御オブジェクトの作成. <br />
* (共通ロジックのためBoxのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトの作成() throws DcException {
String testBox = "BasicTestBox";
try {
// 401エラーとなること
DcResponse dcRes = BoxUtils.createWithAuthSchema(cellName, testBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
dcRes = BoxUtils.createWithAuthSchema(cellName, testBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_CREATED);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
} finally {
BoxUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, testBox, -1);
}
}
/**
* Basic認証ーCell制御オブジェクトの取得. <br />
* (共通ロジックのためBoxのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトの取得() throws DcException {
String testBox = Setup.TEST_BOX1;
// 401エラーとなること
DcResponse dcRes = BoxUtils.getWithAuthSchema(cellName, testBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
dcRes = BoxUtils.getWithAuthSchema(cellName, testBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
}
/**
* Basic認証ーCell制御オブジェクトの一覧取得. <br />
* (共通ロジックのためBoxのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトの一覧取得() throws DcException {
// 401エラーとなること
DcResponse dcRes = BoxUtils.listWithAuthSchema(cellName, authorization);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
dcRes = BoxUtils.listWithAuthSchema(cellName, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
}
/**
* Basic認証ーCell制御オブジェクトの更新. <br />
* (共通ロジックのためBoxのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトの更新() throws DcException {
String testBox = "BasicTestBox";
String newBox = "BasicTestBoxNew";
try {
// 事前準備
BoxUtils.create(cellName, testBox, AbstractCase.MASTER_TOKEN_NAME);
// 401エラーとなること
DcResponse dcRes = BoxUtils.updateWithAuthSchema(cellName, testBox, newBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
dcRes = BoxUtils.updateWithAuthSchema(cellName, testBox, newBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_NO_CONTENT);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
} finally {
BoxUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, testBox, -1);
BoxUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, newBox, -1);
}
}
/**
* Basic認証ーCell制御オブジェクトの削除. <br />
* (共通ロジックのためBoxのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトの削除() throws DcException {
String testBox = "BasicTestBox";
try {
// 事前準備
BoxUtils.create(cellName, testBox, AbstractCase.MASTER_TOKEN_NAME);
// 401エラーとなること
DcResponse dcRes = BoxUtils.deleteWithAuthSchema(cellName, testBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(dcRes, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
dcRes = BoxUtils.deleteWithAuthSchema(cellName, testBox, authorization);
assertThat(dcRes.getStatusCode()).isEqualTo(HttpStatus.SC_NO_CONTENT);
AuthTestCommon.checkAuthenticateHeaderNotExists(dcRes);
} finally {
BoxUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, testBox, -1);
}
}
/**
* Basic認証ーCell制御オブジェクトのNP登録. <br />
* (共通ロジックのためBox -> Roleのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトのNP登録() throws DcException {
String testBox = Setup.TEST_BOX1;
String testRole = "BasicTestRole";
try {
// 401エラーとなること
TResponse res = RoleUtils.createViaNPWithAuthSchema(cellName, authorization, "Box", testBox, testRole,
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = RoleUtils.createViaNPWithAuthSchema(cellName, authorization, "Box", testBox, testRole,
HttpStatus.SC_CREATED);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
} finally {
RoleUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, testBox, testRole, -1);
}
}
/**
* Basic認証ーCell制御オブジェクトのNP一覧. <br />
* (共通ロジックのためBox -> Roleのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトのNP一覧() throws DcException {
String testBox = Setup.TEST_BOX1;
// 401エラーとなること
TResponse res = RoleUtils.listViaNPWithAuthSchema(cellName, authorization, "Box", testBox,
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = RoleUtils.listViaNPWithAuthSchema(cellName, authorization, "Box", testBox,
HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
}
/**
* Basic認証ーCell制御オブジェクトのlinks登録. <br />
* (共通ロジックのためBox -> Roleのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトのlinks登録() throws DcException {
String testBox = Setup.TEST_BOX1;
String testRole = "BasicTestRole";
try {
// 事前準備
RoleUtils.create(cellName, AbstractCase.MASTER_TOKEN_NAME, testRole, HttpStatus.SC_CREATED);
// 401エラーとなること
TResponse res = RoleUtils.createLinkWithAuthSchema(cellName, testRole, "Box", testBox, authorization,
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = RoleUtils.createLinkWithAuthSchema(cellName, testRole, "Box", testBox, authorization,
HttpStatus.SC_NO_CONTENT);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
} finally {
RoleUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, null, testRole, -1);
RoleUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, testBox, testRole, -1);
}
}
/**
* Basic認証ーCell制御オブジェクトのlinks一覧. <br />
* (共通ロジックのためBox -> Roleのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトのlinks一覧() throws DcException {
String testBox = Setup.TEST_BOX1;
// 401エラーとなること
TResponse res = RoleUtils.listLinkWithAuthSchema(cellName, authorization, "Box", testBox,
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = RoleUtils.listLinkWithAuthSchema(cellName, authorization, "Box", testBox, HttpStatus.SC_OK);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
}
/**
* Basic認証ーCell制御オブジェクトのlinks削除. <br />
* (共通ロジックのためBox -> Roleのみ実施)
* @throws DcException リクエスト失敗
*/
@Test
public final void Basic認証ーCell制御オブジェクトのlinks削除() throws DcException {
String testBox = Setup.TEST_BOX1;
String testRole = "BasicTestRole";
String testRoleKey = RoleUtils.keyString(testRole, testBox);
try {
// 事前準備
RoleUtils.create(cellName, AbstractCase.MASTER_TOKEN_NAME, testBox, testRole, HttpStatus.SC_CREATED);
// 401エラーとなること
TResponse res = RoleUtils.deleteLinkWithAuthSchema(cellName, testRoleKey, "Box", testBox, authorization,
HttpStatus.SC_UNAUTHORIZED);
AuthTestCommon.checkAuthenticateHeader(res, OAuth2Helper.Scheme.BEARER, cellName);
// ACL all-all の場合正常終了すること
setAclPriviriegeAllPrincipalAll(cellName);
res = RoleUtils.deleteLinkWithAuthSchema(cellName, testRoleKey, "Box", testBox, authorization,
HttpStatus.SC_NO_CONTENT);
AuthTestCommon.checkAuthenticateHeaderNotExists(res);
} finally {
RoleUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, null, testRole, -1);
RoleUtils.delete(cellName, AbstractCase.MASTER_TOKEN_NAME, testBox, testRole, -1);
}
}
/**
* CellのACL(all-all)を設定する.
* @param cell Cell名
*/
private void setAclPriviriegeAllPrincipalAll(String cell) {
CellUtils.setAclPriviriegeAllPrincipalAll(cell, AbstractCase.BEARER_MASTER_TOKEN);
}
}