You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2015/03/24 23:33:54 UTC

[09/17] incubator-usergrid git commit: Added /revokeToken and /revokeTokens resources to the rest test framework Fixed remaining tests in AccessTokenIT. Extended/fixed some bugs in NamedResource.

Added /revokeToken and /revokeTokens resources to the rest test framework
Fixed remaining tests in AccessTokenIT.
Extended/fixed some bugs in NamedResource.


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

Branch: refs/heads/two-dot-o-dev
Commit: d7734af907e975baad4887d153db62c330efa2e6
Parents: a33ae23
Author: GERey <gr...@apigee.com>
Authored: Mon Mar 23 11:12:33 2015 -0700
Committer: GERey <gr...@apigee.com>
Committed: Mon Mar 23 11:12:33 2015 -0700

----------------------------------------------------------------------
 .../usergrid/rest/management/AccessTokenIT.java | 406 ++++++++-----------
 .../endpoints/NamedResource.java                |  29 +-
 .../endpoints/mgmt/RevokeTokenResource.java     |  16 +
 .../endpoints/mgmt/RevokeTokensResource.java    |  33 ++
 .../endpoints/mgmt/UserResource.java            |   8 +
 5 files changed, 254 insertions(+), 238 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d7734af9/stack/rest/src/test/java/org/apache/usergrid/rest/management/AccessTokenIT.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/AccessTokenIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/AccessTokenIT.java
index 2d7911d..a5adc0e 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/AccessTokenIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/AccessTokenIT.java
@@ -16,29 +16,25 @@
  */
 package org.apache.usergrid.rest.management;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.representation.Form;
 import java.io.IOException;
-import java.util.HashMap;
 import java.util.Map;
-import javax.ws.rs.core.MediaType;
+
+import org.junit.Test;
+
 import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
-import org.apache.usergrid.rest.management.organizations.OrganizationsResource;
 import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
 import org.apache.usergrid.rest.test.resource2point0.model.Entity;
-import org.apache.usergrid.rest.test.resource2point0.model.Organization;
 import org.apache.usergrid.rest.test.resource2point0.model.QueryParameters;
 import org.apache.usergrid.rest.test.resource2point0.model.Token;
 
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.UniformInterfaceException;
+import com.sun.jersey.api.representation.Form;
+
 import static org.apache.usergrid.utils.MapUtils.hashMap;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-
