Repository: incubator-usergrid
Updated Branches:
refs/heads/USERGRID-422 efb6e72de -> 19e73d66d
Commented out failures to do tests one at a time.
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/0f893ffc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/0f893ffc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/0f893ffc
Branch: refs/heads/USERGRID-422
Commit: 0f893ffcbf7e6afaab87654cd794a9ba59893227
Parents: 231a449
Author: grey <greyes@apigee.com>
Authored: Thu Jan 8 15:46:41 2015 -0800
Committer: grey <greyes@apigee.com>
Committed: Thu Jan 8 15:46:41 2015 -0800
----------------------------------------------------------------------
.../usergrid/rest/management/AdminUsersIT.java | 1362 +++++++++---------
1 file changed, 680 insertions(+), 682 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0f893ffc/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java
index 91ea270..271c013 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java
@@ -31,6 +31,7 @@ import javax.mail.MessagingException;
import javax.mail.internet.MimeMultipart;
import javax.ws.rs.core.MediaType;
+import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -46,10 +47,13 @@ import org.apache.usergrid.management.MockImapClient;
import org.apache.usergrid.management.OrganizationInfo;
import org.apache.usergrid.management.OrganizationOwnerInfo;
import org.apache.usergrid.management.UserInfo;
-import org.apache.usergrid.rest.AbstractRestIT;
import org.apache.usergrid.rest.TestContextSetup;
import org.apache.usergrid.rest.management.organizations.OrganizationsResource;
import org.apache.usergrid.rest.test.resource.mgmt.Organization;
+import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
+import org.apache.usergrid.rest.test.resource2point0.RestClient;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.*;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.ManagementResource;
import org.apache.usergrid.rest.test.security.TestAdminUser;
import org.apache.usergrid.rest.test.security.TestUser;
import org.apache.usergrid.security.AuthPrincipalInfo;
@@ -80,19 +84,13 @@ import static org.junit.Assert.fail;
*/
public class AdminUsersIT extends AbstractRestIT {
- //Used for all MUUserResourceITTests
- private Logger LOG = LoggerFactory.getLogger( AdminUsersIT.class );
-
- @Rule
- public TestContextSetup context = new TestContextSetup( this );
-
- public AdminUsersIT() throws Exception {
+ ManagementResource management;
+ @Before
+ public void setup() {
+ management= clientSetup.getRestClient().management();
}
-
-
-
/**
* Test if we can reset our password as an admin
*/
@@ -125,677 +123,677 @@ public class AdminUsersIT extends AbstractRestIT {
assertNull( getError( node ) );
}
-
- @Test
- public void passwordMismatchErrorAdmin() {
- String origPassword = "foo";
- String newPassword = "bar";
-
- Map<String, String> data = new HashMap<String, String>();
- data.put( "newpassword", origPassword );
-
- // now change the password, with an incorrect old password
-
- data.put( "oldpassword", origPassword );
- data.put( "newpassword", newPassword );
-
- ClientResponse.Status responseStatus = null;
-
- try {
- resource().path( "/management/users/test/password" ).accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, data );
- }
- catch ( UniformInterfaceException uie ) {
- responseStatus = uie.getResponse().getClientResponseStatus();
- }
-
- assertNotNull( responseStatus );
-
- assertEquals( ClientResponse.Status.BAD_REQUEST, responseStatus );
- }
-
-
- @Test
- public void setAdminPasswordAsSysAdmin() throws IOException {
-
- String superToken = superAdminToken();
-
- String newPassword = "foo";
-
- Map<String, String> data = new HashMap<String, String>();
- data.put( "newpassword", newPassword );
-
- // change the password as admin. The old password isn't required
- JsonNode node = mapper.readTree( resource().path( "/management/users/test/password" ).queryParam( "access_token", superToken )
- .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
- .post( String.class, data ));
-
- assertNull( getError( node ) );
-
- refreshIndex("test-organization", "test-app");
-
- // log in with the new password
- String token = mgmtToken( "test", newPassword );
-
- assertNotNull( token );
-
- data.put( "newpassword", "test" );
-
- // now change the password back
- node = mapper.readTree( resource().path( "/management/users/test/password" ).queryParam( "access_token", superToken )
- .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
- .post( String.class, data ));
-
- assertNull( getError( node ) );
- }
-
- @Test
- public void mgmtUserFeed() throws Exception {
- JsonNode userdata = mapper.readTree( resource().path( "/management/users/test@usergrid.com/feed" )
- .queryParam( "access_token", adminAccessToken )
- .accept( MediaType.APPLICATION_JSON ).get( String.class ));
- assertTrue( StringUtils.contains( this.getEntity( userdata, 0 ).get( "title" ).asText(),
- "<a href=\"mailto:test@usergrid.com\">" ) );
- }
-
- //everything below is MUUserResourceIT
-
- @Test
- public void testCaseSensitivityAdminUser() throws Exception {
-
- LOG.info( "Starting testCaseSensitivityAdminUser()" );
-
- UserInfo mixcaseUser = setup.getMgmtSvc()
- .createAdminUser( "AKarasulu", "Alex Karasulu", "AKarasulu@Apache.org", "test", true, false );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- AuthPrincipalInfo adminPrincipal = new AuthPrincipalInfo(
- AuthPrincipalType.ADMIN_USER, mixcaseUser.getUuid(), UUIDUtils.newTimeUUID() );
- OrganizationInfo organizationInfo =
- setup.getMgmtSvc().createOrganization( "MixedCaseOrg", mixcaseUser, true );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- String tokenStr = mgmtToken( "akarasulu@apache.org", "test" );
-
- // Should succeed even when we use all lowercase
- JsonNode node = mapper.readTree( resource().path( "/management/users/akarasulu@apache.org" )
- .queryParam( "access_token", tokenStr )
- .accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE )
- .get( String.class ));
- logNode( node );
- }
-
-
- @Test
- public void testUnconfirmedAdminLogin() throws Exception {
-
- // Setup properties to require confirmation of users
- // -------------------------------------------
-
- Map<String, String> originalProperties = getRemoteTestProperties();
-
- try {
- setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
- setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
- setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "true" );
- setTestProperty( PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com" );
- setTestProperty( PROPERTIES_NOTIFY_ADMIN_OF_ACTIVATION, "true" );
-
- assertTrue( setup.getMgmtSvc().newAdminUsersRequireConfirmation() );
- assertFalse( setup.getMgmtSvc().newAdminUsersNeedSysAdminApproval() );
-
- // Setup org/app/user variables and create them
- // -------------------------------------------
- String orgName = this.getClass().getName();
- String appName = "testUnconfirmedAdminLogin";
- String userName = "TestUser";
- String email = "test-user-46@mockserver.com";
- String passwd = "testpassword";
- OrganizationOwnerInfo orgOwner;
-
- orgOwner = setup.getMgmtSvc().createOwnerAndOrganization(
- orgName, userName, appName, email, passwd, false, false );
- assertNotNull( orgOwner );
- String returnedUsername = orgOwner.getOwner().getUsername();
- assertEquals( userName, returnedUsername );
-
- UserInfo adminUserInfo = setup.getMgmtSvc().getAdminUserByUsername( userName );
- assertNotNull( adminUserInfo );
- assertFalse( "adminUser should not be activated yet", adminUserInfo.isActivated() );
- assertFalse( "adminUser should not be confirmed yet", adminUserInfo.isConfirmed() );
-
- // Attempt to authenticate but this should fail
- // -------------------------------------------
- JsonNode node;
- try {
- node = mapper.readTree( resource().path( "/management/token" )
- .queryParam( "grant_type", "password" )
- .queryParam( "username", userName )
- .queryParam( "password", passwd )
- .accept( MediaType.APPLICATION_JSON ).get( String.class ));
-
- fail( "Unconfirmed users should not be authorized to authenticate." );
- }
- catch ( UniformInterfaceException e ) {
- node = mapper.readTree( e.getResponse().getEntity( String.class ));
- assertEquals( "invalid_grant", node.get( "error" ).textValue() );
- assertEquals( "User must be confirmed to authenticate",
- node.get( "error_description" ).textValue() );
- LOG.info( "Unconfirmed user was not authorized to authenticate!" );
- }
-
- // Confirm the getting account confirmation email for unconfirmed user
- // -------------------------------------------
- List<Message> inbox = Mailbox.get( email );
- assertFalse( inbox.isEmpty() );
-
- MockImapClient client = new MockImapClient( "mockserver.com", "test-user-46", "somepassword" );
- client.processMail();
-
- Message confirmation = inbox.get( 0 );
- assertEquals( "User Account Confirmation: " + email, confirmation.getSubject() );
-
- // Extract the token to confirm the user
- // -------------------------------------------
- String token = getTokenFromMessage( confirmation );
- LOG.info( token );
-
- ActivationState state = setup.getMgmtSvc().handleConfirmationTokenForAdminUser(
- orgOwner.getOwner().getUuid(), token );
- assertEquals( ActivationState.ACTIVATED, state );
-
- Message activation = inbox.get( 1 );
- assertEquals( "User Account Activated", activation.getSubject() );
-
- client = new MockImapClient( "mockserver.com", "test-user-46", "somepassword" );
- client.processMail();
-
- refreshIndex(orgName, appName);
-
- // Attempt to authenticate again but this time should pass
- // -------------------------------------------
-
- node = mapper.readTree( resource().path( "/management/token" )
- .queryParam( "grant_type", "password" )
- .queryParam( "username", userName )
- .queryParam( "password", passwd )
- .accept( MediaType.APPLICATION_JSON ).get( String.class ));
-
- assertNotNull( node );
- LOG.info( "Authentication succeeded after confirmation: {}.", node.toString() );
- }
- finally {
- setTestProperties( originalProperties );
- }
- }
-
-
- @Test
- public void testSystemAdminNeedsNoConfirmation() throws Exception {
-
- Map<String, String> originalProperties = getRemoteTestProperties();
-
- try {
- // require comfirmation of new admin users
- setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
- setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
- setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "true" );
-
- assertTrue( setup.getMgmtSvc().newAdminUsersRequireConfirmation() );
- assertFalse( setup.getMgmtSvc().newAdminUsersNeedSysAdminApproval() );
-
- String sysadminUsername = ( String ) setup.getMgmtSvc().getProperties()
- .get( AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_EMAIL );
-
- String sysadminPassword = ( String ) setup.getMgmtSvc().getProperties()
- .get( AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_PASSWORD );
-
- // sysadmin login should suceed despite confirmation setting
- JsonNode node;
- try {
- node = mapper.readTree( resource().path( "/management/token" ).queryParam( "grant_type", "password" )
- .queryParam( "username", sysadminUsername ).queryParam( "password", sysadminPassword )
- .accept( MediaType.APPLICATION_JSON ).get( String.class ));
- }
- catch ( UniformInterfaceException e ) {
- fail( "Sysadmin should need no confirmation" );
- }
- }
- finally {
- setTestProperties( originalProperties );
- }
- }
-
-
- @Test
- public void testTestUserNeedsNoConfirmation() throws Exception {
-
- Map<String, String> originalProperties = getRemoteTestProperties();
-
- try {
- // require comfirmation of new admin users
- setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
- setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
- setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "true" );
-
- assertTrue( setup.getMgmtSvc().newAdminUsersRequireConfirmation() );
- assertFalse( setup.getMgmtSvc().newAdminUsersNeedSysAdminApproval() );
-
- String testUserUsername = ( String ) setup.getMgmtSvc().getProperties()
- .get( AccountCreationProps
- .PROPERTIES_TEST_ACCOUNT_ADMIN_USER_EMAIL );
-
- String testUserPassword = ( String ) setup.getMgmtSvc().getProperties()
- .get( AccountCreationProps
- .PROPERTIES_TEST_ACCOUNT_ADMIN_USER_PASSWORD );
-
- // test user login should suceed despite confirmation setting
- JsonNode node;
- try {
- node = mapper.readTree( resource().path( "/management/token" ).queryParam( "grant_type", "password" )
- .queryParam( "username", testUserUsername ).queryParam( "password", testUserPassword )
- .accept( MediaType.APPLICATION_JSON ).get( String.class ));
- }
- catch ( UniformInterfaceException e ) {
- fail( "Test User should need no confirmation" );
- }
- }
- finally {
- setTestProperties( originalProperties );
- }
- }
-
-
- private String getTokenFromMessage( Message msg ) throws IOException, MessagingException {
- String body = ( ( MimeMultipart ) msg.getContent() ).getBodyPart( 0 ).getContent().toString();
- return StringUtils.substringAfterLast( body, "token=" );
- }
-
-
- @Test
- public void updateManagementUser() throws Exception {
- Map<String, String> payload =
- hashMap( "email", "uort-user-1@apigee.com" ).map( "username", "uort-user-1" ).map( "name", "Test User" )
- .map( "password", "password" ).map( "organization", "uort-org" ).map( "company", "Apigee" );
-
- JsonNode node = mapper.readTree( resource().path( "/management/organizations" ).accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
- logNode( node );
- String userId = node.get( "data" ).get( "owner" ).get( "uuid" ).asText();
-
- assertEquals( "Apigee", node.get( "data" ).get( "owner" ).get( "properties" ).get( "company" ).asText() );
-
- String token = mgmtToken( "uort-user-1@apigee.com", "password" );
-
- node = mapper.readTree( resource().path( String.format( "/management/users/%s", userId ) ).queryParam( "access_token", token )
- .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
-
- logNode( node );
-
- payload = hashMap( "company", "Usergrid" );
- LOG.info( "sending PUT for company update" );
- node = mapper.readTree( resource().path( String.format( "/management/users/%s", userId ) ).queryParam( "access_token", token )
- .type( MediaType.APPLICATION_JSON_TYPE ).put( String.class, payload ));
- assertNotNull( node );
- node = mapper.readTree( resource().path( String.format( "/management/users/%s", userId ) ).queryParam( "access_token", token )
- .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
- assertEquals( "Usergrid", node.get( "data" ).get( "properties" ).get( "company" ).asText() );
-
-
- logNode( node );
- }
-
-
- @Test
- public void getUser() throws Exception {
-
- // set an organization property
- HashMap<String, Object> payload = new HashMap<String, Object>();
- Map<String, Object> properties = new HashMap<String, Object>();
- properties.put( "securityLevel", 5 );
- payload.put( OrganizationsResource.ORGANIZATION_PROPERTIES, properties );
-
-
- /**
- * Get the original org admin before we overwrite the property as a super user
- */
- final TestUser orgAdmin = context.getActiveUser();
- final String orgName = context.getOrgName();
- final String superAdminToken = superAdminToken();
-
- TestAdminUser superAdmin = new TestAdminUser( "super", "super", "superuser@usergrid.com" );
- superAdmin.setToken( superAdminToken );
-
- Organization org = context.withUser( superAdmin ).management().orgs().organization( orgName );
-
- org.put( payload );
-
-
- //now get the org
- JsonNode node = context.withUser( orgAdmin ).management().users().user( orgAdmin.getUser() ).get();
-
- logNode( node );
-
- JsonNode applications = node.findValue( "applications" );
- assertNotNull( applications );
- JsonNode users = node.findValue( "users" );
- assertNotNull( users );
-
- JsonNode securityLevel = node.findValue( "securityLevel" );
- assertNotNull( securityLevel );
- assertEquals( 5L, securityLevel.asLong() );
- }
-
-
- @Test
- public void getUserShallow() throws Exception {
-
-
- // set an organization property
- HashMap<String, Object> payload = new HashMap<String, Object>();
- Map<String, Object> properties = new HashMap<String, Object>();
- properties.put( "securityLevel", 5 );
- payload.put( OrganizationsResource.ORGANIZATION_PROPERTIES, properties );
-
-
- /**
- * Get the original org admin before we overwrite the property as a super user
- */
- final TestUser orgAdmin = context.getActiveUser();
- final String orgName = context.getOrgName();
- final String superAdminToken = superAdminToken();
-
- TestAdminUser superAdmin = new TestAdminUser( "super", "super", "superuser@usergrid.com" );
- superAdmin.setToken( superAdminToken );
-
- Organization org = context.withUser( superAdmin ).management().orgs().organization( orgName );
-
- org.put( payload );
-
-
- //now get the org
- JsonNode node = context.withUser( orgAdmin ).management().users().user( orgAdmin.getUser() ).withParam(
- "shallow", "true" ).get();
-
- logNode( node );
-
- JsonNode applications = node.findValue( "applications" );
- assertNull( applications );
- JsonNode users = node.findValue( "users" );
- assertNull( users );
-
- JsonNode securityLevel = node.findValue( "securityLevel" );
- assertNotNull( securityLevel );
- assertEquals( 5L, securityLevel.asLong() );
- }
-
-
- @Test
- public void reactivateMultipleSend() throws Exception {
-
- JsonNode node = mapper.readTree( resource().path( "/management/organizations" ).accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, buildOrgUserPayload( "reactivate" ) ));
-
- logNode( node );
- String email = node.get( "data" ).get( "owner" ).get( "email" ).asText();
- String uuid = node.get( "data" ).get( "owner" ).get( "uuid" ).asText();
- assertNotNull( email );
- assertEquals( "MUUserResourceIT-reactivate@apigee.com", email );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- // reactivate should send activation email
-
- node = mapper.readTree( resource().path( String.format( "/management/users/%s/reactivate", uuid ) )
- .queryParam( "access_token", adminAccessToken ).accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- List<Message> inbox = org.jvnet.mock_javamail.Mailbox.get( email );
-
- assertFalse( inbox.isEmpty() );
- logNode( node );
- }
-
-
- private Map<String, String> buildOrgUserPayload( String caller ) {
- String className = this.getClass().getSimpleName();
- Map<String, String> payload = hashMap( "email", String.format( "%s-%s@apigee.com", className, caller ) )
- .map( "username", String.format( "%s-%s-user", className, caller ) )
- .map( "name", String.format( "%s %s", className, caller ) ).map( "password", "password" )
- .map( "organization", String.format( "%s-%s-org", className, caller ) );
- return payload;
- }
-
-
- @Test
- public void checkPasswordReset() throws Exception {
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- TestUser user = context.getActiveUser();
-
- String email = user.getEmail();
- UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( email );
- String resetToken = setup.getMgmtSvc().getPasswordResetTokenForAdminUser( userInfo.getUuid(), 15000 );
-
- assertTrue( setup.getMgmtSvc().checkPasswordResetTokenForAdminUser( userInfo.getUuid(), resetToken ) );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- Form formData = new Form();
- formData.add( "token", resetToken );
- formData.add( "password1", "sesame" );
- formData.add( "password2", "sesame" );
-
- String html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
- .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
-
- assertTrue( html.contains( "password set" ) );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- assertFalse( setup.getMgmtSvc().checkPasswordResetTokenForAdminUser( userInfo.getUuid(), resetToken ) );
-
- html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
- .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
-
- assertTrue( html.contains( "invalid token" ) );
- }
-
-
- @Test
- @Ignore( "causes problems in build" )
- public void passwordResetIncorrectUserName() throws Exception {
-
- String email = "test2@usergrid.com";
- setup.getMgmtSvc().createAdminUser( "test2", "test2", "test2@usergrid.com", "sesa2me", false, false );
- UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( email );
- String resetToken = setup.getMgmtSvc().getPasswordResetTokenForAdminUser( userInfo.getUuid(), 15000 );
-
- assertTrue( setup.getMgmtSvc().checkPasswordResetTokenForAdminUser( userInfo.getUuid(), resetToken ) );
-
- Form formData = new Form();
- formData.add( "token", resetToken );
- formData.add( "password1", "sesa2me" );
- formData.add( "password2", "sesa2me" );
-
- String html = resource().path( "/management/users/" + "noodle" + userInfo.getUsername() + "/resetpw" )
- .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
-
- assertTrue( html.contains( "Incorrect username entered" ) );
-
- html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
- .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
-
- assertTrue( html.contains( "password set" ) );
- }
-
-
- @Test
- public void checkPasswordHistoryConflict() throws Exception {
-
- String[] passwords = new String[] { "password1", "password2", "password3", "password4" };
-
- UserInfo user =
- setup.getMgmtSvc().createAdminUser( "edanuff", "Ed Anuff", "ed@anuff.com", passwords[0], true, false );
- assertNotNull( user );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- OrganizationInfo organization = setup.getMgmtSvc().createOrganization( "ed-organization", user, true );
- assertNotNull( organization );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- // set history to 1
- Map<String, Object> props = new HashMap<String, Object>();
- props.put( OrganizationInfo.PASSWORD_HISTORY_SIZE_KEY, 1 );
- organization.setProperties( props );
- setup.getMgmtSvc().updateOrganization( organization );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( "ed@anuff.com" );
-
- Map<String, String> payload = hashMap( "oldpassword", passwords[0] ).map( "newpassword", passwords[0] ); // fail
-
- try {
- JsonNode node = mapper.readTree( resource().path( "/management/users/edanuff/password" )
- .accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
- fail( "should fail with conflict" );
- }
- catch ( UniformInterfaceException e ) {
- assertEquals( 409, e.getResponse().getStatus() );
- }
-
- payload.put( "newpassword", passwords[1] ); // ok
- JsonNode node = mapper.readTree( resource().path( "/management/users/edanuff/password" )
- .accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
- payload.put( "oldpassword", passwords[1] );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- payload.put( "newpassword", passwords[0] ); // fail
- try {
- node = mapper.readTree( resource().path( "/management/users/edanuff/password" )
- .accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
- fail( "should fail with conflict" );
- }
- catch ( UniformInterfaceException e ) {
- assertEquals( 409, e.getResponse().getStatus() );
- }
- }
-
-
- @Test
- public void checkPasswordChangeTime() throws Exception {
-
- final TestUser user = context.getActiveUser();
- String email = user.getEmail();
- UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( email );
- String resetToken = setup.getMgmtSvc().getPasswordResetTokenForAdminUser( userInfo.getUuid(), 15000 );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- Form formData = new Form();
- formData.add( "token", resetToken );
- formData.add( "password1", "sesame" );
- formData.add( "password2", "sesame" );
-
- String html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
- .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
- assertTrue( html.contains( "password set" ) );
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- JsonNode node = mapper.readTree( resource().path( "/management/token" )
- .queryParam( "grant_type", "password" )
- .queryParam( "username", email ).queryParam( "password", "sesame" )
- .accept( MediaType.APPLICATION_JSON )
- .get( String.class ));
-
- Long changeTime = node.get( "passwordChanged" ).longValue();
- assertTrue( System.currentTimeMillis() - changeTime < 2000 );
-
- Map<String, String> payload = hashMap( "oldpassword", "sesame" ).map( "newpassword", "test" );
- node = mapper.readTree( resource().path( "/management/users/" + userInfo.getUsername() + "/password" )
- .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
- .post( String.class, payload ));
-
- refreshIndex(context.getOrgName(), context.getAppName());
-
- node = mapper.readTree( resource().path( "/management/token" )
- .queryParam( "grant_type", "password" )
- .queryParam( "username", email )
- .queryParam( "password", "test" )
- .accept( MediaType.APPLICATION_JSON )
- .get( String.class ));
-
- Long changeTime2 = node.get( "passwordChanged" ).longValue();
- assertTrue( changeTime < changeTime2 );
- assertTrue( System.currentTimeMillis() - changeTime2 < 2000 );
-
- node = mapper.readTree( resource().path( "/management/me" ).queryParam( "grant_type", "password" )
- .queryParam( "username", email ).queryParam( "password", "test" ).accept( MediaType.APPLICATION_JSON )
- .get( String.class ));
-
- Long changeTime3 = node.get( "passwordChanged" ).longValue();
- assertEquals( changeTime2, changeTime3 );
- }
-
-
- /** USERGRID-1960 */
- @Test
- @Ignore( "Depends on other tests" )
- public void listOrgUsersByName() {
- JsonNode response = context.management().orgs().organization( context.getOrgName() ).users().get();
-
- //get the response and verify our user is there
- JsonNode adminNode = response.get( "data" ).get( 0 );
- assertEquals( context.getActiveUser().getEmail(), adminNode.get( "email" ).asText() );
- assertEquals( context.getActiveUser().getUser(), adminNode.get( "username" ).asText() );
- }
-
- @Test
- public void createOrgFromUserConnectionFail() throws Exception {
-
-
- Map<String, String> payload = hashMap( "email", "orgfromuserconn@apigee.com" ).map( "password", "password" )
- .map( "organization", "orgfromuserconn" );
-
- JsonNode node = mapper.readTree( resource().path( "/management/organizations" ).accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
-
- String userId = node.get( "data" ).get( "owner" ).get( "uuid" ).asText();
-
- assertNotNull( node );
-
- String token = mgmtToken( "orgfromuserconn@apigee.com", "password" );
-
- node = mapper.readTree( resource().path( String.format( "/management/users/%s/", userId ) ).queryParam( "access_token", token )
- .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
-
- logNode( node );
-
- payload = hashMap( "organization", "Orgfromuserconn" );
-
- // try to create the same org again off the connection
- try {
- node = mapper.readTree( resource().path( String.format( "/management/users/%s/organizations", userId ) )
- .queryParam( "access_token", token ).accept( MediaType.APPLICATION_JSON )
- .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
- fail( "Should have thrown unique exception on org name" );
- }
- catch ( Exception ex ) {
- }
+//
+// @Test
+// public void passwordMismatchErrorAdmin() {
+// String origPassword = "foo";
+// String newPassword = "bar";
+//
+// Map<String, String> data = new HashMap<String, String>();
+// data.put( "newpassword", origPassword );
+//
+// // now change the password, with an incorrect old password
+//
+// data.put( "oldpassword", origPassword );
+// data.put( "newpassword", newPassword );
+//
+// ClientResponse.Status responseStatus = null;
+//
+// try {
+// resource().path( "/management/users/test/password" ).accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, data );
+// }
+// catch ( UniformInterfaceException uie ) {
+// responseStatus = uie.getResponse().getClientResponseStatus();
+// }
+//
+// assertNotNull( responseStatus );
+//
+// assertEquals( ClientResponse.Status.BAD_REQUEST, responseStatus );
+// }
+//
+//
+// @Test
+// public void setAdminPasswordAsSysAdmin() throws IOException {
+//
+// String superToken = superAdminToken();
+//
+// String newPassword = "foo";
+//
+// Map<String, String> data = new HashMap<String, String>();
+// data.put( "newpassword", newPassword );
+//
+// // change the password as admin. The old password isn't required
+// JsonNode node = mapper.readTree( resource().path( "/management/users/test/password" ).queryParam( "access_token", superToken )
+// .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+// .post( String.class, data ));
+//
+// assertNull( getError( node ) );
+//
+// refreshIndex("test-organization", "test-app");
+//
+// // log in with the new password
+// String token = mgmtToken( "test", newPassword );
+//
+// assertNotNull( token );
+//
+// data.put( "newpassword", "test" );
+//
+// // now change the password back
+// node = mapper.readTree( resource().path( "/management/users/test/password" ).queryParam( "access_token", superToken )
+// .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+// .post( String.class, data ));
+//
+// assertNull( getError( node ) );
+// }
+//
+// @Test
+// public void mgmtUserFeed() throws Exception {
+// JsonNode userdata = mapper.readTree( resource().path( "/management/users/test@usergrid.com/feed" )
+// .queryParam( "access_token", adminAccessToken )
+// .accept( MediaType.APPLICATION_JSON ).get( String.class ));
+// assertTrue( StringUtils.contains( this.getEntity( userdata, 0 ).get( "title" ).asText(),
+// "<a href=\"mailto:test@usergrid.com\">" ) );
+// }
+//
+// //everything below is MUUserResourceIT
+//
+// @Test
+// public void testCaseSensitivityAdminUser() throws Exception {
+//
+// LOG.info( "Starting testCaseSensitivityAdminUser()" );
+//
+// UserInfo mixcaseUser = setup.getMgmtSvc()
+// .createAdminUser( "AKarasulu", "Alex Karasulu", "AKarasulu@Apache.org", "test", true, false );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// AuthPrincipalInfo adminPrincipal = new AuthPrincipalInfo(
+// AuthPrincipalType.ADMIN_USER, mixcaseUser.getUuid(), UUIDUtils.newTimeUUID() );
+// OrganizationInfo organizationInfo =
+// setup.getMgmtSvc().createOrganization( "MixedCaseOrg", mixcaseUser, true );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// String tokenStr = mgmtToken( "akarasulu@apache.org", "test" );
+//
+// // Should succeed even when we use all lowercase
+// JsonNode node = mapper.readTree( resource().path( "/management/users/akarasulu@apache.org" )
+// .queryParam( "access_token", tokenStr )
+// .accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE )
+// .get( String.class ));
+// logNode( node );
+// }
+//
+//
+// @Test
+// public void testUnconfirmedAdminLogin() throws Exception {
+//
+// // Setup properties to require confirmation of users
+// // -------------------------------------------
+//
+// Map<String, String> originalProperties = getRemoteTestProperties();
+//
+// try {
+// setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
+// setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
+// setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "true" );
+// setTestProperty( PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com" );
+// setTestProperty( PROPERTIES_NOTIFY_ADMIN_OF_ACTIVATION, "true" );
+//
+// assertTrue( setup.getMgmtSvc().newAdminUsersRequireConfirmation() );
+// assertFalse( setup.getMgmtSvc().newAdminUsersNeedSysAdminApproval() );
+//
+// // Setup org/app/user variables and create them
+// // -------------------------------------------
+// String orgName = this.getClass().getName();
+// String appName = "testUnconfirmedAdminLogin";
+// String userName = "TestUser";
+// String email = "test-user-46@mockserver.com";
+// String passwd = "testpassword";
+// OrganizationOwnerInfo orgOwner;
+//
+// orgOwner = setup.getMgmtSvc().createOwnerAndOrganization(
+// orgName, userName, appName, email, passwd, false, false );
+// assertNotNull( orgOwner );
+// String returnedUsername = orgOwner.getOwner().getUsername();
+// assertEquals( userName, returnedUsername );
+//
+// UserInfo adminUserInfo = setup.getMgmtSvc().getAdminUserByUsername( userName );
+// assertNotNull( adminUserInfo );
+// assertFalse( "adminUser should not be activated yet", adminUserInfo.isActivated() );
+// assertFalse( "adminUser should not be confirmed yet", adminUserInfo.isConfirmed() );
+//
+// // Attempt to authenticate but this should fail
+// // -------------------------------------------
+// JsonNode node;
+// try {
+// node = mapper.readTree( resource().path( "/management/token" )
+// .queryParam( "grant_type", "password" )
+// .queryParam( "username", userName )
+// .queryParam( "password", passwd )
+// .accept( MediaType.APPLICATION_JSON ).get( String.class ));
+//
+// fail( "Unconfirmed users should not be authorized to authenticate." );
+// }
+// catch ( UniformInterfaceException e ) {
+// node = mapper.readTree( e.getResponse().getEntity( String.class ));
+// assertEquals( "invalid_grant", node.get( "error" ).textValue() );
+// assertEquals( "User must be confirmed to authenticate",
+// node.get( "error_description" ).textValue() );
+// LOG.info( "Unconfirmed user was not authorized to authenticate!" );
+// }
+//
+// // Confirm the getting account confirmation email for unconfirmed user
+// // -------------------------------------------
+// List<Message> inbox = Mailbox.get( email );
+// assertFalse( inbox.isEmpty() );
+//
+// MockImapClient client = new MockImapClient( "mockserver.com", "test-user-46", "somepassword" );
+// client.processMail();
+//
+// Message confirmation = inbox.get( 0 );
+// assertEquals( "User Account Confirmation: " + email, confirmation.getSubject() );
+//
+// // Extract the token to confirm the user
+// // -------------------------------------------
+// String token = getTokenFromMessage( confirmation );
+// LOG.info( token );
+//
+// ActivationState state = setup.getMgmtSvc().handleConfirmationTokenForAdminUser(
+// orgOwner.getOwner().getUuid(), token );
+// assertEquals( ActivationState.ACTIVATED, state );
+//
+// Message activation = inbox.get( 1 );
+// assertEquals( "User Account Activated", activation.getSubject() );
+//
+// client = new MockImapClient( "mockserver.com", "test-user-46", "somepassword" );
+// client.processMail();
+//
+// refreshIndex(orgName, appName);
+//
+// // Attempt to authenticate again but this time should pass
+// // -------------------------------------------
+//
+// node = mapper.readTree( resource().path( "/management/token" )
+// .queryParam( "grant_type", "password" )
+// .queryParam( "username", userName )
+// .queryParam( "password", passwd )
+// .accept( MediaType.APPLICATION_JSON ).get( String.class ));
+//
+// assertNotNull( node );
+// LOG.info( "Authentication succeeded after confirmation: {}.", node.toString() );
+// }
+// finally {
+// setTestProperties( originalProperties );
+// }
+// }
+//
+//
+// @Test
+// public void testSystemAdminNeedsNoConfirmation() throws Exception {
+//
+// Map<String, String> originalProperties = getRemoteTestProperties();
+//
+// try {
+// // require comfirmation of new admin users
+// setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
+// setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
+// setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "true" );
+//
+// assertTrue( setup.getMgmtSvc().newAdminUsersRequireConfirmation() );
+// assertFalse( setup.getMgmtSvc().newAdminUsersNeedSysAdminApproval() );
+//
+// String sysadminUsername = ( String ) setup.getMgmtSvc().getProperties()
+// .get( AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_EMAIL );
+//
+// String sysadminPassword = ( String ) setup.getMgmtSvc().getProperties()
+// .get( AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_PASSWORD );
+//
+// // sysadmin login should suceed despite confirmation setting
+// JsonNode node;
+// try {
+// node = mapper.readTree( resource().path( "/management/token" ).queryParam( "grant_type", "password" )
+// .queryParam( "username", sysadminUsername ).queryParam( "password", sysadminPassword )
+// .accept( MediaType.APPLICATION_JSON ).get( String.class ));
+// }
+// catch ( UniformInterfaceException e ) {
+// fail( "Sysadmin should need no confirmation" );
+// }
+// }
+// finally {
+// setTestProperties( originalProperties );
+// }
+// }
+//
+//
+// @Test
+// public void testTestUserNeedsNoConfirmation() throws Exception {
+//
+// Map<String, String> originalProperties = getRemoteTestProperties();
+//
+// try {
+// // require comfirmation of new admin users
+// setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
+// setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
+// setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "true" );
+//
+// assertTrue( setup.getMgmtSvc().newAdminUsersRequireConfirmation() );
+// assertFalse( setup.getMgmtSvc().newAdminUsersNeedSysAdminApproval() );
+//
+// String testUserUsername = ( String ) setup.getMgmtSvc().getProperties()
+// .get( AccountCreationProps
+// .PROPERTIES_TEST_ACCOUNT_ADMIN_USER_EMAIL );
+//
+// String testUserPassword = ( String ) setup.getMgmtSvc().getProperties()
+// .get( AccountCreationProps
+// .PROPERTIES_TEST_ACCOUNT_ADMIN_USER_PASSWORD );
+//
+// // test user login should suceed despite confirmation setting
+// JsonNode node;
+// try {
+// node = mapper.readTree( resource().path( "/management/token" ).queryParam( "grant_type", "password" )
+// .queryParam( "username", testUserUsername ).queryParam( "password", testUserPassword )
+// .accept( MediaType.APPLICATION_JSON ).get( String.class ));
+// }
+// catch ( UniformInterfaceException e ) {
+// fail( "Test User should need no confirmation" );
+// }
+// }
+// finally {
+// setTestProperties( originalProperties );
+// }
+// }
+//
+//
+// private String getTokenFromMessage( Message msg ) throws IOException, MessagingException {
+// String body = ( ( MimeMultipart ) msg.getContent() ).getBodyPart( 0 ).getContent().toString();
+// return StringUtils.substringAfterLast( body, "token=" );
+// }
+//
+//
+// @Test
+// public void updateManagementUser() throws Exception {
+// Map<String, String> payload =
+// hashMap( "email", "uort-user-1@apigee.com" ).map( "username", "uort-user-1" ).map( "name", "Test User" )
+// .map( "password", "password" ).map( "organization", "uort-org" ).map( "company", "Apigee" );
+//
+// JsonNode node = mapper.readTree( resource().path( "/management/organizations" ).accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
+// logNode( node );
+// String userId = node.get( "data" ).get( "owner" ).get( "uuid" ).asText();
+//
+// assertEquals( "Apigee", node.get( "data" ).get( "owner" ).get( "properties" ).get( "company" ).asText() );
+//
+// String token = mgmtToken( "uort-user-1@apigee.com", "password" );
+//
+// node = mapper.readTree( resource().path( String.format( "/management/users/%s", userId ) ).queryParam( "access_token", token )
+// .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
+//
+// logNode( node );
+//
+// payload = hashMap( "company", "Usergrid" );
+// LOG.info( "sending PUT for company update" );
+// node = mapper.readTree( resource().path( String.format( "/management/users/%s", userId ) ).queryParam( "access_token", token )
+// .type( MediaType.APPLICATION_JSON_TYPE ).put( String.class, payload ));
+// assertNotNull( node );
+// node = mapper.readTree( resource().path( String.format( "/management/users/%s", userId ) ).queryParam( "access_token", token )
+// .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
+// assertEquals( "Usergrid", node.get( "data" ).get( "properties" ).get( "company" ).asText() );
+//
+//
+// logNode( node );
+// }
+//
+//
+// @Test
+// public void getUser() throws Exception {
+//
+// // set an organization property
+// HashMap<String, Object> payload = new HashMap<String, Object>();
+// Map<String, Object> properties = new HashMap<String, Object>();
+// properties.put( "securityLevel", 5 );
+// payload.put( OrganizationsResource.ORGANIZATION_PROPERTIES, properties );
+//
+//
+// /**
+// * Get the original org admin before we overwrite the property as a super user
+// */
+// final TestUser orgAdmin = context.getActiveUser();
+// final String orgName = context.getOrgName();
+// final String superAdminToken = superAdminToken();
+//
+// TestAdminUser superAdmin = new TestAdminUser( "super", "super", "superuser@usergrid.com" );
+// superAdmin.setToken( superAdminToken );
+//
+// Organization org = context.withUser( superAdmin ).management().orgs().organization( orgName );
+//
+// org.put( payload );
+//
+//
+// //now get the org
+// JsonNode node = context.withUser( orgAdmin ).management().users().user( orgAdmin.getUser() ).get();
+//
+// logNode( node );
+//
+// JsonNode applications = node.findValue( "applications" );
+// assertNotNull( applications );
+// JsonNode users = node.findValue( "users" );
+// assertNotNull( users );
+//
+// JsonNode securityLevel = node.findValue( "securityLevel" );
+// assertNotNull( securityLevel );
+// assertEquals( 5L, securityLevel.asLong() );
+// }
+//
+//
+// @Test
+// public void getUserShallow() throws Exception {
+//
+//
+// // set an organization property
+// HashMap<String, Object> payload = new HashMap<String, Object>();
+// Map<String, Object> properties = new HashMap<String, Object>();
+// properties.put( "securityLevel", 5 );
+// payload.put( OrganizationsResource.ORGANIZATION_PROPERTIES, properties );
+//
+//
+// /**
+// * Get the original org admin before we overwrite the property as a super user
+// */
+// final TestUser orgAdmin = context.getActiveUser();
+// final String orgName = context.getOrgName();
+// final String superAdminToken = superAdminToken();
+//
+// TestAdminUser superAdmin = new TestAdminUser( "super", "super", "superuser@usergrid.com" );
+// superAdmin.setToken( superAdminToken );
+//
+// Organization org = context.withUser( superAdmin ).management().orgs().organization( orgName );
+//
+// org.put( payload );
+//
+//
+// //now get the org
+// JsonNode node = context.withUser( orgAdmin ).management().users().user( orgAdmin.getUser() ).withParam(
+// "shallow", "true" ).get();
+//
+// logNode( node );
+//
+// JsonNode applications = node.findValue( "applications" );
+// assertNull( applications );
+// JsonNode users = node.findValue( "users" );
+// assertNull( users );
+//
+// JsonNode securityLevel = node.findValue( "securityLevel" );
+// assertNotNull( securityLevel );
+// assertEquals( 5L, securityLevel.asLong() );
+// }
+//
+//
+// @Test
+// public void reactivateMultipleSend() throws Exception {
+//
+// JsonNode node = mapper.readTree( resource().path( "/management/organizations" ).accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, buildOrgUserPayload( "reactivate" ) ));
+//
+// logNode( node );
+// String email = node.get( "data" ).get( "owner" ).get( "email" ).asText();
+// String uuid = node.get( "data" ).get( "owner" ).get( "uuid" ).asText();
+// assertNotNull( email );
+// assertEquals( "MUUserResourceIT-reactivate@apigee.com", email );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// // reactivate should send activation email
+//
+// node = mapper.readTree( resource().path( String.format( "/management/users/%s/reactivate", uuid ) )
+// .queryParam( "access_token", adminAccessToken ).accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// List<Message> inbox = org.jvnet.mock_javamail.Mailbox.get( email );
+//
+// assertFalse( inbox.isEmpty() );
+// logNode( node );
+// }
+//
+//
+// private Map<String, String> buildOrgUserPayload( String caller ) {
+// String className = this.getClass().getSimpleName();
+// Map<String, String> payload = hashMap( "email", String.format( "%s-%s@apigee.com", className, caller ) )
+// .map( "username", String.format( "%s-%s-user", className, caller ) )
+// .map( "name", String.format( "%s %s", className, caller ) ).map( "password", "password" )
+// .map( "organization", String.format( "%s-%s-org", className, caller ) );
+// return payload;
+// }
+//
+//
+// @Test
+// public void checkPasswordReset() throws Exception {
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// TestUser user = context.getActiveUser();
+//
+// String email = user.getEmail();
+// UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( email );
+// String resetToken = setup.getMgmtSvc().getPasswordResetTokenForAdminUser( userInfo.getUuid(), 15000 );
+//
+// assertTrue( setup.getMgmtSvc().checkPasswordResetTokenForAdminUser( userInfo.getUuid(), resetToken ) );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// Form formData = new Form();
+// formData.add( "token", resetToken );
+// formData.add( "password1", "sesame" );
+// formData.add( "password2", "sesame" );
+//
+// String html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
+// .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
+//
+// assertTrue( html.contains( "password set" ) );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// assertFalse( setup.getMgmtSvc().checkPasswordResetTokenForAdminUser( userInfo.getUuid(), resetToken ) );
+//
+// html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
+// .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
+//
+// assertTrue( html.contains( "invalid token" ) );
+// }
+//
+//
+// @Test
+// @Ignore( "causes problems in build" )
+// public void passwordResetIncorrectUserName() throws Exception {
+//
+// String email = "test2@usergrid.com";
+// setup.getMgmtSvc().createAdminUser( "test2", "test2", "test2@usergrid.com", "sesa2me", false, false );
+// UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( email );
+// String resetToken = setup.getMgmtSvc().getPasswordResetTokenForAdminUser( userInfo.getUuid(), 15000 );
+//
+// assertTrue( setup.getMgmtSvc().checkPasswordResetTokenForAdminUser( userInfo.getUuid(), resetToken ) );
+//
+// Form formData = new Form();
+// formData.add( "token", resetToken );
+// formData.add( "password1", "sesa2me" );
+// formData.add( "password2", "sesa2me" );
+//
+// String html = resource().path( "/management/users/" + "noodle" + userInfo.getUsername() + "/resetpw" )
+// .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
+//
+// assertTrue( html.contains( "Incorrect username entered" ) );
+//
+// html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
+// .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
+//
+// assertTrue( html.contains( "password set" ) );
+// }
+//
+//
+// @Test
+// public void checkPasswordHistoryConflict() throws Exception {
+//
+// String[] passwords = new String[] { "password1", "password2", "password3", "password4" };
+//
+// UserInfo user =
+// setup.getMgmtSvc().createAdminUser( "edanuff", "Ed Anuff", "ed@anuff.com", passwords[0], true, false );
+// assertNotNull( user );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// OrganizationInfo organization = setup.getMgmtSvc().createOrganization( "ed-organization", user, true );
+// assertNotNull( organization );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// // set history to 1
+// Map<String, Object> props = new HashMap<String, Object>();
+// props.put( OrganizationInfo.PASSWORD_HISTORY_SIZE_KEY, 1 );
+// organization.setProperties( props );
+// setup.getMgmtSvc().updateOrganization( organization );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( "ed@anuff.com" );
+//
+// Map<String, String> payload = hashMap( "oldpassword", passwords[0] ).map( "newpassword", passwords[0] ); // fail
+//
+// try {
+// JsonNode node = mapper.readTree( resource().path( "/management/users/edanuff/password" )
+// .accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
+// fail( "should fail with conflict" );
+// }
+// catch ( UniformInterfaceException e ) {
+// assertEquals( 409, e.getResponse().getStatus() );
+// }
+//
+// payload.put( "newpassword", passwords[1] ); // ok
+// JsonNode node = mapper.readTree( resource().path( "/management/users/edanuff/password" )
+// .accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
+// payload.put( "oldpassword", passwords[1] );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// payload.put( "newpassword", passwords[0] ); // fail
+// try {
+// node = mapper.readTree( resource().path( "/management/users/edanuff/password" )
+// .accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
+// fail( "should fail with conflict" );
+// }
+// catch ( UniformInterfaceException e ) {
+// assertEquals( 409, e.getResponse().getStatus() );
+// }
+// }
+//
+//
+// @Test
+// public void checkPasswordChangeTime() throws Exception {
+//
+// final TestUser user = context.getActiveUser();
+// String email = user.getEmail();
+// UserInfo userInfo = setup.getMgmtSvc().getAdminUserByEmail( email );
+// String resetToken = setup.getMgmtSvc().getPasswordResetTokenForAdminUser( userInfo.getUuid(), 15000 );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// Form formData = new Form();
+// formData.add( "token", resetToken );
+// formData.add( "password1", "sesame" );
+// formData.add( "password2", "sesame" );
+//
+// String html = resource().path( "/management/users/" + userInfo.getUsername() + "/resetpw" )
+// .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE ).post( String.class, formData );
+// assertTrue( html.contains( "password set" ) );
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// JsonNode node = mapper.readTree( resource().path( "/management/token" )
+// .queryParam( "grant_type", "password" )
+// .queryParam( "username", email ).queryParam( "password", "sesame" )
+// .accept( MediaType.APPLICATION_JSON )
+// .get( String.class ));
+//
+// Long changeTime = node.get( "passwordChanged" ).longValue();
+// assertTrue( System.currentTimeMillis() - changeTime < 2000 );
+//
+// Map<String, String> payload = hashMap( "oldpassword", "sesame" ).map( "newpassword", "test" );
+// node = mapper.readTree( resource().path( "/management/users/" + userInfo.getUsername() + "/password" )
+// .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
+// .post( String.class, payload ));
+//
+// refreshIndex(context.getOrgName(), context.getAppName());
+//
+// node = mapper.readTree( resource().path( "/management/token" )
+// .queryParam( "grant_type", "password" )
+// .queryParam( "username", email )
+// .queryParam( "password", "test" )
+// .accept( MediaType.APPLICATION_JSON )
+// .get( String.class ));
+//
+// Long changeTime2 = node.get( "passwordChanged" ).longValue();
+// assertTrue( changeTime < changeTime2 );
+// assertTrue( System.currentTimeMillis() - changeTime2 < 2000 );
+//
+// node = mapper.readTree( resource().path( "/management/me" ).queryParam( "grant_type", "password" )
+// .queryParam( "username", email ).queryParam( "password", "test" ).accept( MediaType.APPLICATION_JSON )
+// .get( String.class ));
+//
+// Long changeTime3 = node.get( "passwordChanged" ).longValue();
+// assertEquals( changeTime2, changeTime3 );
+// }
+//
+//
+// /** USERGRID-1960 */
+// @Test
+// @Ignore( "Depends on other tests" )
+// public void listOrgUsersByName() {
+// JsonNode response = context.management().orgs().organization( context.getOrgName() ).users().get();
+//
+// //get the response and verify our user is there
+// JsonNode adminNode = response.get( "data" ).get( 0 );
+// assertEquals( context.getActiveUser().getEmail(), adminNode.get( "email" ).asText() );
+// assertEquals( context.getActiveUser().getUser(), adminNode.get( "username" ).asText() );
+// }
+//
+// @Test
+// public void createOrgFromUserConnectionFail() throws Exception {
+//
+//
+// Map<String, String> payload = hashMap( "email", "orgfromuserconn@apigee.com" ).map( "password", "password" )
+// .map( "organization", "orgfromuserconn" );
+//
+// JsonNode node = mapper.readTree( resource().path( "/management/organizations" ).accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
+//
+// String userId = node.get( "data" ).get( "owner" ).get( "uuid" ).asText();
+//
+// assertNotNull( node );
+//
+// String token = mgmtToken( "orgfromuserconn@apigee.com", "password" );
+//
+// node = mapper.readTree( resource().path( String.format( "/management/users/%s/", userId ) ).queryParam( "access_token", token )
+// .type( MediaType.APPLICATION_JSON_TYPE ).get( String.class ));
+//
+// logNode( node );
+//
+// payload = hashMap( "organization", "Orgfromuserconn" );
+//
+// // try to create the same org again off the connection
+// try {
+// node = mapper.readTree( resource().path( String.format( "/management/users/%s/organizations", userId ) )
+// .queryParam( "access_token", token ).accept( MediaType.APPLICATION_JSON )
+// .type( MediaType.APPLICATION_JSON_TYPE ).post( String.class, payload ));
+// fail( "Should have thrown unique exception on org name" );
+// }
+// catch ( Exception ex ) {
+// }
}
}
|