You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by ry...@apache.org on 2015/05/21 18:19:32 UTC

[1/6] incubator-usergrid git commit: [USERGRID-515] Mapping request body and passing to service

Repository: incubator-usergrid
Updated Branches:
  refs/heads/USERGRID-515 853be0583 -> 266a111fb
  refs/heads/two-dot-o 472ccaf25 -> cb44722cc
  refs/heads/two-dot-o-dev b28aeee05 -> 53563e83b


[USERGRID-515] Mapping request body and passing to service


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/88b36b68
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/88b36b68
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/88b36b68

Branch: refs/heads/USERGRID-515
Commit: 88b36b6826c74cbbf21e57d22d9e143e2666ee1d
Parents: 853be05
Author: ryan bridges <ry...@apache.org>
Authored: Fri Apr 10 16:36:50 2015 -0400
Committer: ryan bridges <ry...@apache.org>
Committed: Fri Apr 10 16:36:50 2015 -0400

----------------------------------------------------------------------
 .../rest/applications/ApplicationResource.java  | 38 +++++++++++++-------
 1 file changed, 25 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/88b36b68/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
index f5562b5..a47bae6 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
@@ -30,10 +30,15 @@ import javax.ws.rs.core.PathSegment;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.lang.StringUtils;
 import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
 import org.apache.usergrid.rest.ApiResponse;
 import org.apache.usergrid.rest.security.annotations.RequireOrganizationAccess;
+import org.apache.usergrid.services.ServiceAction;
+import org.apache.usergrid.services.ServicePayload;
+import org.apache.usergrid.utils.JsonUtils;
+import org.jclouds.json.Json;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.Scope;
@@ -502,21 +507,28 @@ public class ApplicationResource extends ServiceResource {
             throw new IllegalArgumentException("Application ID not specified in request");
         }
 
-        ApplicationInfo app = management.getApplicationInfo( applicationId );
+        ApplicationInfo app = management.getApplicationInfo(applicationId);
         if ( app == null ) {
-            throw new EntityNotFoundException("Application ID " + applicationId + " not found");
-        }
-
-        try {
-            emf.restoreApplication(applicationId);
-        } catch (EntityNotFoundException enfe){
-            logger.warn("Attempt to restore %s failed: %s", applicationId, enfe.getMessage());
+//
+            app=management.getDeletedApplicationInfo(applicationId);
+            if(app==null) {
+                throw new EntityNotFoundException("Application ID " + applicationId + " not found");
+            }else{
+                emf.restoreApplication(applicationId);
+            }
         }
 
         ApiResponse response = createApiResponse();
-        response.setAction( "restore" );
-        response.setApplication( services.getApplication() );
-        response.setParams( ui.getQueryParameters() );
+        response.setAction("restore");
+        response.setApplication(services.getApplication());
+        response.setParams(ui.getQueryParameters());
+
+        ObjectMapper mapper = new ObjectMapper();
+        Map<String, Object> json = mapper.readValue(body, mapTypeReference);
+
+        ServicePayload payload = getPayload(json);
+
+        executeServiceRequest( ui, response, ServiceAction.PUT, payload );
 
         return new JSONWithPadding( response, callback );
     }
@@ -548,14 +560,14 @@ public class ApplicationResource extends ServiceResource {
 
         management.deleteApplication( applicationId );
 
-        LOG.debug( "ApplicationResource.delete() deleted appId = {}", applicationId);
+        LOG.debug("ApplicationResource.delete() deleted appId = {}", applicationId);
 
         ApiResponse response = createApiResponse();
         response.setAction( "delete" );
         response.setApplication(services.getApplication());
         response.setParams(ui.getQueryParameters());
 
-        LOG.debug( "ApplicationResource.delete() sending response ");
+        LOG.debug("ApplicationResource.delete() sending response ");
 
         return new JSONWithPadding( response, callback );
     }


[2/6] incubator-usergrid git commit: [USERGRID-515] Modifying create collection dialog to take entity

Posted by ry...@apache.org.
[USERGRID-515] Modifying create collection dialog to take entity


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/266a111f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/266a111f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/266a111f

Branch: refs/heads/USERGRID-515
Commit: 266a111fb3ac7061b24a4776272a191d981d7ef9
Parents: 88b36b6
Author: ryan bridges <ry...@apache.org>
Authored: Tue Apr 14 12:54:51 2015 -0400
Committer: ryan bridges <ry...@apache.org>
Committed: Tue Apr 14 12:54:51 2015 -0400

----------------------------------------------------------------------
 portal/js/data/data-controller.js | 58 ++++++++++++++++++++++++++++++++--
 portal/js/data/data.html          | 36 +++++++++++++++++++--
 portal/js/global/ug-service.js    | 30 +++++++++++++++++-
 3 files changed, 117 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/266a111f/portal/js/data/data-controller.js
