package alien4cloud.it.users; import static org.junit.Assert.*; import org.apache.commons.lang3.ArrayUtils; import alien4cloud.dao.model.FacetedSearchResult; import alien4cloud.dao.model.GetMultipleDataResult; import alien4cloud.it.Context; import alien4cloud.it.security.AuthenticationStepDefinitions; import alien4cloud.rest.model.RestResponse; import alien4cloud.rest.utils.JsonUtil; import alien4cloud.security.model.User; import alien4cloud.security.users.rest.UserSearchRequest; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; public class UsersDefinitionsSteps { private AuthenticationStepDefinitions authSteps = new AuthenticationStepDefinitions(); @Given("^there is (\\d+) users in the system$") public void there_is_users_in_the_system(int count) throws Throwable { for (int i = 0; i < count; i++) { authSteps.I_create_a_new_user_with_name_and_password_in_the_system("user_" + i, "user"); } } @When("^I search in users for \"([^\"]*)\" from (\\d+) with result size of (\\d+)$") public void I_search_in_users_for_from_with_result_size_of(String searchedText, int from, int size) throws Throwable { UserSearchRequest req = new UserSearchRequest(searchedText, null, from, size); String jSon = Context.getInstance().getJsonMapper().writeValueAsString(req); Context.getInstance().registerRestResponse(Context.getRestClientInstance().postJSon("/rest/v1/users/search", jSon)); } @Then("^there should be (\\d+) users in the response$") public void there_should_be_users_in_the_response(int expectedSize) throws Throwable { RestResponse<FacetedSearchResult> restResponse = JsonUtil.read(Context.getInstance().takeRestResponse(), FacetedSearchResult.class); GetMultipleDataResult searchResp = restResponse.getData(); assertNotNull(searchResp); assertNotNull(searchResp.getTypes()); assertNotNull(searchResp.getData()); assertEquals(expectedSize, searchResp.getTypes().length); assertEquals(expectedSize, searchResp.getData().length); } @When("^I add a role \"([^\"]*)\" to user \"([^\"]*)\"$") public void I_add_a_role_to_user(String role, String username) throws Throwable { Context.getInstance().registerRestResponse(Context.getRestClientInstance().put("/rest/v1/users/" + username + "/roles/" + role)); } @Then("^The response should contain a user \"([^\"]*)\" having \"([^\"]*)\" role$") public void The_response_should_contain_a_user_having_role(String username, String expectedRole) throws Throwable { RestResponse<User> restResponse = JsonUtil.read(Context.getInstance().getRestResponse(), User.class); User user = restResponse.getData(); assertNotNull(user); assertNotNull(user.getRoles()); assertTrue(ArrayUtils.contains(user.getRoles(), expectedRole)); } @Given("^there is a user \"([^\"]*)\" with the \"([^\"]*)\" role$") public void there_is_a_user_with_the_role(String username, String expectedRole) throws Throwable { authSteps.There_is_a_user_in_the_system(username); String response = Context.getRestClientInstance().get("/rest/v1/users/" + username); User user = JsonUtil.read(response, User.class).getData(); if (!ArrayUtils.contains(user.getRoles(), expectedRole)) { I_add_a_role_to_user(expectedRole, username); } } @When("^I remove a role \"([^\"]*)\" to user \"([^\"]*)\"$") public void I_remove_a_role_to_user(String role, String username) throws Throwable { Context.getInstance().registerRestResponse(Context.getRestClientInstance().delete("/rest/v1/users/" + username + "/roles/" + role)); } @Then("^The response should contain a user \"([^\"]*)\" not having \"([^\"]*)\" role$") public void The_response_should_contain_a_user_not_having_role(String username, String expectedRole) throws Throwable { RestResponse<User> restResponse = JsonUtil.read(Context.getInstance().getRestResponse(), User.class); User user = restResponse.getData(); assertNotNull(user); assertTrue(!ArrayUtils.contains(user.getRoles(), expectedRole)); } @When("^I delete the user \"([^\"]*)\"$") public void I_delete_the_user(String username) throws Throwable { Context.getInstance().registerRestResponse(Context.getRestClientInstance().delete("/rest/v1/users/" + username)); } }