import com.baasbox.service.permissions.Tags; import core.AbstractAdminTest; import core.TestConfig; import org.apache.http.HttpHeaders; import com.fasterxml.jackson.databind.JsonNode; import org.junit.Test; import org.omg.PortableInterceptor.NON_EXISTENT; import play.libs.F; import play.mvc.Http; import play.mvc.Result; import play.test.FakeRequest; import play.test.TestBrowser; import javax.ws.rs.core.MediaType; import java.util.UUID; import static play.test.Helpers.*; /** * Created by Andrea Tortorella on 23/04/14. */ public class AdminEndpointSwitchFunctionalTest extends AbstractAdminTest { @Override public String getRouteAddress() { return "/admin/endpoints"; } @Override public String getMethod() { return GET; } @Override protected void assertContent(String s) { } //todo This test is not usable because it skips reading comments from routes. // @Test // public void testRouteOk(){ // running(getFakeApplication(),new Runnable() { // @Override // public void run() { // routeDisableUsersEndpoint(); // routeDisabledSignupShouldFail(); // routeEnableUserEndpoint(); // routeEnabledSignupShouldPass(); // } // }); // } private static final String INVALID_TAG = "non.existing.tag"; @Test public void testDisableInvalidTag(){ running(getTestServer(),new Runnable() { @Override public void run() { resetAllHeadersBeforeTests(); String endpointName = TestConfig.SERVER_URL+"/admin/endpoints/"+INVALID_TAG+"/enabled"; setHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); setHeader(TestConfig.KEY_AUTH, TestConfig.AUTH_ADMIN_ENC); httpRequest(endpointName,PUT); assertServer("testServerEnabledEndpoint", Http.Status.NOT_FOUND,null,false); } }); } @Test public void testEnableInvalidTag(){ running(getTestServer(),new Runnable() { @Override public void run() { resetAllHeadersBeforeTests(); String endpointName = TestConfig.SERVER_URL+ "/admin/endpoints/"+INVALID_TAG+"/enabled"; setHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); setHeader(TestConfig.KEY_AUTH,TestConfig.AUTH_ADMIN_ENC); httpRequest(endpointName,PUT); assertServer("testServerDisabledInvalidEndpoint", Http.Status.NOT_FOUND,null,false); } }); } @Test public void testServerOk(){ running( getTestServer(), new Runnable() { @Override public void run() { serverDisableUsersEndpoint(); serverCreateUserShouldFail(); serverEnableUsersEndpoint(); serverCreateUserShouldPass(); } } ); } // private void routeEnabledSignupShouldPass(){ // Result res = createUser(); // assertRoute(res,"routeSignupShouldPass", Http.Status.CREATED,null,false); // } // private void routeDisabledSignupShouldFail(){ // Result res = createUser(); // assertRoute(res,"routeSignupShouldFail", Http.Status.FORBIDDEN,null,false); // } // private Result createUser(){ // String endpointName = "/user"; // String sFakeUser = UserCreateTest.USER_TEST + UUID.randomUUID(); // // Prepare test user // JsonNode node = updatePayloadFieldValue("/adminUserCreatePayload.json", "username", sFakeUser); // FakeRequest request = new FakeRequest(POST,endpointName); // request = request.withHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); // request = request.withJsonBody(node,POST); // return routeAndCall(request); // } // private void routeEnableUserEndpoint(){ // String endpointName = Tags.Reserved.ACCOUNT_CREATION.name; // FakeRequest request = new FakeRequest(PUT,"/admin/endpoints/"+endpointName+"/enabled"); // request = request.withHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); // request = request.withHeader(TestConfig.KEY_AUTH,TestConfig.AUTH_ADMIN_ENC); // Result res = routeAndCall(request); // assertRoute(res,"testRoute-Enable-endpoint-users", Http.Status.OK,null,false); // } private void serverDisableUsersEndpoint(){ resetAllHeadersBeforeTests(); String endpointName = TestConfig.SERVER_URL+ "/admin/endpoints/"+Tags.Reserved.ACCOUNT_CREATION.name+"/enabled"; setHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); setHeader(TestConfig.KEY_AUTH,TestConfig.AUTH_ADMIN_ENC); httpRequest(endpointName,DELETE); assertServer("testServerDisabledEndpoint", Http.Status.OK,null,false); } private void serverCreateUserShouldFail(){ serverCreateUser(); assertServer("testServerDisabledEndpointFails",Http.Status.FORBIDDEN,null,false); } private void serverCreateUserShouldPass(){ serverCreateUser(); assertServer("testServerDisabledEndpointPass",Http.Status.CREATED,null,false); } private void serverCreateUser(){ resetAllHeadersBeforeTests(); String endpointName = TestConfig.SERVER_URL+"/user"; String sFakeUser = UserCreateTest.USER_TEST + UUID.randomUUID(); JsonNode node = updatePayloadFieldValue("/adminUserCreatePayload.json", "username", sFakeUser); setHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON); httpRequest(endpointName,POST,node); } private void serverEnableUsersEndpoint(){ resetAllHeadersBeforeTests(); String endpointName = TestConfig.SERVER_URL+"/admin/endpoints/"+Tags.Reserved.ACCOUNT_CREATION.name+"/enabled"; setHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); setHeader(TestConfig.KEY_AUTH, TestConfig.AUTH_ADMIN_ENC); httpRequest(endpointName,PUT); assertServer("testServerEnabledEndpoint", Http.Status.OK,null,false); } // private void routeDisableUsersEndpoint(){ // String endpointName = Tags.Reserved.ACCOUNT_CREATION.name; // FakeRequest request = new FakeRequest(DELETE,"/admin/endpoints/"+endpointName+"/enabled"); // request = request.withHeader(TestConfig.KEY_APPCODE,TestConfig.VALUE_APPCODE); // request = request.withHeader(TestConfig.KEY_AUTH,TestConfig.AUTH_ADMIN_ENC); // Result res = routeAndCall(request); // assertRoute(res,"testRoute-Disable-endpoint-users", Http.Status.OK,null,false); // } }