----------------------------------------------------------------------
diff --git a/portal/js/data/data-controller.js b/portal/js/data/data-controller.js
index 486373e..0221b71 100644
--- a/portal/js/data/data-controller.js
+++ b/portal/js/data/data-controller.js
@@ -31,7 +31,7 @@ AppServices.Controllers.controller('DataCtrl', ['ug', '$scope', '$rootScope', '$
       $scope.queryLimitDisplay = 'block';
       $scope.queryStringDisplay = 'block';
       $scope.entitySelected = {};
-      $scope.newCollection = {};
+      $scope.newCollection = {name:"", entity:'{"name":"test"}'};
       $rootScope.queryCollection = {};
       $scope.data = {};
       $scope.data.queryPath = '';
@@ -71,7 +71,7 @@ AppServices.Controllers.controller('DataCtrl', ['ug', '$scope', '$rootScope', '$
       $scope.collectionList = collectionList;
       $scope.queryBoxesSelected = false;
       if(!$scope.queryPath){
-        $scope.loadCollection('/'+collectionList[Object.keys(collectionList).sort()[0]].name);
+        $scope.loadCollection('/'+$scope.collectionList[Object.keys($scope.collectionList).sort()[0]].name);
       }
       $scope.applyScope();
     });
@@ -98,6 +98,7 @@ AppServices.Controllers.controller('DataCtrl', ['ug', '$scope', '$rootScope', '$
 
     $scope.$on('collection-created',function(){
       $scope.newCollection.name = '';
+      $scope.newCollection.entity = '{ "name":"value" }';
     });
 
     $scope.$on('query-received', function(event, collection) {
@@ -151,6 +152,21 @@ AppServices.Controllers.controller('DataCtrl', ['ug', '$scope', '$rootScope', '$
       }
     };
 
+    $scope.newCollectionWithEntityDialog = function(modalId){
+      if(!($scope.newCollection.name && $scope.newCollection.name.length>0)){
+        $rootScope.$broadcast('alert', 'error', 'You must specify a collection name.');
+      }else if(!($scope.newCollection.entity && $scope.newCollection.entity.length>0)){
+        $rootScope.$broadcast('alert', 'error', 'You must specify JSON data for the new entity.');
+      }else if(!$scope.validateEntityData(true)){
+        //Do Nothing. Alert is thrown in validateEntityData
+      }else{
+        ug.createCollectionWithEntity($scope.newCollection.name, $scope.newCollection.entity);
+        ug.getTopCollections();
+        $rootScope.$broadcast('alert', 'success', 'Collection created successfully.');
+        $scope.hideModal(modalId)
+      }
+    };
+
     $scope.addToPath = function(uuid){
       $scope.data.queryPath = '/' + $rootScope.queryCollection._type + '/' + uuid;
     }
@@ -199,6 +215,24 @@ AppServices.Controllers.controller('DataCtrl', ['ug', '$scope', '$rootScope', '$
       $scope.verb = 'DELETE';
     }
 
+    $scope.validateEntityData = function(skipMessage) {
+      var queryBody = $scope.newCollection.entity;
+
+      try {
+        queryBody = JSON.parse(queryBody);
+      } catch (e) {
+        $rootScope.$broadcast('alert', 'error', 'JSON is not valid');
+        return false;
+      }
+
+      queryBody = JSON.stringify(queryBody,null,2);
+
+      !skipMessage && $rootScope.$broadcast('alert','success', 'JSON is valid');
+
+      $scope.newCollection.entity = queryBody;
+      return true;
+    }
+
     $scope.validateJson = function(skipMessage) {
       var queryBody = $scope.data.queryBody;
 
@@ -217,6 +251,24 @@ AppServices.Controllers.controller('DataCtrl', ['ug', '$scope', '$rootScope', '$
       return true;
     }
 
+    $scope.isValidJSON = function(data) {
+      try {
+        data = JSON.parse(data);
+      } catch (e) {
+        return false;
+      }
+      return true;
+    }
+
+    $scope.formatJSON = function(data) {
+      try {
+        data = JSON.parse(data);
+      } catch (e) {
+        return data;
+      }
+      return JSON.stringify(data,null,2);
+    }
+
 
     $scope.saveEntity = function(entity){
       if (!$scope.validateJson()) {
@@ -333,4 +385,4 @@ AppServices.Controllers.controller('DataCtrl', ['ug', '$scope', '$rootScope', '$
     $scope.resetNextPrev();
 
 
-  }]);
\ No newline at end of file
+  }]);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/266a111f/portal/js/data/data.html
----------------------------------------------------------------------
diff --git a/portal/js/data/data.html b/portal/js/data/data.html
index c732d1a..3183f53 100644
--- a/portal/js/data/data.html
+++ b/portal/js/data/data.html
@@ -6,9 +6,9 @@
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at
-  
+
   http://www.apache.org/licenses/LICENSE-2.0
-  
+
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -34,6 +34,36 @@
   </fieldset>
   </bsmodal>
 
+<bsmodal id="newCollectionWithEntity" title="Create new collection"
+    close="hideModal" closelabel="Cancel"
+    extrabutton="newCollectionWithEntityDialog" extrabuttonlabel="Create"
+    buttonid="collection" ng-cloak>
+  <fieldset>
+    <div class="control-group">
+      <label for="new-collection-name">Collection Name:</label>
+      <div class="controls">
+        <input type="text" ug-validate required
+          ng-pattern="collectionNameRegex"
+          ng-attr-title="{{collectionNameRegexDescription}}"
+          ng-model="$parent.newCollection.name"
+          placeholder="newCollection"
+          name="collection"
+          id="new-collection-name"
+          class="input-xlarge" />
+        <p class="help-block hide"></p>
+      </div>
+      <div class="controls">
+        <label for="new-collection-entity">Create a new entity for your collection:</label>
+        <textarea
+        ng-model="$parent.newCollection.entity" id="new-collection-entity" class="span6 pull-left" rows="4">{ "name":"value" }</textarea>
+        <br>
+        <a class="btn pull-left" ng-click="validateEntityData();">Validate JSON</a>
+        <p class="help-block hide"></p>
+      </div>
+    </div>
+  </fieldset>
+  </bsmodal>
+
   <div id="intro-page">
     <page-title title=" Collections" icon="&#128254;"></page-title>
   </div>
@@ -41,7 +71,7 @@
   <section class="row-fluid">
     <div id="intro-list" class="span3 user-col">
       <a class="btn btn-primary" id="new-collection-link"
-        ng-click="showModal('newCollection')" title="new collection"><i
+        ng-click="showModal('newCollectionWithEntity')" title="new collection"><i
         class="pictogram">&#57347;</i></a> <a class="help_tooltip"
         ng-mouseover="help.sendTooltipGA('data new collection')"
         ng-show="help.helpTooltipsEnabled" href="#"

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/266a111f/portal/js/global/ug-service.js
----------------------------------------------------------------------
diff --git a/portal/js/global/ug-service.js b/portal/js/global/ug-service.js
index cc934b7..e6d7cb9 100644
--- a/portal/js/global/ug-service.js
+++ b/portal/js/global/ug-service.js
@@ -258,6 +258,34 @@ AppServices.Services.factory('ug', function(configuration, $rootScope, utility,
 
       });
     },
+    createCollectionWithEntity: function(collectionName, entityData) {
+      try{
+        entityData=JSON.parse(entityData)
+        entityData.type=collectionName;
+      }catch(e){
+        $rootScope.$broadcast('alert', 'error', 'JSON is not valid');
+        return;
+      }
+      var self = this;
+      self.client().createEntity(entityData, function(err, entity) {
+        if (err) {
+          console.error(err);
+          return $rootScope.$broadcast('alert', 'error',
+            'error creating collection');
+        }
+        entity.destroy(function() {
+          self.getTopCollections(function(err, collections) {
+            if (err) {
+              $rootScope.$broadcast('alert', 'error',
+                'error creating collection');
+            } else {
+              $rootScope.$broadcast('collection-created',
+                collections);
+            }
+          });
+        });
+      });
+    },
     getApplications: function() {
       this.client().getApplications(function(err, applications) {
         if (err) {
@@ -449,7 +477,7 @@ AppServices.Services.factory('ug', function(configuration, $rootScope, utility,
 
           var queryPath = data.path;
           //remove preceeding slash
-          queryPath = queryPath.replace(/^\//, ''); 
+          queryPath = queryPath.replace(/^\//, '');
           self.getCollection('query', queryPath, null, 'order by modified DESC', null);
 
         }


[4/6] incubator-usergrid git commit: [USERGRID-336] Updating ContentTypeResourceIT

Posted by ry...@apache.org.
[USERGRID-336] Updating ContentTypeResourceIT


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/9c81a980
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/9c81a980
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/9c81a980

Branch: refs/heads/two-dot-o
Commit: 9c81a980dbe488b19f5d18638c4b1465427f6a8e
Parents: 8eda8be
Author: ryan bridges <ry...@apache.org>
Authored: Thu Apr 2 02:29:05 2015 -0400
Committer: ryan bridges <ry...@apache.org>
Committed: Fri Apr 17 10:05:17 2015 -0400

----------------------------------------------------------------------
 .../rest/filters/ContentTypeResourceIT.java     | 290 +++++++------------
 1 file changed, 97 insertions(+), 193 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9c81a980/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
index 5671249..10909b4 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/filters/ContentTypeResourceIT.java
@@ -17,52 +17,31 @@
 package org.apache.usergrid.rest.filters;
 
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.usergrid.rest.AbstractRestIT;
-import org.apache.usergrid.rest.TestContextSetup;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.representation.Form;
+import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
 import org.apache.usergrid.utils.JsonUtils;
 import org.apache.usergrid.utils.UUIDUtils;
+import org.junit.Ignore;
+import org.junit.Test;
 
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.util.EntityUtils;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import java.util.List;
 
-import static org.junit.Assert.assertEquals;
 import static org.apache.usergrid.utils.MapUtils.hashMap;
+import static org.junit.Assert.assertEquals;
 
 
-/** @author tnine */
+/**
+ * @author tnine
+ */
 
 // @Ignore("Client login is causing tests to fail due to socket closure by grizzly.  Need to re-enable once we're not
 // using grizzly to test")
 public class ContentTypeResourceIT extends AbstractRestIT {
 
-    @Rule
-    public TestContextSetup context = new TestContextSetup( this );
-
-
     /**
      * Creates a simple entity of type game. Does not set the content type. The type should be set to json to match the
      * body
@@ -70,32 +49,22 @@ public class ContentTypeResourceIT extends AbstractRestIT {
     @Test
     public void correctHeaders() throws Exception {
 
+        String json = JsonUtils.mapToFormattedJsonString(hashMap("name", "Solitaire1"));
 
-        Map<String, String> data = hashMap( "name", "Solitaire1" );
+        WebResource.Builder builder = app().collection("games").getResource(true)
+            .queryParam("access_token", this.getAdminToken().getAccessToken())
+            .type(MediaType.APPLICATION_JSON_TYPE)
+            .accept(MediaType.APPLICATION_JSON);
 
-        String json = JsonUtils.mapToFormattedJsonString( data );
+        ClientResponse clientResponse = builder.post(ClientResponse.class, json);
 
-        DefaultHttpClient client = new DefaultHttpClient();
+        assertEquals(200, clientResponse.getStatus());
 
-        HttpHost host = new HttpHost( super.getBaseURI().getHost(), super.getBaseURI().getPort() );
+        MultivaluedMap<String, String> headers = clientResponse.getHeaders();
 
-        HttpPost post = new HttpPost( String.format( "/%s/%s/games", context.getOrgUuid(), context.getAppUuid() ) );
-        post.setEntity( new StringEntity( json ) );
-        post.setHeader( HttpHeaders.AUTHORIZATION, "Bearer " + context.getActiveUser().getToken() );
-        post.setHeader( HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON );
-        post.setHeader( HttpHeaders.CONTENT_TYPE, "*/*" );
-
-        HttpResponse rsp = client.execute( host, post );
-
-        printResponse( rsp );
-
-        assertEquals( 200, rsp.getStatusLine().getStatusCode() );
-
-        Header[] headers = rsp.getHeaders( HttpHeaders.CONTENT_TYPE );
-
-        assertEquals( 1, headers.length );
-
-        assertEquals( MediaType.APPLICATION_JSON, headers[0].getValue() );
+        List<String> contentType = headers.get("Content-Type");
+        assertEquals(1, contentType.size());
+        assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
     }
 
 
@@ -105,106 +74,83 @@ public class ContentTypeResourceIT extends AbstractRestIT {
      */
     @Test
     public void textPlainContentType() throws Exception {
-        Map<String, String> data = hashMap( "name", "Solitaire2" );
-
-        String json = JsonUtils.mapToFormattedJsonString( data );
-
-        DefaultHttpClient client = new DefaultHttpClient();
+        String json = JsonUtils.mapToFormattedJsonString(hashMap("name", "Solitaire2"));
+        WebResource.Builder builder = app().getResource(true)
+            .queryParam("access_token", this.getAdminToken().getAccessToken())
+            .accept(MediaType.APPLICATION_JSON)
+            .type(MediaType.TEXT_PLAIN_TYPE);
 
-        HttpHost host = new HttpHost( super.getBaseURI().getHost(), super.getBaseURI().getPort() );
+        ClientResponse clientResponse = builder.post(ClientResponse.class, json);
 
-        HttpPost post = new HttpPost( String.format( "/%s/%s/games", context.getOrgUuid(), context.getAppUuid() ) );
-        post.setEntity( new StringEntity( json ) );
-        post.setHeader( HttpHeaders.AUTHORIZATION, "Bearer " + context.getActiveUser().getToken() );
-        post.setHeader( HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON );
-        post.setHeader( HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN );
+        assertEquals(200, clientResponse.getStatus());
 
-        HttpResponse rsp = client.execute( host, post );
+        MultivaluedMap<String, String> headers = clientResponse.getHeaders();
 
-        printResponse( rsp );
+        List<String> contentType = headers.get("Content-Type");
+        assertEquals(1, contentType.size());
+        assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
 
-        assertEquals( 200, rsp.getStatusLine().getStatusCode() );
-
-        Header[] headers = rsp.getHeaders( HttpHeaders.CONTENT_TYPE );
-
-        assertEquals( 1, headers.length );
-
-        assertEquals( MediaType.APPLICATION_JSON, headers[0].getValue() );
     }
 
 
-    /** Tests that application/x-www-url-form-encoded works correctly */
+    /**
+     * Tests that application/x-www-url-form-encoded works correctly
+     */
     @Test
     public void formEncodedContentType() throws Exception {
 
-        List<NameValuePair> pairs = new ArrayList<NameValuePair>();
-
-        pairs.add( new BasicNameValuePair( "organization", "formContentOrg" ) );
-        pairs.add( new BasicNameValuePair( "username", "formContentOrg" ) );
-        pairs.add( new BasicNameValuePair( "name", "Test User" ) );
-        pairs.add( new BasicNameValuePair( "email", UUIDUtils.newTimeUUID() + "@usergrid.org" ) );
-        pairs.add( new BasicNameValuePair( "password", "foobar" ) );
-
-        UrlEncodedFormEntity entity = new UrlEncodedFormEntity( pairs, "UTF-8" );
 
-        DefaultHttpClient client = new DefaultHttpClient();
+        Form payload = new Form();
+        payload.add("organization", "formContentOrg");
+        payload.add("username", "formContentOrg");
+        payload.add("name", "Test User");
+        payload.add("email", UUIDUtils.newTimeUUID() + "@usergrid.org");
+        payload.add("password", "foobar");
 
-        HttpHost host = new HttpHost( super.getBaseURI().getHost(), super.getBaseURI().getPort() );
+        WebResource.Builder builder = app().getResource(true, this.getAdminToken(clientSetup.getSuperuserName(), clientSetup.getSuperuserPassword()))
+            .accept(MediaType.APPLICATION_JSON)
+            .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE);
 
-        HttpPost post = new HttpPost( "/management/orgs" );
-        post.setEntity( entity );
-        // post.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + context.getActiveUser().getToken());
+        ClientResponse clientResponse = builder.post(ClientResponse.class, payload);
 
-        post.setHeader( HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED );
+        assertEquals(200, clientResponse.getStatus());
 
-        HttpResponse rsp = client.execute( host, post );
+        MultivaluedMap<String, String> headers = clientResponse.getHeaders();
 
-        printResponse( rsp );
-
-        // should be an error, no content type was set
-        assertEquals( 200, rsp.getStatusLine().getStatusCode() );
-
-        Header[] headers = rsp.getHeaders( HttpHeaders.CONTENT_TYPE );
-
-        assertEquals( 1, headers.length );
-
-        assertEquals( MediaType.APPLICATION_JSON, headers[0].getValue() );
+        List<String> contentType = headers.get("Content-Type");
+        assertEquals(1, contentType.size());
+        assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
     }
 
 
-    /** Tests that application/x-www-url-form-encoded works correctly */
+    /**
+     * Tests that application/x-www-url-form-encoded works correctly
+     */
     @Test
     @Ignore("This will only pass in tomcat, and shouldn't pass in grizzly")
     public void formEncodedUrlContentType() throws Exception {
-        BasicHttpParams params = new BasicHttpParams();
-
-        params.setParameter( "organization", "formUrlContentOrg" );
-        params.setParameter( "username", "formUrlContentOrg" );
-        params.setParameter( "name", "Test User" );
-        params.setParameter( "email", UUIDUtils.newTimeUUID() + "@usergrid.org" );
-        params.setParameter( "password", "foobar" );
-        params.setParameter( "grant_type", "password" );
-
-        DefaultHttpClient client = new DefaultHttpClient();
+        String orgName = clientSetup.getOrganizationName().toLowerCase();
+        String appName = clientSetup.getAppName().toLowerCase();
 
-        HttpHost host = new HttpHost( super.getBaseURI().getHost(), super.getBaseURI().getPort() );
+        WebResource.Builder builder = resource().path(String.format("/%s/%s", orgName, appName))
+            .queryParam("organization", "formUrlContentOrg")
+            .queryParam("username", "formUrlContentOrg")
+            .queryParam("name", "Test User")
+            .queryParam("email", UUIDUtils.newTimeUUID() + "@usergrid.org")
+            .queryParam("password", "foobar")
+            .queryParam("grant_type", "password")
+            .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE);
 
-        HttpPost post = new HttpPost( "/management/orgs" );
-        post.setParams( params );
+        ClientResponse clientResponse = builder.post(ClientResponse.class);
 
-        post.setHeader( HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED );
+        assertEquals(200, clientResponse.getStatus());
 
-        HttpResponse rsp = client.execute( host, post );
+        MultivaluedMap<String, String> headers = clientResponse.getHeaders();
 
-        printResponse( rsp );
+        List<String> contentType = headers.get("Content-Type");
+        assertEquals(1, contentType.size());
+        assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
 
-        assertEquals( 200, rsp.getStatusLine().getStatusCode() );
-
-        Header[] headers = rsp.getHeaders( HttpHeaders.CONTENT_TYPE );
-
-        assertEquals( 1, headers.length );
-
-        assertEquals( MediaType.APPLICATION_JSON, headers[0].getValue() );
     }
 
 
@@ -215,96 +161,54 @@ public class ContentTypeResourceIT extends AbstractRestIT {
     @Test
     public void missingAcceptAndContent() throws Exception {
 
-        Map<String, String> data = hashMap( "name", "Solitaire3" );
-
-        String json = JsonUtils.mapToFormattedJsonString( data );
-
-        DefaultHttpClient client = new DefaultHttpClient();
-
-        HttpHost host = new HttpHost( super.getBaseURI().getHost(), super.getBaseURI().getPort() );
-
-        HttpPost post = new HttpPost( String.format( "/%s/%s/games", context.getOrgUuid(), context.getAppUuid() ) );
-        post.setEntity( new StringEntity( json ) );
-        post.setHeader( HttpHeaders.AUTHORIZATION, "Bearer " + context.getActiveUser().getToken() );
+        WebResource.Builder builder = app().collection("games").getResource(true)
+            .queryParam("access_token", this.getAdminToken().getAccessToken())
+            .type(MediaType.APPLICATION_JSON_TYPE);
 
-        HttpResponse rsp = client.execute( host, post );
+        ClientResponse clientResponse = builder.post(ClientResponse.class, JsonUtils.mapToJsonString(hashMap("name", "bar")));
 
-        printResponse( rsp );
+        assertEquals(200, clientResponse.getStatus());
 
-        assertEquals( 200, rsp.getStatusLine().getStatusCode() );
+        MultivaluedMap<String, String> headers = clientResponse.getHeaders();
 
-        Header[] headers = rsp.getHeaders( HttpHeaders.CONTENT_TYPE );
-
-        assertEquals( 1, headers.length );
-
-        assertEquals( MediaType.APPLICATION_JSON, headers[0].getValue() );
+        List<String> contentType = headers.get("Content-Type");
+        assertEquals(1, contentType.size());
+        assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
     }
 
 
     /**
-     * Creates a simple entity of type game. Does not set the content type. The type should be set to json to match the
+     * Creates a simple entity of type game. Does not set the Accepts header. The type should be set to json to match the
      * body.  Then does a get without Accept type, it should return application/json, not text/csv
      */
     @Test
     public void noAcceptGet() throws Exception {
-        Map<String, String> data = hashMap( "name", "bar" );
-
-        String json = JsonUtils.mapToFormattedJsonString( data );
-
-        DefaultHttpClient client = new DefaultHttpClient();
-
-        HttpHost host = new HttpHost( super.getBaseURI().getHost(), super.getBaseURI().getPort() );
-
-        HttpPost post = new HttpPost( String.format( "/%s/%s/games", context.getOrgUuid(), context.getAppUuid() ) );
-        post.setEntity( new StringEntity( json ) );
-        post.setHeader( HttpHeaders.AUTHORIZATION, "Bearer " + context.getActiveUser().getToken() );
-        post.setHeader( HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON );
-        post.setHeader( HttpHeaders.CONTENT_TYPE, "*/*" );
-
-        HttpResponse rsp = client.execute( host, post );
 
-        printResponse( rsp );
+        WebResource.Builder builder = app().collection("games").getResource(true)
+            .queryParam("access_token", this.getAdminToken().getAccessToken())
+            .type(MediaType.APPLICATION_JSON_TYPE);
 
-        assertEquals( 200, rsp.getStatusLine().getStatusCode() );
+        ClientResponse clientResponse = builder.post(ClientResponse.class, JsonUtils.mapToJsonString(hashMap("name", "bar")));
 
-        Header[] headers = rsp.getHeaders( HttpHeaders.CONTENT_TYPE );
+        assertEquals(200, clientResponse.getStatus());
 
-        assertEquals( 1, headers.length );
+        MultivaluedMap<String, String> headers = clientResponse.getHeaders();
 
-        assertEquals( MediaType.APPLICATION_JSON, headers[0].getValue() );
+        List<String> contentType = headers.get("Content-Type");
+        assertEquals(1, contentType.size());
+        assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
 
         //do the get with no content type, it should get set to application/json
-        HttpGet get = new HttpGet( String.format( "/%s/%s/games", context.getOrgUuid(), context.getAppUuid() ) );
-        get.setHeader( HttpHeaders.AUTHORIZATION, "Bearer " + context.getActiveUser().getToken() );
+        clientResponse = builder.get(ClientResponse.class);
 
-        rsp = client.execute( host, get );
+        assertEquals(200, clientResponse.getStatus());
 
-        printResponse( rsp );
+        headers = clientResponse.getHeaders();
 
-        assertEquals( 200, rsp.getStatusLine().getStatusCode() );
-
-        headers = rsp.getHeaders( HttpHeaders.CONTENT_TYPE );
-
-        assertEquals( 1, headers.length );
-
-        assertEquals( MediaType.APPLICATION_JSON, headers[0].getValue() );
+        contentType = headers.get("Content-Type");
+        assertEquals(1, contentType.size());
+        assertEquals(MediaType.APPLICATION_JSON, contentType.get(0));
     }
 
 
-    private void printResponse( HttpResponse rsp ) throws ParseException, IOException {
-        HttpEntity entity = rsp.getEntity();
-
-        System.out.println( "----------------------------------------" );
-        System.out.println( rsp.getStatusLine() );
-
-        Header[] headers = rsp.getAllHeaders();
-        for ( int i = 0; i < headers.length; i++ ) {
-            System.out.println( headers[i] );
-        }
-        System.out.println( "----------------------------------------" );
-
-        if ( entity != null ) {
-            System.out.println( EntityUtils.toString( entity ) );
-        }
-    }
 }


[3/6] incubator-usergrid git commit: [USERGRID-340] Updating RegistrationIT

Posted by ry...@apache.org.
[USERGRID-340] Updating RegistrationIT


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/8eda8bed
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/8eda8bed
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/8eda8bed

Branch: refs/heads/two-dot-o
Commit: 8eda8bedc8dd23a7a1d39729ae3379933afa5f82
Parents: 2d1c8b8
Author: ryan bridges <ry...@apache.org>
Authored: Thu Apr 2 02:29:50 2015 -0400
Committer: ryan bridges <ry...@apache.org>
Committed: Fri Apr 17 10:05:17 2015 -0400

----------------------------------------------------------------------
 .../rest/management/RegistrationIT.java         | 440 +++++++++----------
 1 file changed, 204 insertions(+), 236 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/8eda8bed/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
index f949da3..1e94a2d 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
@@ -17,212 +17,193 @@
 package org.apache.usergrid.rest.management;
 
 
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-
-import javax.mail.Folder;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.Store;
-import javax.mail.internet.MimeMultipart;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-
-import com.eaio.uuid.UUIDGen;
-import com.fasterxml.jackson.databind.JsonNode;
-
-import org.junit.Rule;
+import com.sun.jersey.api.client.UniformInterfaceException;
+import com.sun.jersey.api.representation.Form;
+import org.apache.commons.lang.StringUtils;
+import org.apache.usergrid.management.AccountCreationProps;
+import org.apache.usergrid.persistence.model.util.UUIDGenerator;
+import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
+import org.apache.usergrid.rest.test.resource2point0.model.*;
 import org.junit.Test;
 import org.jvnet.mock_javamail.Mailbox;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.usergrid.management.UserInfo;
-import org.apache.usergrid.persistence.model.util.UUIDGenerator;
-import org.apache.usergrid.rest.AbstractRestIT;
-import org.apache.usergrid.rest.ITSetup;
-import org.apache.usergrid.rest.TestContextSetup;
-import org.apache.usergrid.rest.test.security.TestAppUser;
-import org.apache.usergrid.rest.test.security.TestUser;
 
-import org.apache.commons.lang.StringUtils;
+import javax.mail.*;
+import javax.mail.internet.MimeMultipart;
+import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+import java.util.*;
 
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.apache.usergrid.management.AccountCreationProps.PROPERTIES_ADMIN_RESETPW_URL;
-import static org.apache.usergrid.management.AccountCreationProps.PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION;
-import static org.apache.usergrid.management.AccountCreationProps.PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS;
-import static org.apache.usergrid.management.AccountCreationProps.PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS;
-import static org.apache.usergrid.management.AccountCreationProps.PROPERTIES_SYSADMIN_EMAIL;
-import static org.apache.usergrid.utils.MapUtils.hashMap;
+import static org.apache.usergrid.management.AccountCreationProps.*;
+import static org.junit.Assert.*;
 
 
 public class RegistrationIT extends AbstractRestIT {
 
-    private static final Logger logger = LoggerFactory.getLogger( RegistrationIT.class );
-
-    private static final ITSetup setup = ITSetup.getInstance();
-
-    @Rule
-    public TestContextSetup context = new TestContextSetup( this );
-
-
-    @Test
-    public void postCreateOrgAndAdmin() throws Exception {
-
-        Map<String, String> originalProperties = getRemoteTestProperties();
+    private static final Logger logger = LoggerFactory.getLogger(RegistrationIT.class);
 
-        try {
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
-            setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com" );
+    public Map<String, Object> getRemoteTestProperties() {
+        return clientSetup.getRestClient().testPropertiesResource().get().getProperties();
+    }
 
-//            JsonNode node = postCreateOrgAndAdmin( "test-org-1", "test-user-1", "Test User",
-//                    "test-user-1@mockserver.com", "testpassword" );
+    /**
+     * Sets a management service property locally and remotely.
+     */
+    public void setTestProperty(String key, Object value) {
+        // set the value remotely (in the Usergrid instance running in Tomcat classloader)
+        Entity props = new Entity();
+        props.put(key, value);
+        clientSetup.getRestClient().testPropertiesResource().post(props);
 
+    }
 
-            final String username = "registrationUser"+UUIDGenerator.newTimeUUID();
-            final String email = username+"@usergrid.com" ;
-            final String password = "password";
+    public void setTestProperties(Map<String, Object> props) {
+        Entity properties = new Entity();
+        // set the values locally (in the Usergrid instance here in the JUnit classloader
+        for (String key : props.keySet()) {
+            properties.put(key, props.get(key));
 
-            final TestUser user1 = new TestAppUser(username , password, email);
+        }
 
-            context.withOrg( "org" + UUIDGenerator.newTimeUUID() ).withApp( "app" + UUIDGenerator.newTimeUUID() ).withUser( user1 ).createNewOrgAndUser();
-            context.createAppForOrg();
+        // set the values remotely (in the Usergrid instance running in Tomcat classloader)
+        clientSetup.getRestClient().testPropertiesResource().post(properties);
+    }
 
-            final UUID owner_uuid = context.getActiveUser().getUuid();
+    public String getTokenFromMessage(Message msg) throws IOException, MessagingException {
+        String body = ((MimeMultipart) msg.getContent()).getBodyPart(0).getContent().toString();
+        // TODO better token extraction
+        // this is going to get the wrong string if the first part is not
+        // text/plain and the url isn't the last character in the email
+        return StringUtils.substringAfterLast(body, "token=");
+    }
 
-//            refreshIndex("test-organization", "test-app");
-//
-//            UUID owner_uuid =
-//                    UUID.fromString( node.findPath( "data" ).findPath( "owner" ).findPath( "uuid" ).textValue() );
+    public User postAddAdminToOrg(String organizationName, String email, String password, String token) throws IOException {
 
-            List<Message> inbox = org.jvnet.mock_javamail.Mailbox.get( "test-user-1@mockserver.com" );
+        User user = this
+            .management()
+            .orgs()
+            .organization(organizationName)
+            .users()
+            .getResource(false)
+            .queryParam("access_token", token)
+            .post(User.class, new User().chainPut("email", email).chainPut("password", password));
 
-            assertFalse( inbox.isEmpty() );
+        assertNotNull(user);
+        return user;
+    }
 
-            Message account_confirmation_message = inbox.get( 0 );
-            assertEquals( "User Account Confirmation: " + email,
-                    account_confirmation_message.getSubject() );
+    private Message[] getMessages(String host, String user, String password) throws MessagingException, IOException {
 
-            String token = getTokenFromMessage( account_confirmation_message );
-            logger.info( token );
+        Session session = Session.getDefaultInstance(new Properties());
+        Store store = session.getStore("imap");
+        store.connect(host, user, password);
 
-            setup.getMgmtSvc().disableAdminUser( owner_uuid );
+        Folder folder = store.getFolder("inbox");
+        folder.open(Folder.READ_ONLY);
+        Message[] msgs = folder.getMessages();
 
-            refreshIndex(context.getOrgName(), context.getAppName());
+        for (Message m : msgs) {
+            logger.info("Subject: " + m.getSubject());
+            logger.info(
+                "Body content 0 " + ((MimeMultipart) m.getContent()).getBodyPart(0).getContent());
+            logger.info(
+                "Body content 1 " + ((MimeMultipart) m.getContent()).getBodyPart(1).getContent());
+        }
+        return msgs;
+    }
 
-            try {
-                resource().path( "/management/token" ).queryParam( "grant_type", "password" )
-                        .queryParam( "username", username ).queryParam( "password", password )
-                        .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
-                        .get( String.class );
-                fail( "request for disabled user should fail" );
-            }
-            catch ( UniformInterfaceException uie ) {
-                ClientResponse.Status status = uie.getResponse().getClientResponseStatus();
-                JsonNode body = mapper.readTree( uie.getResponse().getEntity( String.class ));
-                assertEquals( "user disabled", body.findPath( "error_description" ).textValue() );
-            }
+    @Test
+    public void postCreateOrgAndAdmin() throws Exception {
 
-            setup.getMgmtSvc().deactivateUser( setup.getEmf().getManagementAppId(), owner_uuid );
-            try {
-                resource().path( "/management/token" ).queryParam( "grant_type", "password" )
-                        .queryParam( "username", username ).queryParam( "password", password)
-                        .accept( MediaType.APPLICATION_JSON ).type( MediaType.APPLICATION_JSON_TYPE )
-                        .get( String.class );
-                fail( "request for deactivated user should fail" );
-            }
-            catch ( UniformInterfaceException uie ) {
-                ClientResponse.Status status = uie.getResponse().getClientResponseStatus();
-                JsonNode body = mapper.readTree( uie.getResponse().getEntity( String.class ));
-                assertEquals( "user not activated", body.findPath( "error_description" ).textValue() );
-            }
+        Map<String, Object> originalProperties = getRemoteTestProperties();
 
-            // assertEquals(ActivationState.ACTIVATED,
-            // svcSetup.getMgmtSvc().handleConfirmationTokenForAdminUser(
-            // owner_uuid, token));
+        try {
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false");
+            setTestProperty(PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com");
 
-            // need to enable JSP usage in the test version of Jetty to make this test run
-            //      String response = resource()
-            //        .path("/management/users/" + owner_uuid + "/confirm").get(String.class);
-            //      logger.info(response);
-            //      Message account_activation_message = inbox.get(1);
-            //      assertEquals("User Account Activated", account_activation_message.getSubject());
+            final String username = "registrationUser" + UUIDGenerator.newTimeUUID();
+            final String email = username + "@usergrid.com";
+            final String password = "password";
 
-        }
-        finally {
-            setTestProperties( originalProperties );
-        }
-    }
+            Organization organization = this
+                .management()
+                .orgs()
+                .post(new Organization("org" + UUIDGenerator.newTimeUUID(), username, email, username, password, new HashMap<String, Object>()), this.getAdminToken());
+            Application application = new Application("app" + UUIDGenerator.newTimeUUID());
+            this.management().orgs().organization(organization.getName()).app().post(application);
 
+            List<Message> inbox = org.jvnet.mock_javamail.Mailbox.get("test-user-1@mockserver.com");
 
-    public String getTokenFromMessage( Message msg ) throws IOException, MessagingException {
-        String body = ( ( MimeMultipart ) msg.getContent() ).getBodyPart( 0 ).getContent().toString();
-        String token = StringUtils.substringAfterLast( body, "token=" );
-        // TODO better token extraction
-        // this is going to get the wrong string if the first part is not
-        // text/plain and the url isn't the last character in the email
-        return token;
-    }
+            assertFalse(inbox.isEmpty());
 
+            Message account_confirmation_message = inbox.get(0);
+            assertEquals("User Account Confirmation: " + email,
+                account_confirmation_message.getSubject());
 
+            String token = getTokenFromMessage(account_confirmation_message);
+            logger.info(token);
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    public JsonNode postAddAdminToOrg( String organizationName, String email, String password, String token ) throws IOException {
-        JsonNode node = null;
+            setTestProperty(AccountCreationProps.PROPERTIES_SYSADMIN_LOGIN_ALLOWED, "false");
 
-        MultivaluedMap formData = new MultivaluedMapImpl();
-        formData.add( "email", email );
-        formData.add( "password", password );
+            refreshIndex();
 
-        node = mapper.readTree( resource().path( "/management/organizations/" + organizationName + "/users" )
-                .queryParam( "access_token", token ).accept( MediaType.APPLICATION_JSON )
-                .type( MediaType.APPLICATION_FORM_URLENCODED ).post( String.class, formData ));
+            try {
+                this.management().orgs().organization(organization.getName()).users().user(username)
+                    .getResource(false)
+                    .queryParam("username", username)
+                    .queryParam("password", password)
+                    .get(String.class);
+                fail("request for disabled user should fail");
+            } catch (UniformInterfaceException uie) {
+                assertEquals("user disabled", uie.getMessage());
+            }
+            this.management()
+                .orgs()
+                .organization(organization.getName())
+                .users()
+                .user(username)
+                .put(new Entity().chainPut("activated", false).chainPut("deactivated", System.currentTimeMillis()));
+            try {
+                management()
+                    .token()
+                    .get(new QueryParameters().addParam("grant_type", "password").addParam("username", username).addParam("password", password));
+                fail("request for deactivated user should fail");
+            } catch (UniformInterfaceException uie) {
+                assertEquals("user not activated", uie.getMessage());
+            }
 
-        assertNotNull( node );
-        logNode( node );
-        return node;
+        } finally {
+            setTestProperties(originalProperties);
+        }
     }
 
 
     @Test
     public void putAddToOrganizationFail() throws Exception {
 
-        Map<String, String> originalProperties = getRemoteTestProperties();
+        Map<String, Object> originalProperties = getRemoteTestProperties();
 
         try {
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
-            setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com" );
-
-            String t = adminToken();
-            MultivaluedMap formData = new MultivaluedMapImpl();
-            formData.add( "foo", "bar" );
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false");
+            setTestProperty(PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com");
+
+            String t = this.getAdminToken().getAccessToken();
+            Form form = new Form();
+            form.add("foo", "bar");
             try {
-                resource().path( "/management/organizations/test-organization/users/test-admin-null@mockserver.com" )
-                        .queryParam( "access_token", t ).accept( MediaType.APPLICATION_JSON )
-                        .type( MediaType.APPLICATION_FORM_URLENCODED ).put( String.class, formData );
+                this.org().getResource(false).path("/users/test-admin-null@mockserver.com")
+                    .queryParam("access_token", t).accept(MediaType.APPLICATION_JSON)
+                    .type(MediaType.APPLICATION_FORM_URLENCODED).put(String.class, form);
+            } catch (UniformInterfaceException e) {
+                assertEquals("Should receive a 400 Not Found", 400, e.getResponse().getStatus());
             }
-            catch ( UniformInterfaceException e ) {
-                assertEquals( "Should receive a 400 Not Found", 400, e.getResponse().getStatus() );
-            }
-        }
-        finally {
-            setTestProperties( originalProperties );
+        } finally {
+            setTestProperties(originalProperties);
         }
     }
 
@@ -230,19 +211,18 @@ public class RegistrationIT extends AbstractRestIT {
     @Test
     public void postAddToOrganization() throws Exception {
 
-        Map<String, String> originalProperties = getRemoteTestProperties();
+        Map<String, Object> originalProperties = getRemoteTestProperties();
 
         try {
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
-            setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com" );
-
-            String t = adminToken();
-            postAddAdminToOrg( "test-organization", "test-admin@mockserver.com", "password", t );
-        }
-        finally {
-            setTestProperties( originalProperties );
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false");
+            setTestProperty(PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com");
+
+            String t = this.getAdminToken().getAccessToken();
+            postAddAdminToOrg("test-organization", "test-admin@mockserver.com", "password", t);
+        } finally {
+            setTestProperties(originalProperties);
         }
     }
 
@@ -250,48 +230,57 @@ public class RegistrationIT extends AbstractRestIT {
     @Test
     public void addNewAdminUserWithNoPwdToOrganization() throws Exception {
 
-        Map<String, String> originalProperties = getRemoteTestProperties();
+        Map<String, Object> originalProperties = getRemoteTestProperties();
 
         try {
             Mailbox.clearAll();
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
-            setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com" );
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false");
+            setTestProperty(PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com");
 
             // this should send resetpwd  link in email to newly added org admin user(that did not exist
             ///in usergrid) and "User Invited To Organization" email
-            String adminToken = adminToken();
-            JsonNode node = postAddAdminToOrg( "test-organization", "test-admin-nopwd@mockserver.com", "", adminToken );
-            String uuid = node.get( "data" ).get( "user" ).get( "uuid" ).textValue();
-            UUID userId = UUID.fromString( uuid );
+            String adminToken = getAdminToken().getAccessToken();
+            Entity node = postAddAdminToOrg("test-organization", "test-admin-nopwd@mockserver.com", "", adminToken);
+            UUID userId = (UUID) node.getMap("data").get("user").get("uuid");
 
-            refreshIndex("test-organization", "test-app");
+            refreshIndex();
 
             String subject = "Password Reset";
-            String reset_url = String.format( setup.getProps().getProperty( PROPERTIES_ADMIN_RESETPW_URL ), uuid );
+            Map<String, Object> testProperties = this.getRemoteTestProperties();
+            String reset_url = String.format((String) testProperties.get(PROPERTIES_ADMIN_RESETPW_URL), userId.toString());
             String invited = "User Invited To Organization";
 
-            Message[] msgs = getMessages( "mockserver.com", "test-admin-nopwd", "password" );
+            Message[] msgs = getMessages("mockserver.com", "test-admin-nopwd", "password");
 
             // 1 Invite and 1 resetpwd
-            assertTrue( msgs.length == 2 );
+            assertTrue(msgs.length == 2);
 
             //email subject
-            assertEquals( subject, msgs[0].getSubject() );
-            assertEquals( invited, msgs[1].getSubject() );
+            assertEquals(subject, msgs[0].getSubject());
+            assertEquals(invited, msgs[1].getSubject());
 
             // reseturl
-            String mailContent = ( String ) ( ( MimeMultipart ) msgs[0].getContent() ).getBodyPart( 1 ).getContent();
-            logger.info( mailContent );
-            assertTrue( StringUtils.contains( mailContent, reset_url ) );
+            String mailContent = (String) ((MimeMultipart) msgs[0].getContent()).getBodyPart(1).getContent();
+            logger.info(mailContent);
+            assertTrue(StringUtils.contains(mailContent, reset_url));
 
             //token
-            String token = getTokenFromMessage( msgs[0] );
-            assertTrue( setup.getMgmtSvc().checkPasswordResetTokenForAdminUser( userId, token ) );
-        }
-        finally {
-            setTestProperties( originalProperties );
+            String token = getTokenFromMessage(msgs[0]);
+            this
+                .management()
+                .orgs()
+                .organization("test-organization")
+                .users()
+                .getResource(false)
+                .queryParam("access_token", token)
+                .get(String.class);
+            fail("Should not be able to authenticate an admin with no admin access allowed");
+        } catch (UniformInterfaceException uie) {
+            assertEquals(401, uie.getResponse().getStatus());
+        } finally {
+            setTestProperties(originalProperties);
         }
     }
 
@@ -299,75 +288,54 @@ public class RegistrationIT extends AbstractRestIT {
     @Test
     public void addExistingAdminUserToOrganization() throws Exception {
 
-        Map<String, String> originalProperties = getRemoteTestProperties();
+        Map<String, Object> originalProperties = getRemoteTestProperties();
 
         try {
             Mailbox.clearAll();
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false" );
-            setTestProperty( PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false" );
-            setTestProperty( PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com" );
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ADMIN_USERS, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_APPROVES_ORGANIZATIONS, "false");
+            setTestProperty(PROPERTIES_ADMIN_USERS_REQUIRE_CONFIRMATION, "false");
+            setTestProperty(PROPERTIES_SYSADMIN_EMAIL, "sysadmin-1@mockserver.com");
 
             // svcSetup an admin user
             String adminUserName = "AdminUserFromOtherOrg";
             String adminUserEmail = "AdminUserFromOtherOrg@otherorg.com";
 
-            UserInfo adminUser = setup.getMgmtSvc().createAdminUser(
-                    adminUserEmail, adminUserEmail, adminUserEmail, "password1", true, false );
+            User adminUser = (User) management().users().post(new User(adminUserEmail, adminUserEmail, adminUserEmail, "password1"));
 
-            refreshIndex("test-organization", "test-app");
+            refreshIndex();
 
-            assertNotNull( adminUser );
-            Message[] msgs = getMessages( "otherorg.com", adminUserName, "password1" );
-            assertEquals( 1, msgs.length );
+            assertNotNull(adminUser);
+            Message[] msgs = getMessages("otherorg.com", adminUserName, "password1");
+            assertEquals(1, msgs.length);
 
             // add existing admin user to org
 
             // this should NOT send resetpwd link in email to newly added org admin user(that
             // already exists in usergrid) only "User Invited To Organization" email
-            String adminToken = adminToken();
-            JsonNode node = postAddAdminToOrg( "test-organization",
-                    adminUserEmail, "password1", adminToken );
-            String uuid = node.get( "data" ).get( "user" ).get( "uuid" ).textValue();
-            UUID userId = UUID.fromString( uuid );
+            String adminToken = getAdminToken().getAccessToken();
+            User node = postAddAdminToOrg("test-organization",
+                adminUserEmail, "password1", adminToken);
+            String uuid = node.getMap("data").get("user").get("uuid").toString();
+            UUID userId = UUID.fromString(uuid);
 
-            assertEquals( adminUser.getUuid(), userId );
+            assertEquals(adminUser.getUuid(), userId);
 
-            msgs = getMessages( "otherorg.com", adminUserName, "password1" );
+            msgs = getMessages("otherorg.com", adminUserName, "password1");
 
             // only 1 invited msg
-            assertEquals( 2, msgs.length );
+            assertEquals(2, msgs.length);
 
             // check email subject
             String resetpwd = "Password Reset";
-            assertNotSame( resetpwd, msgs[1].getSubject() );
+            assertNotSame(resetpwd, msgs[1].getSubject());
 
             String invited = "User Invited To Organization";
-            assertEquals( invited, msgs[1].getSubject() );
-        }
-        finally {
-            setTestProperties( originalProperties );
+            assertEquals(invited, msgs[1].getSubject());
+        } finally {
+            setTestProperties(originalProperties);
         }
     }
 
 
-    private Message[] getMessages( String host, String user, String password ) throws MessagingException, IOException {
-
-        Session session = Session.getDefaultInstance( new Properties() );
-        Store store = session.getStore( "imap" );
-        store.connect( host, user, password );
-
-        Folder folder = store.getFolder( "inbox" );
-        folder.open( Folder.READ_ONLY );
-        Message[] msgs = folder.getMessages();
-
-        for ( Message m : msgs ) {
-            logger.info( "Subject: " + m.getSubject() );
-            logger.info(
-                    "Body content 0 " + ( ( MimeMultipart ) m.getContent() ).getBodyPart( 0 ).getContent());
-            logger.info(
-                    "Body content 1 " + ( ( MimeMultipart ) m.getContent() ).getBodyPart( 1 ).getContent());
-        }
-        return msgs;
-    }
 }


[5/6] incubator-usergrid git commit: Merge branch 'two-dot-o' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into two-dot-o

Posted by ry...@apache.org.
Merge branch 'two-dot-o' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into two-dot-o


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/cb44722c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/cb44722c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/cb44722c

Branch: refs/heads/two-dot-o
Commit: cb44722ccd619a82087567a2efaa3adf16860cd9
Parents: 9c81a98 472ccaf
Author: ryan bridges <ry...@apache.org>
Authored: Tue Apr 21 18:15:56 2015 -0400
Committer: ryan bridges <ry...@apache.org>
Committed: Tue Apr 21 18:15:56 2015 -0400

----------------------------------------------------------------------
 .gitattributes                                  |    17 +
 .gitignore                                      |     4 +
 .usergridversion                                |     1 +
 CHANGELOG                                       |    31 +
 NOTICE                                          |    17 +-
 docs/.gitignore                                 |     2 +
 docs/Makefile                                   |   177 +
 docs/README                                     |    31 +
 docs/_theme/sphinx_rtd_theme/__init__.py        |    17 +
 docs/_theme/sphinx_rtd_theme/breadcrumbs.html   |    19 +
 docs/_theme/sphinx_rtd_theme/footer.html        |    33 +
 docs/_theme/sphinx_rtd_theme/layout.html        |   162 +
 docs/_theme/sphinx_rtd_theme/layout_old.html    |   205 +
 docs/_theme/sphinx_rtd_theme/search.html        |    50 +
 docs/_theme/sphinx_rtd_theme/searchbox.html     |     7 +
 .../sphinx_rtd_theme/static/css/badge_only.css  |     2 +
 .../sphinx_rtd_theme/static/css/theme.css       |     5 +
 .../static/fonts/FontAwesome.otf                |   Bin 0 -> 62856 bytes
 .../static/fonts/fontawesome-webfont.eot        |   Bin 0 -> 38205 bytes
 .../static/fonts/fontawesome-webfont.svg        |   414 +
 .../static/fonts/fontawesome-webfont.ttf        |   Bin 0 -> 80652 bytes
 .../static/fonts/fontawesome-webfont.woff       |   Bin 0 -> 44432 bytes
 docs/_theme/sphinx_rtd_theme/static/js/theme.js |    47 +
 docs/_theme/sphinx_rtd_theme/theme.conf         |     8 +
 docs/_theme/sphinx_rtd_theme/versions.html      |    37 +
 docs/concepts/activity.md                       |  1121 ++
 docs/concepts/applications.md                   |    78 +
 docs/concepts/assets.md                         |    20 +
 docs/concepts/collections.md                    |    21 +
 docs/concepts/events-and-counters.md            |   268 +
 docs/concepts/groups.md                         |    38 +
 docs/concepts/query-language.md                 |   427 +
 docs/concepts/relationships.md                  |   100 +
 docs/concepts/roles-and-permissions.md          |    18 +
 docs/concepts/users-devices.md                  |   108 +
 docs/conf.py                                    |   273 +
 docs/contribute-code.md                         |    24 +
 docs/deploy-local.md                            |   179 +
 docs/getting-up-and-running-locally.md          |    72 +
 docs/index.md                                   |    12 +
 docs/lib/sphinxcontrib_markdown.py              |    58 +
 docs/make.bat                                   |   242 +
 docs/organizations-admins.md                    |    55 +
 docs/presentations-and-videos.md                |     7 +
 docs/presentations-and-videos/presentations.md  |    21 +
 docs/presentations-and-videos/videos.md         |    11 +
 docs/upgrading.md                               |     3 +
 docs/usage.md                                   |    16 +
 portal/Gruntfile.js                             |    20 +-
 portal/README.md                                |    35 +-
 portal/build.sh                                 |     1 +
 portal/config.js                                |     3 +-
 portal/css/main.css                             |    23 +-
 portal/img/sdk-sprites-large.png                |   Bin 14642 -> 15115 bytes
 portal/img/sdk-sprites.png                      |   Bin 5027 -> 4401 bytes
 portal/index-template.html                      |     1 +
 portal/js/global/help-service.js                |     2 +-
 portal/js/global/ug-service.js                  |     5 +-
 portal/package.json                             |     2 +-
 portal/pom.xml                                  |    98 +
 release/README.txt                              |    43 +
 release/changelog.rb                            |   150 +
 release/pom.xml                                 |    65 -
 release/release-candidate.sh                    |   296 +
 release/release.sh                              |   248 +
 release/sign-release.sh                         |    30 -
 release/src/main/assembly/source.xml            |    57 -
 sdks/android/.gitignore                         |    20 +
 sdks/android/NOTICE                             |    12 +
 sdks/android/README.md                          |    33 +
 sdks/android/README.txt                         |     2 -
 sdks/android/assembly.xml                       |    55 +
 sdks/android/build_release_zip.sh               |    10 +
 sdks/android/pom.xml                            |    76 +-
 .../apache/usergrid/android/client/Client.java  |  1036 --
 .../client/callbacks/ApiResponseCallback.java   |    26 -
 .../client/callbacks/ClientAsyncTask.java       |    54 -
 .../client/callbacks/ClientCallback.java        |    25 -
 .../callbacks/DeviceRegistrationCallback.java   |    25 -
 .../callbacks/GroupsRetrievedCallback.java      |    29 -
 .../client/callbacks/QueryResultsCallback.java  |    25 -
 .../android/client/utils/DeviceUuidFactory.java |   170 -
 .../android/client/utils/ObjectUtils.java       |    36 -
 .../usergrid/android/sdk/CounterIncrement.java  |    72 +
 .../sdk/DefaultURLConnectionFactory.java        |    36 +
 .../apache/usergrid/android/sdk/UGClient.java   |  3179 +++++
 .../android/sdk/URLConnectionFactory.java       |    30 +
 .../sdk/callbacks/ApiResponseCallback.java      |    31 +
 .../android/sdk/callbacks/ClientAsyncTask.java  |    66 +
 .../android/sdk/callbacks/ClientCallback.java   |    31 +
 .../sdk/callbacks/GroupsRetrievedCallback.java  |    35 +
 .../sdk/callbacks/QueryResultsCallback.java     |    33 +
 .../usergrid/android/sdk/entities/Activity.java |  1019 ++
 .../android/sdk/entities/Collection.java        |   338 +
 .../usergrid/android/sdk/entities/Device.java   |   122 +
 .../usergrid/android/sdk/entities/Entity.java   |   552 +
 .../usergrid/android/sdk/entities/Group.java    |   151 +
 .../usergrid/android/sdk/entities/Message.java  |   159 +
 .../usergrid/android/sdk/entities/User.java     |   315 +
 .../android/sdk/exception/ClientException.java  |    43 +
 .../android/sdk/response/AggregateCounter.java  |    58 +
 .../sdk/response/AggregateCounterSet.java       |   117 +
 .../android/sdk/response/ApiResponse.java       |   774 ++
 .../sdk/response/ClientCredentialsInfo.java     |    64 +
 .../android/sdk/response/QueueInfo.java         |    47 +
 .../android/sdk/utils/DeviceUuidFactory.java    |   173 +
 .../usergrid/android/sdk/utils/JsonUtils.java   |   185 +
 .../usergrid/android/sdk/utils/MapUtils.java    |    42 +
 .../usergrid/android/sdk/utils/ObjectUtils.java |    39 +
 .../usergrid/android/sdk/utils/UrlUtils.java    |   127 +
 sdks/dotnet/NOTICE                              |    56 +
 .../NSubstitute.1.6.0.0.nupkg                   |   Bin 619760 -> 0 bytes
 .../NSubstitute.1.6.0.0.nuspec                  |    16 -
 .../packages/NSubstitute.1.6.0.0/README.txt     |     0
 .../NSubstitute.1.6.0.0/acknowledgements.txt    |    14 -
 .../lib/NET35/NSubstitute.XML                   |   432 -
 .../lib/NET35/NSubstitute.dll                   |   Bin 1039360 -> 0 bytes
 .../lib/NET40/NSubstitute.XML                   |   432 -
 .../lib/NET40/NSubstitute.dll                   |   Bin 561152 -> 0 bytes
 .../packages/NUnit.2.6.2/NUnit.2.6.2.nupkg      |   Bin 94702 -> 0 bytes
 .../packages/NUnit.2.6.2/NUnit.2.6.2.nuspec     |    16 -
 sdks/dotnet/packages/NUnit.2.6.2/README.txt     |     3 -
 .../NUnit.2.6.2/lib/nunit.framework.dll         |   Bin 147456 -> 0 bytes
 .../NUnit.2.6.2/lib/nunit.framework.xml         | 10915 -----------------
 .../packages/Newtonsoft.Json.4.5.11/LICENSE.txt |    21 +
 .../Newtonsoft.Json.4.5.11.nupkg                |   Bin 1409718 -> 0 bytes
 .../Newtonsoft.Json.4.5.11.nuspec               |    16 -
 .../packages/Newtonsoft.Json.4.5.11/README.txt  |     3 -
 .../lib/net20/Newtonsoft.Json.dll               |   Bin 406016 -> 0 bytes
 .../lib/net20/Newtonsoft.Json.xml               |  8542 -------------
 .../lib/net35/Newtonsoft.Json.dll               |   Bin 366592 -> 0 bytes
 .../lib/net35/Newtonsoft.Json.xml               |  7678 ------------
 .../lib/net40/Newtonsoft.Json.dll               |   Bin 391680 -> 0 bytes
 .../lib/net40/Newtonsoft.Json.xml               |  7921 ------------
 .../Newtonsoft.Json.dll                         |   Bin 315904 -> 0 bytes
 .../Newtonsoft.Json.xml                         |  7107 -----------
 .../lib/sl3-wp/Newtonsoft.Json.dll              |   Bin 334336 -> 0 bytes
 .../lib/sl3-wp/Newtonsoft.Json.xml              |  7228 -----------
 .../lib/sl4-windowsphone71/Newtonsoft.Json.dll  |   Bin 334336 -> 0 bytes
 .../lib/sl4-windowsphone71/Newtonsoft.Json.xml  |  7228 -----------
 .../lib/sl4/Newtonsoft.Json.dll                 |   Bin 337408 -> 0 bytes
 .../lib/sl4/Newtonsoft.Json.xml                 |  7250 -----------
 .../lib/winrt45/Newtonsoft.Json.dll             |   Bin 367616 -> 0 bytes
 .../lib/winrt45/Newtonsoft.Json.xml             |  7446 -----------
 .../dotnet/packages/RestSharp.104.1/LICENSE.txt |   202 +
 .../RestSharp.104.1/RestSharp.104.1.nupkg       |   Bin 605731 -> 0 bytes
 .../RestSharp.104.1/RestSharp.104.1.nuspec      |    16 -
 .../lib/net35-client/RestSharp.dll              |   Bin 146944 -> 0 bytes
 .../lib/net35-client/RestSharp.xml              |  2627 ----
 .../RestSharp.104.1/lib/net35/RestSharp.dll     |   Bin 146944 -> 0 bytes
 .../RestSharp.104.1/lib/net35/RestSharp.xml     |  2627 ----
 .../lib/net4-client/RestSharp.dll               |   Bin 150016 -> 0 bytes
 .../lib/net4-client/RestSharp.xml               |  2696 ----
 .../RestSharp.104.1/lib/net4/RestSharp.dll      |   Bin 150016 -> 0 bytes
 .../RestSharp.104.1/lib/net4/RestSharp.xml      |  2696 ----
 .../lib/sl4-wp71/RestSharp.WindowsPhone.dll     |   Bin 165376 -> 0 bytes
 .../lib/sl4-wp71/RestSharp.WindowsPhone.xml     |  3510 ------
 .../lib/sl4/RestSharp.Silverlight.dll           |   Bin 124928 -> 0 bytes
 .../lib/sl4/RestSharp.Silverlight.xml           |  2445 ----
 sdks/html5-javascript/lib/modules/Client.js     |    29 +-
 sdks/nodejs/lib/usergrid.js                     |    31 +-
 sdks/php/lib/vendor/Apache/Usergrid/Client.php  |    33 +-
 sdks/php5/apache-usergrid/.gitignore            |    12 +
 .../Examples/attrubites/attributes.php          |   122 +
 .../Examples/collections/books.php              |   130 +
 .../Examples/collections/data.php               |    38 +
 .../Examples/collections/users.php              |   120 +
 sdks/php5/apache-usergrid/Examples/examples.md  |    17 +
 sdks/php5/apache-usergrid/Examples/examples.php |   245 +
 .../Examples/management/management.php          |    91 +
 .../apache-usergrid/Examples/messages/data.php  |    17 +
 .../Examples/messages/messages.php              |    62 +
 .../Examples/notifications/data.php             |    17 +
 .../Examples/notifications/notifications.php    |    86 +
 .../Examples/notifications/notifiers.php        |    79 +
 sdks/php5/apache-usergrid/LICENSE               |   202 +
 sdks/php5/apache-usergrid/README.md             |   219 +
 sdks/php5/apache-usergrid/TODO.md               |     2 +
 sdks/php5/apache-usergrid/composer.json         |    40 +
 sdks/php5/apache-usergrid/composer.lock         |  1225 ++
 sdks/php5/apache-usergrid/phpunit.xml           |    29 +
 .../src/Api/Exception/BadRequestException.php   |    34 +
 .../src/Api/Exception/InvalidIdException.php    |    33 +
 .../src/Api/Exception/NotFoundException.php     |    33 +
 .../src/Api/Exception/ServerErrorException.php  |    33 +
 .../src/Api/Exception/UnauthorizedException.php |    34 +
 .../src/Api/Exception/UsergridException.php     |   152 +
 .../apache-usergrid/src/Api/Filters/Boolean.php |    44 +
 .../apache-usergrid/src/Api/Filters/Date.php    |    44 +
 .../apache-usergrid/src/Api/Filters/Number.php  |    48 +
 .../apache-usergrid/src/Api/GuzzleClient.php    |    64 +
 .../src/Api/Models/Application.php              |    35 +
 .../src/Api/Models/BaseCollection.php           |   116 +
 .../src/Api/Models/Collection.php               |    37 +
 .../apache-usergrid/src/Api/Models/Device.php   |    50 +
 .../apache-usergrid/src/Api/Models/Entity.php   |    36 +
 .../apache-usergrid/src/Api/Models/Event.php    |    35 +
 .../apache-usergrid/src/Api/Models/Group.php    |    54 +
 .../src/Api/Models/GuzzleCommandTrait.php       |    59 +
 .../apache-usergrid/src/Api/Models/Notifier.php |    36 +
 .../src/Api/Models/Organization.php             |    38 +
 .../apache-usergrid/src/Api/Models/Receipt.php  |    36 +
 .../apache-usergrid/src/Api/Models/Role.php     |    54 +
 .../apache-usergrid/src/Api/Models/User.php     |    77 +
 .../apache-usergrid/src/Api/QueryAggregator.php |    61 +
 .../src/Api/ResourceIterator.php                |    69 +
 sdks/php5/apache-usergrid/src/Api/Usergrid.php  |   452 +
 .../Oauth2/GrantType/AuthorizationCode.php      |    77 +
 .../Oauth2/GrantType/ClientCredentials.php      |    73 +
 .../Oauth2/GrantType/GrantTypeInterface.php     |    41 +
 .../GrantType/HWIOAuthBundleRefreshToken.php    |    62 +
 .../Oauth2/GrantType/PasswordCredentials.php    |    75 +
 .../Plugin/Oauth2/GrantType/RefreshToken.php    |    74 +
 .../src/Guzzle/Plugin/Oauth2/Oauth2Plugin.php   |   212 +
 .../Laravel/ApacheUsergridServiceProvider.php   |   159 +
 .../src/Laravel/Facades/Usergrid.php            |    42 +
 .../src/Manifests/1.0.0/Application.php         |   979 ++
 .../src/Manifests/1.0.0/Errors.php              |    53 +
 .../src/Manifests/1.0.0/Management.php          |  1076 ++
 .../src/Manifests/1.0.0/Manifest.php            |    25 +
 .../src/Manifests/1.0.0/Notification.php        |   154 +
 .../src/Manifests/1.0.1/Activities.php          |    24 +
 .../src/Manifests/1.0.1/Application.php         |  1108 ++
 .../src/Manifests/1.0.1/Assets.php              |    24 +
 .../src/Manifests/1.0.1/Custom.php              |   381 +
 .../src/Manifests/1.0.1/Devices.php             |   465 +
 .../src/Manifests/1.0.1/Errors.php              |    50 +
 .../src/Manifests/1.0.1/Events.php              |    24 +
 .../src/Manifests/1.0.1/Groups.php              |   486 +
 .../src/Manifests/1.0.1/Management.php          |  1076 ++
 .../src/Manifests/1.0.1/Manifest.php            |    24 +
 .../src/Manifests/1.0.1/Messages.php            |    19 +
 .../src/Manifests/1.0.1/Notifications.php       |   241 +
 .../src/Manifests/1.0.1/Notifiers.php           |   166 +
 .../src/Manifests/1.0.1/Receipts.php            |    24 +
 .../src/Manifests/1.0.1/Roles.php               |   381 +
 .../src/Manifests/1.0.1/Users.php               |   381 +
 .../Manifests/swagger-json/applications.json    |  1262 ++
 .../src/Manifests/swagger-json/management.json  |  1905 +++
 .../src/Manifests/swagger-json/resources.json   |    15 +
 .../src/Native/ConfigRepository.php             |   102 +
 .../src/Native/Facades/Usergrid.php             |   118 +
 .../src/Native/UsergridBootstrapper.php         |   150 +
 sdks/php5/apache-usergrid/src/config/config.php |    53 +
 .../tests/Api/ApplicationTest.php               |    72 +
 .../apache-usergrid/tests/Api/AttributeTest.php |    59 +
 .../Api/Exception/BadRequestExceptionTest.php   |    59 +
 .../Api/Exception/InvalidIdExceptionTest.php    |    58 +
 .../Api/Exception/NotFoundExceptionTest.php     |    57 +
 .../Api/Exception/ServerErrorExceptionTest.php  |    58 +
 .../Api/Exception/UnauthorizedExceptionTest.php |    58 +
 .../tests/Api/Filters/BooleanTest.php           |    45 +
 .../tests/Api/Filters/DateTest.php              |    41 +
 .../tests/Api/ManagementTest.php                |    59 +
 .../tests/Api/QueryAggregatorTest.php           |    40 +
 .../apache-usergrid/tests/Api/UsergridTest.php  |   153 +
 .../tests/Laravel/Facades/UsergridTest.php      |    53 +
 sdks/php5/apache-usergrid/tests/bootstrap.php   |    61 +
 stack/build-tools/pom.xml                       |     5 +-
 stack/config/pom.xml                            |     1 +
 .../main/resources/usergrid-default.properties  |    37 +-
 stack/core/pom.xml                              |     1 +
 .../apache/usergrid/batch/job/package-info.java |    17 -
 .../usergrid/batch/repository/package-info.java |    17 -
 .../usergrid/batch/service/package-info.java    |    17 -
 .../results/ElasticSearchQueryExecutor.java     |     5 +
 .../org/apache/usergrid/count/package-info.java |    18 -
 .../java/org/apache/usergrid/utils/BCrypt.java  |   627 -
 .../org/apache/usergrid/utils/package-info.java |    17 -
 .../main/resources/usergrid-core-context.xml    |    41 +-
 .../apache/usergrid/batch/job/package-info.java |    17 -
 .../query/OrderByDiscardPagesPagingIT.java      |   164 +
 .../org/apache/usergrid/utils/package-info.java |    17 -
 .../collection/util/EntityHelper.java           |     2 +-
 .../usergrid/persistence/index/IndexFig.java    |    17 +
 .../index/impl/EsEntityIndexImpl.java           |    20 +-
 .../index/impl/EsIndexBufferConsumerImpl.java   |     2 +-
 stack/java-sdk-old/pom.xml                      |   102 +
 stack/launcher/pom.xml                          |     8 +
 .../java/org/apache/usergrid/launcher/App.java  |     7 +-
 .../launcher/ClasspathStaticHttpHandler.java    |   321 -
 .../org/apache/usergrid/launcher/Server.java    |     5 +-
 .../apache/usergrid/launcher/package-info.java  |    17 -
 stack/mongo-emulator/pom.xml                    |     3 +-
 stack/pom.xml                                   |    10 +-
 stack/rest/pom.xml                              |     1 -
 .../rest/applications/ServiceResource.java      |    13 +-
 .../rest/management/users/UsersResource.java    |    14 +-
 .../applications/assets/AssetResourceIT.java    |   106 +
 .../organizations/AdminEmailEncodingIT.java     |     6 +-
 stack/services/pom.xml                          |     6 +
 .../management/AccountCreationProps.java        |    11 +
 .../usergrid/management/ManagementService.java  |     2 +
 .../cassandra/AccountCreationPropsImpl.java     |     8 +
 .../cassandra/ManagementServiceImpl.java        |    30 +-
 .../security/crypto/command/BcryptCommand.java  |     4 +-
 .../security/providers/AbstractProvider.java    |     6 +
 .../providers/PingIdentityProvider.java         |    17 +-
 stack/tools/pom.xml                             |     1 +
 .../org/apache/usergrid/tools/ExportAdmins.java |   236 +
 .../org/apache/usergrid/tools/ImportAdmins.java |   451 +
 .../apache/usergrid/tools/ResetSuperUser.java   |    18 +-
 stack/websocket/pom.xml                         |     1 +
 303 files changed, 31943 insertions(+), 91719 deletions(-)
----------------------------------------------------------------------



[6/6] incubator-usergrid git commit: [USERGRID-642] Remove password properties from user objects in portal

Posted by ry...@apache.org.
[USERGRID-642] Remove password properties from user objects in portal


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/53563e83
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/53563e83
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/53563e83

Branch: refs/heads/two-dot-o-dev
Commit: 53563e83b45b85c30a756530f366b6312f6d45ac
Parents: b28aeee
Author: ryan bridges <ry...@apache.org>
Authored: Thu May 21 12:17:01 2015 -0400
Committer: ryan bridges <ry...@apache.org>
Committed: Thu May 21 12:17:01 2015 -0400

----------------------------------------------------------------------
 portal/js/users/users-controller.js | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/53563e83/portal/js/users/users-controller.js
----------------------------------------------------------------------
diff --git a/portal/js/users/users-controller.js b/portal/js/users/users-controller.js
index fa489f7..3978357 100644
--- a/portal/js/users/users-controller.js
+++ b/portal/js/users/users-controller.js
@@ -61,15 +61,29 @@ AppServices.Controllers.controller('UsersCtrl', ['ug', '$scope', '$rootScope', '
           clearNewUserForm();
           break;
       }
-    }
+    };
 
     ug.getUsers();
+    function sanitizeUsersCollection(){
+      var cleanProperties = ["password", "oldpassword", "newpassword"]
+      if($scope.usersCollection._list.length > 0){
+        $scope.usersCollection._list.forEach(function(user, i){
+          Object.keys(user._data).forEach(function(key){
+            if(cleanProperties.indexOf(key.toLowerCase()) !== -1){
+              // console.warn("Removing %s from %s", key, user._data.uuid);
+              delete user._data[key]
+            }
+          });
+          $scope.usersCollection._list[i]=user;
+        })
+      }
+    }
 
     $scope.$on('users-received', function(event, users) {
       $scope.usersCollection = users;
       $scope.usersSelected = false;
       $scope.hasUsers = users._list.length;
-
+      sanitizeUsersCollection();
       if(users._list.length > 0){
         $scope.selectUser(users._list[0]._data.uuid)
       }
@@ -79,6 +93,7 @@ AppServices.Controllers.controller('UsersCtrl', ['ug', '$scope', '$rootScope', '
     });
 
     $scope.$on('users-create-success', function () {
+      sanitizeUsersCollection();
       $rootScope.$broadcast("alert", "success", "User successfully created.");
     });