package fi.otavanopisto.muikku.rest.users.test; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.skyscreamer.jsonassert.JSONAssert; import com.jayway.restassured.response.Response; import fi.otavanopisto.muikku.AbstractRESTTest; import fi.otavanopisto.muikku.model.users.EnvironmentRoleArchetype; public class UserRESTServiceTestsIT extends AbstractRESTTest { public UserRESTServiceTestsIT() { } private static final boolean STRICT_JSON = false; @Before public void before() throws Exception { asAdmin().get("/test/workspaces/1/publish"); asAdmin().get("/test/reindex"); } @After public void after() throws Exception { } /** * /user/users * /user/users/{ID} * /user/users/{ID}/basicinfo */ @Test public void testFindUser() throws NoSuchFieldException { Long userId = 1l; Response response = asAdmin().get("/user/users/{ID}", userId); response.then().statusCode(200); String expected = "{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testFindUserBasicInfo() throws NoSuchFieldException { Long userId = 1l; Response response = asAdmin() .get("/user/users/{ID}/basicinfo", userId); response.then().statusCode(200); String expected = "{'id':1,'firstName':'Test','lastName':'User','hasImage':false}"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsers() throws NoSuchFieldException { Response response = asAdmin() .get("/user/users"); response.then().statusCode(200); String expected = "[" + "{'id':4,'firstName':'Test','lastName':'Administrator','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ad...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':2,'firstName':'Test','lastName':'Staff1member','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':3,'firstName':'Test','lastName':'Staff2member','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ma...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsersAsStudent() throws NoSuchFieldException { Response response = asStudent() .get("/user/users"); response.then().statusCode(200); String expected = "[" + "{'id':4,'firstName':'Test','lastName':'Administrator','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ad...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':2,'firstName':'Test','lastName':'Staff1member','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':3,'firstName':'Test','lastName':'Staff2member','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ma...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsersWithUserGroups() throws NoSuchFieldException { Long userGroupId = 2l; Response response = asAdmin() .param("userGroupIds", userGroupId) .get("/user/users"); response.then().statusCode(200); String expected = "[" + "{'id':4,'firstName':'Test','lastName':'Administrator','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ad...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsersWithMyUserGroups() throws NoSuchFieldException { Response response = asAdmin() .param("myUserGroups", true) .get("/user/users"); response.then().statusCode(200); String expected = "[" + "{'id':4,'firstName':'Test','lastName':'Administrator','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ad...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsersWithWorkspaces() throws NoSuchFieldException { Long workspaceId = 1l; Response response = asAdmin() .param("workspaceIds", workspaceId) .get("/user/users"); response.then().statusCode(200); String expected = "[" + "{'id':4,'firstName':'Test','lastName':'Administrator','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ad...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsersWithMyWorkspaces() throws NoSuchFieldException { Response response = asAdmin() .param("myWorkspaces", true) .get("/user/users"); response.then().statusCode(200); String expected = "[" + "{'id':4,'firstName':'Test','lastName':'Administrator','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ad...@example.com','studyStartDate':null,'studyTimeEnd':null}," + "{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsersWithSearchString() throws NoSuchFieldException { String searchString = "a"; Response response = asAdmin() .param("searchString", searchString) .get("/user/users"); response.then().statusCode(200); String expected = "[{'id':4,'firstName':'Test','lastName':'Administrator','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'ad...@example.com','studyStartDate':null,'studyTimeEnd':null}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } @Test public void testSearchUsersWithArchetype() throws NoSuchFieldException { String archetype = EnvironmentRoleArchetype.STUDENT.name(); Response response = asAdmin() .param("archetype", archetype) .get("/user/users"); response.then().statusCode(200); String expected = "[{'id':1,'firstName':'Test','lastName':'User','hasImage':false,'nationality':null,'language':null,'municipality':null,'school':null,'email':'te...@example.com'}]"; JSONAssert.assertEquals(expected, response.body().asString(), STRICT_JSON); } }