@Test public void testAddUserByAdminInvalidMessage() throws Exception { IRODSAccount irodsAccount = testingPropertiesHelper.buildIRODSAccountFromTestProperties(testingProperties); StringBuilder sb = new StringBuilder(); sb.append("http://localhost:"); sb.append( testingPropertiesHelper.getPropertyValueAsInt( testingProperties, RestTestingProperties.REST_PORT_PROPERTY)); sb.append("/user/"); DefaultHttpClientAndContext clientAndContext = RestAuthUtils.httpClientSetup(irodsAccount, testingProperties); try { HttpPut httpPut = new HttpPut(sb.toString()); httpPut.addHeader("accept", "application/json"); httpPut.addHeader("Content-Type", "application/json"); String body = "I am not valid json"; httpPut.setEntity(new StringEntity(body)); HttpResponse response = clientAndContext.getHttpClient().execute(httpPut, clientAndContext.getHttpContext()); Assert.assertEquals(400, response.getStatusLine().getStatusCode()); } finally { // When HttpClient instance is no longer needed, // shut down the connection manager to ensure // immediate deallocation of all system resources clientAndContext.getHttpClient().getConnectionManager().shutdown(); } }
@Before public void setUp() throws Exception { if (server != null) { return; } int port = testingPropertiesHelper.getPropertyValueAsInt( testingProperties, RestTestingProperties.REST_PORT_PROPERTY); server = new TJWSEmbeddedJaxrsServer(); server.setPort(port); ResteasyDeployment deployment = server.getDeployment(); server.start(); Dispatcher dispatcher = deployment.getDispatcher(); SpringBeanProcessor processor = new SpringBeanProcessor( dispatcher, deployment.getRegistry(), deployment.getProviderFactory()); ((ConfigurableApplicationContext) applicationContext).addBeanFactoryPostProcessor(processor); SpringResourceFactory noDefaults = new SpringResourceFactory("userService", applicationContext, UserService.class); dispatcher.getRegistry().addResourceFactory(noDefaults); }
@Test public void testGetUserInvalid() throws Exception { IRODSAccount irodsAccount = testingPropertiesHelper.buildIRODSAccountFromTestProperties(testingProperties); StringBuilder sb = new StringBuilder(); sb.append("http://localhost:"); sb.append( testingPropertiesHelper.getPropertyValueAsInt( testingProperties, RestTestingProperties.REST_PORT_PROPERTY)); sb.append("/user/iamaninvaliduser"); DefaultHttpClientAndContext clientAndContext = RestAuthUtils.httpClientSetup(irodsAccount, testingProperties); try { HttpGet httpget = new HttpGet(sb.toString()); httpget.addHeader("accept", "application/xml"); HttpResponse response = clientAndContext.getHttpClient().execute(httpget, clientAndContext.getHttpContext()); HttpEntity entity = response.getEntity(); Assert.assertEquals(500, response.getStatusLine().getStatusCode()); EntityUtils.consume(entity); } finally { // When HttpClient instance is no longer needed, // shut down the connection manager to ensure // immediate deallocation of all system resources clientAndContext.getHttpClient().getConnectionManager().shutdown(); } }
@Test public void testAddUserByAdminBlankPassword() throws Exception { String testUserName = "******"; IRODSAccount irodsAccount = testingPropertiesHelper.buildIRODSAccountFromTestProperties(testingProperties); StringBuilder sb = new StringBuilder(); sb.append("http://localhost:"); sb.append( testingPropertiesHelper.getPropertyValueAsInt( testingProperties, RestTestingProperties.REST_PORT_PROPERTY)); sb.append("/user/"); DefaultHttpClientAndContext clientAndContext = RestAuthUtils.httpClientSetup(irodsAccount, testingProperties); try { HttpPut httpPut = new HttpPut(sb.toString()); httpPut.addHeader("accept", "application/json"); httpPut.addHeader("Content-Type", "application/json"); ObjectMapper mapper = new ObjectMapper(); UserAddByAdminRequest addRequest = new UserAddByAdminRequest(); addRequest.setDistinguishedName("dn here"); addRequest.setTempPassword(""); addRequest.setUserName(testUserName); String body = mapper.writeValueAsString(addRequest); httpPut.setEntity(new StringEntity(body)); HttpResponse response = clientAndContext.getHttpClient().execute(httpPut, clientAndContext.getHttpContext()); HttpEntity entity = response.getEntity(); Assert.assertEquals(200, response.getStatusLine().getStatusCode()); String entityData = EntityUtils.toString(entity); UserAddActionResponse actual = mapper.readValue(entityData, UserAddActionResponse.class); Assert.assertEquals( UserAddActionResponse.UserAddActionResponseCode.ATTRIBUTES_MISSING, actual.getUserAddActionResponse()); Assert.assertEquals( UserAddActionResponse.UserAddActionResponseCode.ATTRIBUTES_MISSING.ordinal(), actual.getUserAddActionResponseNumericCode()); } finally { // When HttpClient instance is no longer needed, // shut down the connection manager to ensure // immediate deallocation of all system resources clientAndContext.getHttpClient().getConnectionManager().shutdown(); } }
@Test public void testGetUserJSON() throws Exception { IRODSAccount irodsAccount = testingPropertiesHelper.buildIRODSAccountFromTestProperties(testingProperties); StringBuilder sb = new StringBuilder(); sb.append("http://localhost:"); sb.append( testingPropertiesHelper.getPropertyValueAsInt( testingProperties, RestTestingProperties.REST_PORT_PROPERTY)); sb.append("/user/"); sb.append(testingProperties.get(TestingPropertiesHelper.IRODS_USER_KEY)); // contentType doesn't really work in test container, set in the header sb.append("?contentType=application/json"); DefaultHttpClientAndContext clientAndContext = RestAuthUtils.httpClientSetup(irodsAccount, testingProperties); try { HttpGet httpget = new HttpGet(sb.toString()); httpget.addHeader("accept", "application/json"); HttpResponse response = clientAndContext.getHttpClient().execute(httpget, clientAndContext.getHttpContext()); HttpEntity entity = response.getEntity(); Assert.assertEquals(200, response.getStatusLine().getStatusCode()); Assert.assertNotNull(entity); String entityData = EntityUtils.toString(entity); Assert.assertFalse( "did not get json with user name", entityData.indexOf( "\"name\":\"" + testingProperties.get(TestingPropertiesHelper.IRODS_USER_KEY) + "\"") == -1); EntityUtils.consume(entity); } finally { // When HttpClient instance is no longer needed, // shut down the connection manager to ensure // immediate deallocation of all system resources clientAndContext.getHttpClient().getConnectionManager().shutdown(); } }
@Test public void testAddUserByAdminLongDn() throws Exception { String testUser = "******"; String testPassword = "******"; String testDN = "/CN=xxxxxyyxx-64f0-4d49-a0a9-508a8a5328cd/emailAddress=xxxxxxxxxxthismaynotshowup"; IRODSAccount irodsAccount = testingPropertiesHelper.buildIRODSAccountFromTestProperties(testingProperties); IRODSAccount userAccount = testingPropertiesHelper.buildIRODSAccountForIRODSUserFromTestPropertiesForGivenUser( testingProperties, testUser, testPassword); IRODSAccessObjectFactory accessObjectFactory = irodsFileSystem.getIRODSAccessObjectFactory(); UserAO userAO = accessObjectFactory.getUserAO(irodsAccount); try { userAO.findByName(testUser); String homeDir = MiscIRODSUtils.computeHomeDirectoryForIRODSAccount(userAccount); IRODSFile userHomeDir = irodsFileSystem.getIRODSFileFactory(userAccount).instanceIRODSFile(homeDir); for (File homeDirFile : userHomeDir.listFiles()) { homeDirFile.delete(); } userAO.deleteUser(testUser); } catch (DataNotFoundException dnf) { // OK } StringBuilder sb = new StringBuilder(); sb.append("http://localhost:"); sb.append( testingPropertiesHelper.getPropertyValueAsInt( testingProperties, RestTestingProperties.REST_PORT_PROPERTY)); sb.append("/user/"); DefaultHttpClientAndContext clientAndContext = RestAuthUtils.httpClientSetup(irodsAccount, testingProperties); try { HttpPut httpPut = new HttpPut(sb.toString()); httpPut.addHeader("accept", "application/json"); httpPut.addHeader("Content-Type", "application/json"); ObjectMapper mapper = new ObjectMapper(); UserAddByAdminRequest addRequest = new UserAddByAdminRequest(); addRequest.setDistinguishedName(testDN); addRequest.setTempPassword(testPassword); addRequest.setUserName(testUser); String body = mapper.writeValueAsString(addRequest); System.out.println(body); httpPut.setEntity(new StringEntity(body)); HttpResponse response = clientAndContext.getHttpClient().execute(httpPut, clientAndContext.getHttpContext()); HttpEntity entity = response.getEntity(); Assert.assertEquals(200, response.getStatusLine().getStatusCode()); String entityData = EntityUtils.toString(entity); System.out.println(entityData); UserAddActionResponse actual = mapper.readValue(entityData, UserAddActionResponse.class); Assert.assertEquals(testUser, actual.getUserName()); Assert.assertEquals( UserAddActionResponse.UserAddActionResponseCode.SUCCESS, actual.getUserAddActionResponse()); Assert.assertEquals( UserAddActionResponse.UserAddActionResponseCode.SUCCESS.ordinal(), actual.getUserAddActionResponseNumericCode()); } finally { // When HttpClient instance is no longer needed, // shut down the connection manager to ensure // immediate deallocation of all system resources clientAndContext.getHttpClient().getConnectionManager().shutdown(); } User user = userAO.findByName(testUser); Assert.assertNotNull("user not added", user); Assert.assertEquals("dn not set", testDN, user.getUserDN()); }
@Test public void testAddUserByAdmin() throws Exception { String testUser = "******"; String testPassword = "******"; String testDn = "testDNForaddubyAdminRest"; IRODSAccount irodsAccount = testingPropertiesHelper.buildIRODSAccountFromTestProperties(testingProperties); IRODSAccessObjectFactory accessObjectFactory = irodsFileSystem.getIRODSAccessObjectFactory(); UserAO userAO = accessObjectFactory.getUserAO(irodsAccount); userAO.deleteUser(testUser); StringBuilder sb = new StringBuilder(); sb.append("http://localhost:"); sb.append( testingPropertiesHelper.getPropertyValueAsInt( testingProperties, RestTestingProperties.REST_PORT_PROPERTY)); sb.append("/user/"); DefaultHttpClientAndContext clientAndContext = RestAuthUtils.httpClientSetup(irodsAccount, testingProperties); try { HttpPut httpPut = new HttpPut(sb.toString()); httpPut.addHeader("accept", "application/json"); httpPut.addHeader("Content-Type", "application/json"); ObjectMapper mapper = new ObjectMapper(); UserAddByAdminRequest addRequest = new UserAddByAdminRequest(); addRequest.setDistinguishedName(testDn); addRequest.setTempPassword(testPassword); addRequest.setUserName(testUser); String body = mapper.writeValueAsString(addRequest); System.out.println(body); httpPut.setEntity(new StringEntity(body)); HttpResponse response = clientAndContext.getHttpClient().execute(httpPut, clientAndContext.getHttpContext()); HttpEntity entity = response.getEntity(); Assert.assertEquals(200, response.getStatusLine().getStatusCode()); String entityData = EntityUtils.toString(entity); System.out.println(entityData); UserAddActionResponse actual = mapper.readValue(entityData, UserAddActionResponse.class); Assert.assertEquals(testUser, actual.getUserName()); Assert.assertEquals( UserAddActionResponse.UserAddActionResponseCode.SUCCESS, actual.getUserAddActionResponse()); Assert.assertEquals( UserAddActionResponse.UserAddActionResponseCode.SUCCESS.ordinal(), actual.getUserAddActionResponseNumericCode()); } finally { // When HttpClient instance is no longer needed, // shut down the connection manager to ensure // immediate deallocation of all system resources clientAndContext.getHttpClient().getConnectionManager().shutdown(); } User user = userAO.findByName(testUser); Assert.assertNotNull("user not added", user); Assert.assertEquals("dn not set", testDn, user.getUserDN()); }