-import org.jclouds.rest.annotations.Api;
-import org.junit.Ignore;
-import org.junit.Test;
+import static org.junit.Assert.fail;
 
 
 /**
@@ -107,7 +103,7 @@ public class AccessTokenIT extends AbstractRestIT {
             queryParameters.addParam( "ttl", String.valueOf(ttl) );
         return queryParameters;
     }
-    
+
     @Test
     public void meToken() throws Exception {
         tokenMeSetup( 0 );
@@ -139,221 +135,171 @@ public class AccessTokenIT extends AbstractRestIT {
         assertNotNull(orgProperties.get("name"));
         assertNotNull(orgProperties.get("properties"));
     }
-//
-//    @Test
-//    public void meTokenPost() throws Exception {
-//        Map<String, String> payload
-//                = hashMap("grant_type", "password")
-//                .map("username", "test@usergrid.com").map("password", "test");
-//
-//        JsonNode node = mapper.readTree(resource()
-//                .path("/management/me")
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_JSON_TYPE)
-//                .post(String.class, payload));
-//
-//        logNode(node);
-//        String token = node.get("access_token").textValue();
-//
-//        assertNotNull(token);
-//
-//        refreshIndex("test-organization", "test-app");
-//
-//        node = mapper.readTree(resource()
-//                .path("/management/me")
-//                .queryParam("access_token", token)
-//                .accept(MediaType.APPLICATION_JSON)
-//                .get(String.class));
-//        logNode(node);
-//    }
-//
-//    @Test
-//    public void meTokenPostForm() throws IOException {
-//
-//        Form form = new Form();
-//        form.add("grant_type", "password");
-//        form.add("username", "test@usergrid.com");
-//        form.add("password", "test");
-//
-//        JsonNode node = mapper.readTree(resource()
-//                .path("/management/me")
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
-//                .entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE)
-//                .post(String.class));
-//
-//        logNode(node);
-//        String token = node.get("access_token").textValue();
-//
-//        assertNotNull(token);
-//
-//        refreshIndex("test-organization", "test-app");
-//
-//        node = mapper.readTree(resource()
-//                .path("/management/me")
-//                .queryParam("access_token", token)
-//                .accept(MediaType.APPLICATION_JSON).get(String.class));
-//        logNode(node);
-//    }
-//
-//    @Test
-//    public void ttlNan() throws Exception {
-//
-//        Map<String, String> payload = hashMap("grant_type", "password")
-//                .map("username", "test@usergrid.com")
-//                .map("password", "test")
-//                .map("ttl", "derp");
-//
-//        ClientResponse.Status responseStatus = null;
-//        try {
-//            resource().path("/management/token")
-//                    .accept(MediaType.APPLICATION_JSON)
-//                    .type(MediaType.APPLICATION_JSON_TYPE)
-//                    .post(String.class, payload);
-//        } catch (UniformInterfaceException uie) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals(ClientResponse.Status.BAD_REQUEST, responseStatus);
-//    }
-//
-//    @Test
-//    public void ttlOverMax() throws Exception {
-//
-//        Map<String, String> payload = hashMap("grant_type", "password")
-//                .map("username", "test@usergrid.com")
-//                .map("password", "test")
-//                .map("ttl", Long.MAX_VALUE + "");
-//
-//        ClientResponse.Status responseStatus = null;
-//
-//        try {
-//            resource().path("/management/token")
-//                    .accept(MediaType.APPLICATION_JSON)
-//                    .type(MediaType.APPLICATION_JSON_TYPE)
-//                    .post(String.class, payload);
-//        } catch (UniformInterfaceException uie) {
-//            responseStatus = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals(ClientResponse.Status.BAD_REQUEST, responseStatus);
-//    }
-//
-//    @Test
-//    public void revokeToken() throws Exception {
-//        String token1 = super.adminToken();
-//        String token2 = super.adminToken();
-//
-//        JsonNode response = mapper.readTree(resource().path("/management/users/test")
-//                .queryParam("access_token", token1)
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_JSON_TYPE)
-//                .get(String.class));
-//
-//        assertEquals("test@usergrid.com", response.get("data").get("email").asText());
-//
-//        response = mapper.readTree(resource().path("/management/users/test")
-//                .queryParam("access_token", token2)
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_JSON_TYPE)
-//                .get(String.class));
-//
-//        assertEquals("test@usergrid.com", response.get("data").get("email").asText());
-//
-//        // now revoke the tokens
-//        response = mapper.readTree(resource().path("/management/users/test/revoketokens")
-//                .queryParam("access_token", superAdminToken())
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_JSON_TYPE)
-//                .post(String.class));
-//
-//        refreshIndex("test-organization", "test-app");
-//
-//        // the tokens shouldn't work
-//        ClientResponse.Status status = null;
-//
-//        try {
-//            response = mapper.readTree(resource().path("/management/users/test")
-//                    .queryParam("access_token", token1)
-//                    .accept(MediaType.APPLICATION_JSON)
-//                    .type(MediaType.APPLICATION_JSON_TYPE)
-//                    .get(String.class));
-//        } catch (UniformInterfaceException uie) {
-//            status = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals(ClientResponse.Status.UNAUTHORIZED, status);
-//
-//        status = null;
-//
-//        try {
-//            response = mapper.readTree(resource().path("/management/users/test")
-//                    .queryParam("access_token", token2)
-//                    .accept(MediaType.APPLICATION_JSON)
-//                    .type(MediaType.APPLICATION_JSON_TYPE)
-//                    .get(String.class));
-//        } catch (UniformInterfaceException uie) {
-//            status = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals(ClientResponse.Status.UNAUTHORIZED, status);
-//
-//        String token3 = super.adminToken();
-//        String token4 = super.adminToken();
-//
-//        response = mapper.readTree(resource().path("/management/users/test")
-//                .queryParam("access_token", token3)
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_JSON_TYPE)
-//                .get(String.class));
-//
-//        assertEquals("test@usergrid.com", response.get("data").get("email").asText());
-//
-//        response = mapper.readTree(resource().path("/management/users/test")
-//                .queryParam("access_token", token4)
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_JSON_TYPE)
-//                .get(String.class));
-//
-//        assertEquals("test@usergrid.com", response.get("data").get("email").asText());
-//
-//        // now revoke the token3
-//        response = mapper.readTree(resource().path("/management/users/test/revoketoken")
-//                .queryParam("access_token", token3)
-//                .queryParam("token", token3)
-//                .accept(MediaType.APPLICATION_JSON)
-//                .type(MediaType.APPLICATION_JSON_TYPE)
-//                .post(String.class));
-//
-//        // the token3 shouldn't work
-//        status = null;
-//
-//        try {
-//            response = mapper.readTree(resource().path("/management/users/test")
-//                    .queryParam("access_token", token3)
-//                    .accept(MediaType.APPLICATION_JSON)
-//                    .type(MediaType.APPLICATION_JSON_TYPE)
-//                    .get(String.class));
-//        } catch (UniformInterfaceException uie) {
-//            status = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals(ClientResponse.Status.UNAUTHORIZED, status);
-//
-//        status = null;
-//
-//        try {
-//            response = mapper.readTree(resource().path("/management/users/test")
-//                    .queryParam("access_token", token4)
-//                    .accept(MediaType.APPLICATION_JSON)
-//                    .type(MediaType.APPLICATION_JSON_TYPE)
-//                    .get(String.class));
-//
-//            status = ClientResponse.Status.OK;
-//        } catch (UniformInterfaceException uie) {
-//            status = uie.getResponse().getClientResponseStatus();
-//        }
-//
-//        assertEquals(ClientResponse.Status.OK, status);
-//    }
+
+
+    /**
+     * Verify that we can POST and GET using the token that was returned.
+     * @throws Exception
+     */
+    @Test
+    public void meTokenPost() throws Exception {
+        Map<String, String> payload
+                = hashMap("grant_type", "password")
+                .map("username", clientSetup.getUsername()).map("password", clientSetup.getPassword());
+
+        Token token = management().me().post( Token.class, payload );
+
+        assertNotNull( token );
+        assertNotNull( token.getAccessToken() );
+        management().token().setToken( token );
+
+        refreshIndex();
+
+        assertNotNull( management().me().get( Token.class ) );
+
+    }
+
+
+    /**
+     * Verifies that we can POST using a form and GET using the token that was returned.
+     * @throws IOException
+     */
+    @Test
+    public void meTokenPostForm() throws IOException {
+
+        Form form = new Form();
+        form.add("grant_type", "password");
+        form.add("username", clientSetup.getUsername());
+        form.add("password", clientSetup.getPassword());
+
+        Token adminToken = management().me().post( Token.class,form );
+
+        assertNotNull( adminToken );
+        assertNotNull( adminToken.getAccessToken() );
+
+        refreshIndex();
+
+        assertNotNull( management().me().get( Token.class ) );
+
+    }
+
+
+    /**
+     * Checks we get approriate response when giving a bad ttl request
+     * @throws Exception
+     */
+    @Test
+    public void ttlNan() throws Exception {
+
+        Map<String, String> payload = hashMap("grant_type", "password")
+                .map("username", clientSetup.getUsername())
+                .map("password", clientSetup.getPassword())
+                .map("ttl", "derp");
+
+        try {
+            management().token().post( Token.class,payload );
+        } catch (UniformInterfaceException uie) {
+            assertEquals(ClientResponse.Status.BAD_REQUEST, uie.getResponse().getClientResponseStatus());
+        }
+
+    }
+
+    /**
+     * Checks we get approriate response when giving a bad ttl request
+     * @throws Exception
+     */
+    @Test
+    public void ttlOverMax() throws Exception {
+
+        Map<String, String> payload = hashMap("grant_type", "password")
+            .map("username", clientSetup.getUsername())
+            .map("password", clientSetup.getPassword())
+            .map("ttl", Long.MAX_VALUE + "");
+
+        try {
+            management().token().post( Token.class, payload );
+        } catch (UniformInterfaceException uie) {
+            assertEquals(ClientResponse.Status.BAD_REQUEST, uie.getResponse().getClientResponseStatus());
+        }
+
+    }
+
+    /**
+     * Tests that we can revoke all of the tokens that have been assigned to a specific user
+     * @throws Exception
+     */
+    @Test
+    public void revokeTokens() throws Exception {
+        Token token1 = getAdminToken();
+        Token token2 = getAdminToken();
+
+        // using a superuser token, revoke all tokens associated with the admin user
+        management().token().setToken( clientSetup.getSuperuserToken() );
+        management().users().user( clientSetup.getUsername() ).revokeTokens().post( ApiResponse.class );
+
+        refreshIndex();
+
+
+        //test that token 1 doesn't work
+        try {
+            management().token().setToken( token1 );
+            management().users().user( clientSetup.getUsername() ).get();
+            fail( "Token1 should have been revoked" );
+        }
+        catch ( UniformInterfaceException uie ) {
+            assertEquals( ClientResponse.Status.UNAUTHORIZED, uie.getResponse().getClientResponseStatus());
+        }
+
+
+        //test that token 2 doesn't work
+        try {
+            management().token().setToken( token2 );
+            management().users().user( clientSetup.getUsername() ).get();
+            fail( "Token2 should have been revoked" );
+        }
+        catch ( UniformInterfaceException uie ) {
+            assertEquals( ClientResponse.Status.UNAUTHORIZED, uie.getResponse().getClientResponseStatus());
+        }
+    }
+
+    /**
+     * Tests that we can revoke a single token that has been assigned to a specific user
+     * @throws Exception
+     */
+    @Test
+    public void revokeSingleToken() throws Exception {
+        Token token1 = getAdminToken();
+        Token token2 = getAdminToken();
+
+        // using a superuser token, revoke specific token associated with the admin user
+        QueryParameters queryParameters = new QueryParameters();
+        queryParameters.addParam( "token", token1.getAccessToken() );
+
+        management().token().setToken( clientSetup.getSuperuserToken() );
+        management().users().user( clientSetup.getUsername() ).revokeToken().post( ApiResponse.class,queryParameters );
+
+        refreshIndex();
+
+
+        //test that token 1 doesn't work
+        try {
+            management().token().setToken( token1 );
+            management().users().user( clientSetup.getUsername() ).get();
+            fail( "Token1 should have been revoked" );
+        }
+        catch ( UniformInterfaceException uie ) {
+            assertEquals( ClientResponse.Status.UNAUTHORIZED, uie.getResponse().getClientResponseStatus());
+        }
+
+
+        //test that token 2 still works
+        try {
+            management().token().setToken( token2 );
+            management().users().user( clientSetup.getUsername() ).get();
+        }
+        catch ( UniformInterfaceException uie ) {
+            fail( "Token2 shouldn't have been revoked" );
+
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d7734af9/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
index a5ffc9f..daf3502 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/NamedResource.java
@@ -33,6 +33,8 @@ import java.util.Set;
 import java.util.UUID;
 
 import javax.ws.rs.core.MediaType;
+import com.sun.jersey.api.representation.Form;
+
 
 
 /**
@@ -150,6 +152,16 @@ public abstract class NamedResource implements UrlResource {
 
     }
 
+    public <T> T post(Class<T> type, QueryParameters queryParameters) {
+        WebResource resource = getResource();
+        resource = addParametersToResource(resource, queryParameters);
+        GenericType<T> gt = new GenericType<>((Class) type);
+        return resource.type(MediaType.APPLICATION_JSON_TYPE)
+                            .accept( MediaType.APPLICATION_JSON )
+                            .post(gt.getRawClass());
+
+    }
+
     public <T> T postWithToken(Class<T> type, Object requestEntity) {
         GenericType<T> gt = new GenericType<>((Class) type);
         return getResource(true).type(MediaType.APPLICATION_JSON_TYPE)
@@ -167,14 +179,15 @@ public abstract class NamedResource implements UrlResource {
 
     }
 
-    //Get Resources
-//    public Entity get() {
-//        WebResource resource = getResource(true);
-//
-//        ApiResponse response = resource.type( MediaType.APPLICATION_JSON_TYPE )
-//                                       .accept( MediaType.APPLICATION_JSON ).get( ApiResponse.class);
-//        return new Entity(response);
-//    }
+    public <T> T post(Class<T> type, Form requestEntity) {
+        GenericType<T> gt = new GenericType<>((Class) type);
+        return getResource()
+        .accept( MediaType.APPLICATION_JSON )
+        .type( MediaType.APPLICATION_FORM_URLENCODED_TYPE )
+        .entity( requestEntity, MediaType.APPLICATION_FORM_URLENCODED_TYPE )
+        .post( gt.getRawClass() );
+
+    }
 
     //For edge cases like Organizations and Tokens without any payload
     public <T> T get(Class<T> type) {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d7734af9/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokenResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokenResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokenResource.java
new file mode 100644
index 0000000..c727521
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokenResource.java
@@ -0,0 +1,16 @@
+package org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt;
+
+
+import org.apache.usergrid.rest.test.resource2point0.endpoints.NamedResource;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.UrlResource;
+import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
+
+
+/**
+ * Handles /revokeToken endpoint ( as opposed to revokeTokens
+ */
+public class RevokeTokenResource extends NamedResource {
+    public RevokeTokenResource( final ClientContext context, final UrlResource parent ) {
+        super( "revoketoken", context, parent );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d7734af9/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java
new file mode 100644
index 0000000..20796ae
--- /dev/null
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/RevokeTokensResource.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt;
+
+
+import org.apache.usergrid.rest.test.resource2point0.endpoints.NamedResource;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.UrlResource;
+import org.apache.usergrid.rest.test.resource2point0.state.ClientContext;
+
+
+/**
+ * Handles endpoints against /revoketokens
+ */
+public class RevokeTokensResource extends NamedResource {
+    public RevokeTokensResource( final ClientContext context, final UrlResource parent ) {
+        super( "revoketokens", context, parent );
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d7734af9/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
----------------------------------------------------------------------
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
index 9af23ce..a52d884 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/UserResource.java
@@ -62,6 +62,14 @@ public class UserResource extends NamedResource {
         return new OrgResource( context, this );
     }
 
+    public RevokeTokensResource revokeTokens() {
+        return new RevokeTokensResource( context, this );
+    }
+
+    public RevokeTokenResource revokeToken() {
+        return new RevokeTokenResource( context, this );
+    }
+
     public Entity get() {
         WebResource resource = getResource( true );
         ApiResponse response = resource.type( MediaType.APPLICATION_JSON_TYPE )