You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2018/01/09 11:22:41 UTC

[3/3] jclouds git commit: Complete mock tests for the V3 AuthApi

Complete mock tests for the V3 AuthApi


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

Branch: refs/heads/keystonev3
Commit: eb71cedd1108d2c97c4b1f7eb736a688e2a850d0
Parents: cf0c70d
Author: Ignasi Barrera <na...@apache.org>
Authored: Tue Jan 9 12:22:06 2018 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Jan 9 12:22:06 2018 +0100

----------------------------------------------------------------------
 .../openstack/keystone/v3/features/AuthApi.java |  3 +-
 .../keystone/v3/features/AuthApiMockTest.java   | 55 ++++++++++++++++++++
 .../v3/internal/BaseV3KeystoneApiMockTest.java  | 21 ++++++--
 3 files changed, 73 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/eb71cedd/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/features/AuthApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/features/AuthApi.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/features/AuthApi.java
index 50fe55c..845c738 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/features/AuthApi.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/features/AuthApi.java
@@ -64,9 +64,10 @@ public interface AuthApi {
    @Named("token:getuser")
    @GET
    @SelectJson("user")
-   @Path("/tokens/{token}")
+   @Path("/tokens")
    @Fallback(NullOnNotFoundOr404.class)
    @Nullable
+   @Headers(keys = "X-Subject-Token", values = "{token}")
    User getUserOfToken(@PathParam("token") String token);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eb71cedd/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiMockTest.java
index 87ca0b3..a156fad 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiMockTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiMockTest.java
@@ -17,9 +17,12 @@
 package org.jclouds.openstack.keystone.v3.features;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import org.jclouds.openstack.keystone.v3.domain.Token;
+import org.jclouds.openstack.keystone.v3.domain.User;
 import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiMockTest;
 import org.testng.annotations.Test;
 
@@ -55,4 +58,56 @@ public class AuthApiMockTest extends BaseV3KeystoneApiMockTest {
       assertEquals(request.getHeader("X-Subject-Token"), "foo");
    }
    
+   public void testIsValidToken() throws InterruptedException {
+      enqueueAuthentication(server);
+      server.enqueue(response204());
+
+      boolean valid = api.getAuthApi().isValid(authToken);
+      assertTrue(valid);
+
+      assertEquals(server.getRequestCount(), 2);
+      assertAuthentication(server);
+      RecordedRequest request = assertSent(server, "HEAD", "/auth/tokens");
+      assertEquals(request.getHeader("X-Subject-Token"), authToken);
+   }
+
+   public void testIsValidTokenReturns404() throws InterruptedException {
+      enqueueAuthentication(server);
+      server.enqueue(response404());
+
+      boolean valid = api.getAuthApi().isValid("foo");
+      assertFalse(valid);
+
+      assertEquals(server.getRequestCount(), 2);
+      assertAuthentication(server);
+      RecordedRequest request = assertSent(server, "HEAD", "/auth/tokens");
+      assertEquals(request.getHeader("X-Subject-Token"), "foo");
+   }
+   
+   public void testGetUserOfToken() throws InterruptedException {
+      enqueueAuthentication(server);
+      server.enqueue(jsonResponse("/v3/token.json"));
+
+      User user = api.getAuthApi().getUserOfToken(authToken);
+
+      assertEquals(user, tokenFromResource("/v3/token.json").user());
+
+      assertEquals(server.getRequestCount(), 2);
+      assertAuthentication(server);
+      RecordedRequest request = assertSent(server, "GET", "/auth/tokens");
+      assertEquals(request.getHeader("X-Subject-Token"), authToken);
+   }
+
+   public void testGetUserOfTokenReturns404() throws InterruptedException {
+      enqueueAuthentication(server);
+      server.enqueue(response404());
+
+      User user = api.getAuthApi().getUserOfToken("foo");
+      assertNull(user);
+
+      assertEquals(server.getRequestCount(), 2);
+      assertAuthentication(server);
+      RecordedRequest request = assertSent(server, "GET", "/auth/tokens");
+      assertEquals(request.getHeader("X-Subject-Token"), "foo");
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eb71cedd/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
index 60fdb41..914f760 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
@@ -145,10 +145,11 @@ public class BaseV3KeystoneApiMockTest {
    }
    
    protected void assertAuthentication(MockWebServer server) throws InterruptedException {
-      assertSent(server, "POST", "/auth/tokens", stringFromResource("/v3/auth-password-scoped.json"));
+      RecordedRequest request = assertSentNoAuth(server, "POST", "/auth/tokens");
+      assertBody(request, stringFromResource("/v3/auth-password-scoped.json"));
    }
-
-   protected RecordedRequest assertSent(MockWebServer server, String method, String path) throws InterruptedException {
+   
+   private RecordedRequest assertSentNoAuth(MockWebServer server, String method, String path) throws InterruptedException {
       RecordedRequest request = server.takeRequest();
       assertEquals(request.getMethod(), method);
       assertEquals(request.getPath(), path);
@@ -156,13 +157,23 @@ public class BaseV3KeystoneApiMockTest {
       return request;
    }
 
+   protected RecordedRequest assertSent(MockWebServer server, String method, String path) throws InterruptedException {
+      RecordedRequest request = assertSentNoAuth(server, method, path);
+      assertEquals(request.getHeader("X-Auth-Token"), authToken);
+      return request;
+   }
+
    protected RecordedRequest assertSent(MockWebServer server, String method, String path, String json)
          throws InterruptedException {
       RecordedRequest request = assertSent(server, method, path);
-      assertEquals(request.getHeader("Content-Type"), "application/json");
-      assertEquals(parser.parse(new String(request.getBody(), Charsets.UTF_8)), parser.parse(json));
+      assertBody(request, json);
       return request;
    }
+   
+   private void assertBody(RecordedRequest request, String body) {
+      assertEquals(request.getHeader("Content-Type"), "application/json");
+      assertEquals(parser.parse(new String(request.getBody(), Charsets.UTF_8)), parser.parse(body));
+   }
 
    protected Token tokenFromResource(String resource) {
       return onlyObjectFromResource(resource, new TypeToken<Map<String, Token>>() {