Repository: jclouds Updated Branches: refs/heads/apache-keystone3 cf0c70df2 -> 9b619981f
Revert "Proper configuration for Mock and Live tests" This reverts commit cf0c70df2d3a697fe942c6bfbabd4e17d2b49543. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/9b619981 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/9b619981 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/9b619981 Branch: refs/heads/apache-keystone3 Commit: 9b619981f14e8b9bf44bd17003f2515d365b1b9e Parents: cf0c70d Author: Ignasi Barrera <[email protected]> Authored: Tue Jan 9 12:23:02 2018 +0100 Committer: Ignasi Barrera <[email protected]> Committed: Tue Jan 9 12:23:02 2018 +0100 ---------------------------------------------------------------------- .../catalog/config/KeystoneAdminURLModule.java | 9 +--- .../keystone/v3/KeystoneApiMetadata.java | 6 +-- .../openstack/keystone/v3/features/AuthApi.java | 2 +- .../v2_0/extensions/RoleAdminApiLiveTest.java | 2 +- .../extensions/ServiceAdminApiLiveTest.java | 2 +- .../v2_0/extensions/TenantAdminApiLiveTest.java | 2 +- .../v2_0/extensions/UserAdminApiLiveTest.java | 2 +- .../v3/auth/V3AuthenticationApiLiveTest.java | 34 ++++++++---- .../v3/auth/V3AuthenticationApiMockTest.java | 57 ++++---------------- .../keystone/v3/features/AuthApiLiveTest.java | 20 +++++-- .../keystone/v3/features/AuthApiMockTest.java | 22 ++++---- .../v3/features/CatalogApiLiveTest.java | 9 ++++ .../v3/features/CatalogApiMockTest.java | 25 ++++----- .../v3/internal/BaseV3KeystoneApiLiveTest.java | 40 +++++--------- .../v3/internal/BaseV3KeystoneApiMockTest.java | 33 +++--------- .../src/test/resources/logback.xml | 2 +- .../test/resources/v3/auth-password-scoped.json | 23 -------- .../src/test/resources/v3/auth-password.json | 18 ------- .../test/resources/v3/auth-token-scoped.json | 17 ------ .../src/test/resources/v3/auth-token.json | 12 ----- .../src/test/resources/v3/token.json | 12 +---- 21 files changed, 114 insertions(+), 235 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/catalog/config/KeystoneAdminURLModule.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/catalog/config/KeystoneAdminURLModule.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/catalog/config/KeystoneAdminURLModule.java index 391f14d..6f357c0 100644 --- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/catalog/config/KeystoneAdminURLModule.java +++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/catalog/config/KeystoneAdminURLModule.java @@ -53,13 +53,8 @@ public class KeystoneAdminURLModule extends AbstractModule { @Identity protected final Supplier<URI> provideIdentityAdminUrl(final RegionIdToAdminURISupplier.Factory factory, @ApiVersion final String version, @Provider final Supplier<URI> providerURI) { - // There is a convention to use service types such as "identityv3" for specific endpoints. let's look first for - // those endpoints, and fallback to the default "identity" one or the project URL. - Supplier<URI> identityServiceForSpecificVersionInType = getLastValueInMap(factory.createForApiTypeAndVersion( - ServiceType.IDENTITY + "v" + version, version)); - Supplier<URI> identityServiceForVersion = Suppliers2.onThrowable(identityServiceForSpecificVersionInType, - NoSuchElementException.class, - getLastValueInMap(factory.createForApiTypeAndVersion(ServiceType.IDENTITY, version))); + Supplier<URI> identityServiceForVersion = getLastValueInMap(factory.createForApiTypeAndVersion( + ServiceType.IDENTITY, version)); Supplier<URI> whenIdentityServiceIsntListedFallbackToProviderURI = Suppliers2.onThrowable( identityServiceForVersion, NoSuchElementException.class, providerURI); Supplier<URI> whenIdentityServiceHasNoAdminURLFallbackToProviderURI = Suppliers2.or( http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/KeystoneApiMetadata.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/KeystoneApiMetadata.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/KeystoneApiMetadata.java index dc360d9..37da75a 100644 --- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/KeystoneApiMetadata.java +++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/KeystoneApiMetadata.java @@ -67,12 +67,12 @@ public class KeystoneApiMetadata extends BaseHttpApiMetadata<KeystoneApi> { protected Builder() { id("openstack-keystone-3") .name("OpenStack Keystone 3.x API") - .identityName("${projectName}:${userName} or ${userName}, if your keystone supports a default project") + .identityName("${tenantName}:${userName} or ${userName}, if your keystone supports a default tenant") .credentialName("${password}") - .endpointName("Keystone V3 base URL") + .endpointName("Keystone base url ending in /v${jclouds.api-version}/") .documentation(URI.create("http://api.openstack.org/")) .version("3") - .defaultEndpoint("http://localhost/identity/v3") + .defaultEndpoint("http://localhost:5000/v${jclouds.api-version}/") .defaultProperties(KeystoneApiMetadata.defaultProperties()) .defaultModules(ImmutableSet.<Class<? extends Module>>builder() .add(AuthenticationModule.class) http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/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..c9896f7 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 @@ -76,7 +76,7 @@ public interface AuthApi { @Named("token:check") @HEAD @Path("/tokens") - @Headers(keys = "X-Subject-Token", values = "{token}") + @Headers( keys = "X-Subject-Token", values = "{token}") @Fallback(FalseOnNotFoundOr404.class) boolean isValid(@PathParam("token") String token); http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiLiveTest.java index 01b7f8d..accdf9b 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiLiveTest.java @@ -59,7 +59,7 @@ public class RoleAdminApiLiveTest extends BaseKeystoneApiLiveTest { protected void tearDown() { if (testRole != null) { final String roleId = testRole.getId(); - assertTrue(roleAdminOption.get().delete(roleId)); + boolean success = roleAdminOption.get().delete(roleId); assertTrue(retry(new Predicate<RoleAdminApi>() { public boolean apply(RoleAdminApi roleApi) { return roleApi.get(roleId) == null; http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiLiveTest.java index a83bed1..e999816 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiLiveTest.java @@ -59,7 +59,7 @@ public class ServiceAdminApiLiveTest extends BaseKeystoneApiLiveTest { protected void tearDown() { if (testService != null) { final String serviceId = testService.getId(); - assertTrue(serviceAdminOption.get().delete(serviceId)); + boolean success = serviceAdminOption.get().delete(serviceId); assertTrue(retry(new Predicate<ServiceAdminApi>() { public boolean apply(ServiceAdminApi serviceApi) { return serviceApi.get(serviceId) == null; http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiLiveTest.java index cc7f8eb..b679579 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiLiveTest.java @@ -61,7 +61,7 @@ public class TenantAdminApiLiveTest extends BaseKeystoneApiLiveTest { protected void tearDown() { if (testTenant != null) { final String tenantId = testTenant.getId(); - assertTrue(tenantAdminOption.get().delete(tenantId)); + boolean success = tenantAdminOption.get().delete(tenantId); assertTrue(retry(new Predicate<TenantApi>() { public boolean apply(TenantApi tenantApi) { return tenantApi.get(tenantId) == null; http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiLiveTest.java index 3859bdf..152cc92 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiLiveTest.java @@ -60,7 +60,7 @@ public class UserAdminApiLiveTest extends BaseKeystoneApiLiveTest { protected void tearDown() { if (testUser != null) { final String userId = testUser.getId(); - assertTrue(userAdminOption.get().delete(userId)); + boolean success = userAdminOption.get().delete(userId); assertTrue(retry(new Predicate<UserApi>() { public boolean apply(UserApi userApi) { return userApi.get(userId) == null; http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiLiveTest.java index 605134d..d8a137e 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiLiveTest.java @@ -18,40 +18,52 @@ package org.jclouds.openstack.keystone.v3.auth; import static org.testng.Assert.assertNotNull; -import java.util.Properties; - +import org.jclouds.openstack.keystone.auth.AuthenticationApi; import org.jclouds.openstack.keystone.auth.domain.PasswordCredentials; import org.jclouds.openstack.keystone.auth.domain.TenantAndCredentials; import org.jclouds.openstack.keystone.auth.domain.TokenCredentials; +import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest; +import org.jclouds.openstack.keystone.v3.KeystoneApi; import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiLiveTest; +import org.jclouds.rest.ApiContext; +import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import com.google.common.base.Splitter; import com.google.common.collect.Iterables; +import com.google.common.reflect.TypeToken; @Test(groups = "live", testName = "V3AuthenticationApiLiveTest") public class V3AuthenticationApiLiveTest extends BaseV3KeystoneApiLiveTest { private String tenant; private String user; + private ApiContext<KeystoneApi> context; - @Override - protected Properties setupProperties() { - Properties properties = super.setupProperties(); + @BeforeClass + public void parseCredentials() { tenant = Iterables.get(Splitter.on(":").split(identity), 0); user = Iterables.get(Splitter.on(":").split(identity), 1); - return properties; + context = newBuilder().modules(setupModules()).overrides(setupProperties()) + .build(new TypeToken<ApiContext<KeystoneApi>>() { + private static final long serialVersionUID = 1L; + }); + + grabToken(context.utils().injector().getInstance(AuthenticateRequest.class)); } public void testAuthenticatePassword() { - assertNotNull(authenticationApi.authenticatePassword(TenantAndCredentials.<PasswordCredentials> builder() - .tenantName(tenant).credentials(PasswordCredentials.builder().username(user).password(credential).build()) - .build())); + assertNotNull(api().authenticatePassword(TenantAndCredentials.<PasswordCredentials> builder().tenantName(tenant) + .credentials(PasswordCredentials.builder().username(user).password(credential).build()).build())); } public void testAuthenticateToken() { - assertNotNull(authenticationApi.authenticateToken(TenantAndCredentials.<TokenCredentials> builder() - .tenantName(tenant).credentials(TokenCredentials.builder().id(token.get()).build()).build())); + assertNotNull(api().authenticateToken(TenantAndCredentials.<TokenCredentials> builder().tenantName(tenant) + .credentials(TokenCredentials.builder().id(token).build()).build())); + } + + protected AuthenticationApi api() { + return context.utils().injector().getInstance(AuthenticationApi.class); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java index c355e28..4f7f2cd 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java @@ -17,6 +17,7 @@ package org.jclouds.openstack.keystone.v3.auth; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import org.jclouds.openstack.keystone.auth.domain.AuthInfo; @@ -27,73 +28,35 @@ import org.jclouds.openstack.keystone.v3.domain.Token; import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiMockTest; import org.testng.annotations.Test; -@Test(groups = "unit", testName = "V3AuthenticationApiMockTest", singleThreaded = true) -public class V3AuthenticationApiMockTest extends BaseV3KeystoneApiMockTest { +import com.google.common.reflect.TypeToken; - public void testAuthenticatePassword() throws InterruptedException { - server.enqueue(jsonResponse("/v3/token.json")); +import java.util.Map; - TenantAndCredentials<PasswordCredentials> credentials = TenantAndCredentials.<PasswordCredentials> builder() - .tenantName("project") - .credentials(PasswordCredentials.builder().username("identity").password("credential").build()).build(); - - AuthInfo authInfo = authenticationApi.authenticatePassword(credentials); - - assertTrue(authInfo instanceof Token); - assertEquals(authInfo, tokenFromResource("/v3/token.json")); +@Test(groups = "unit", testName = "TokenApiMockTest", singleThreaded = true) +public class V3AuthenticationApiMockTest extends BaseV3KeystoneApiMockTest { - assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/auth/tokens", stringFromResource("/v3/auth-password.json")); - } - - public void testAuthenticatePasswordScoped() throws InterruptedException { + public void testAuthenticatePassword() throws InterruptedException { server.enqueue(jsonResponse("/v3/token.json")); - TenantAndCredentials<PasswordCredentials> credentials = TenantAndCredentials.<PasswordCredentials> builder() - .tenantName("project") - .scope("project:1234567890") - .credentials(PasswordCredentials.builder().username("identity").password("credential").build()).build(); - - AuthInfo authInfo = authenticationApi.authenticatePassword(credentials); + AuthInfo authInfo = authenticationApi.authenticatePassword(TenantAndCredentials.<PasswordCredentials>builder().credentials(PasswordCredentials.builder().username("user").password("pwd").build()).build()); assertTrue(authInfo instanceof Token); assertEquals(authInfo, tokenFromResource("/v3/token.json")); assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/auth/tokens", stringFromResource("/v3/auth-password-scoped.json")); + assertSent(server, "POST", "/auth/tokens"); } public void testAuthenticateToken() throws InterruptedException { server.enqueue(jsonResponse("/v3/token.json")); - TenantAndCredentials<TokenCredentials> credentials = TenantAndCredentials.<TokenCredentials> builder() - .tenantName("project") - .credentials(TokenCredentials.builder().id("token").build()).build(); - - AuthInfo authInfo = authenticationApi.authenticateToken(credentials); - - assertTrue(authInfo instanceof Token); - assertEquals(authInfo, tokenFromResource("/v3/token.json")); - - assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/auth/tokens", stringFromResource("/v3/auth-token.json")); - } - - public void testAuthenticateTokenScoped() throws InterruptedException { - server.enqueue(jsonResponse("/v3/token.json")); - - TenantAndCredentials<TokenCredentials> credentials = TenantAndCredentials.<TokenCredentials> builder() - .tenantName("project") - .scope("domain:mydomain") - .credentials(TokenCredentials.builder().id("token").build()).build(); - - AuthInfo authInfo = authenticationApi.authenticateToken(credentials); + AuthInfo authInfo = authenticationApi.authenticateToken(TenantAndCredentials.<TokenCredentials>builder().credentials(TokenCredentials.builder().id("token").build()).build()); assertTrue(authInfo instanceof Token); assertEquals(authInfo, tokenFromResource("/v3/token.json")); assertEquals(server.getRequestCount(), 1); - assertSent(server, "POST", "/auth/tokens", stringFromResource("/v3/auth-token-scoped.json")); + assertSent(server, "POST", "/auth/tokens"); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiLiveTest.java index 2cfef51..325c0ae 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/AuthApiLiveTest.java @@ -19,18 +19,32 @@ package org.jclouds.openstack.keystone.v3.features; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; +import java.util.Properties; + +import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest; +import org.jclouds.openstack.keystone.v3.KeystoneApi; import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiLiveTest; import org.testng.annotations.Test; -@Test(groups = "live", testName = "AuthApiLiveTest") +import com.google.inject.Injector; +import com.google.inject.Module; + +@Test(groups = "live", testName = "TokenApiLiveTest") public class AuthApiLiveTest extends BaseV3KeystoneApiLiveTest { + @Override + protected KeystoneApi create(Properties props, Iterable<Module> modules) { + Injector injector = newBuilder().modules(modules).overrides(props).buildInjector(); + grabToken(injector.getInstance(AuthenticateRequest.class)); + return injector.getInstance(KeystoneApi.class); + } + public void testIsTokenValid() { - assertTrue(api().isValid(token.get())); + assertTrue(api().isValid(token)); } public void testGetToken() { - assertNotNull(api().get(token.get())); + assertNotNull(api().get(token)); } private AuthApi api() { http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/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..216df80 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 @@ -23,36 +23,32 @@ import org.jclouds.openstack.keystone.v3.domain.Token; import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiMockTest; import org.testng.annotations.Test; -import com.squareup.okhttp.mockwebserver.RecordedRequest; +import com.google.common.reflect.TypeToken; @Test(groups = "unit", testName = "AuthApiMockTest", singleThreaded = true) public class AuthApiMockTest extends BaseV3KeystoneApiMockTest { public void testGetToken() throws InterruptedException { - enqueueAuthentication(server); - server.enqueue(jsonResponse("/v3/token.json")); + server.enqueue(jsonResponse("/v3/token.json").addHeader("X-Subject-Token", "bf583aefb74e45108346b4c1c8527a10")); - Token token = api.getAuthApi().get(authToken); + Token token = api.getAuthApi().get("bf583aefb74e45108346b4c1c8527a10"); assertEquals(token, tokenFromResource("/v3/token.json")); - assertEquals(server.getRequestCount(), 2); - assertAuthentication(server); - RecordedRequest request = assertSent(server, "GET", "/auth/tokens"); - assertEquals(request.getHeader("X-Subject-Token"), authToken); + assertEquals(server.getRequestCount(), 1); + assertSent(server, "GET", "/token/bf583aefb74e45108346b4c1c8527a10"); } public void testGetTokenReturns404() throws InterruptedException { - enqueueAuthentication(server); server.enqueue(response404()); - Token token = api.getAuthApi().get("foo"); + Token token = api.getAuthApi().get("bf583aefb74e45108346b4c1c8527a10"); + assertNull(token); assertEquals(server.getRequestCount(), 2); - assertAuthentication(server); - RecordedRequest request = assertSent(server, "GET", "/auth/tokens"); - assertEquals(request.getHeader("X-Subject-Token"), "foo"); + assertSent(server, "POST", "/auth/tokens"); + assertSent(server, "GET", "/token/bf583aefb74e45108346b4c1c8527a10"); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiLiveTest.java index 63cd98c..3a74a75 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiLiveTest.java @@ -18,13 +18,22 @@ package org.jclouds.openstack.keystone.v3.features; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; import java.util.List; +import java.util.Properties; +import java.util.Set; +import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest; +import org.jclouds.openstack.keystone.v2_0.domain.Tenant; +import org.jclouds.openstack.keystone.v3.KeystoneApi; import org.jclouds.openstack.keystone.v3.domain.Endpoint; import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiLiveTest; import org.testng.annotations.Test; +import com.google.inject.Injector; +import com.google.inject.Module; + @Test(groups = "live", testName = "CatalogApiLiveTest") public class CatalogApiLiveTest extends BaseV3KeystoneApiLiveTest { http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiMockTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiMockTest.java index a8d8bf4..9e43f1f 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiMockTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/CatalogApiMockTest.java @@ -18,38 +18,39 @@ package org.jclouds.openstack.keystone.v3.features; import static com.google.common.collect.Iterables.size; import static org.testng.Assert.assertEquals; - -import java.util.List; +import static org.testng.Assert.assertNull; import org.jclouds.openstack.keystone.v3.domain.Endpoint; +import org.jclouds.openstack.keystone.v3.domain.Token; import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiMockTest; import org.testng.annotations.Test; +import java.util.List; + @Test(groups = "unit", testName = "CatalogApiMockTest", singleThreaded = true) public class CatalogApiMockTest extends BaseV3KeystoneApiMockTest { public void testListEndpoints() throws InterruptedException { - enqueueAuthentication(server); server.enqueue(jsonResponse("/v3/endpoints.json")); List<Endpoint> endpoints = api.getCatalogApi().endpoints(); + assertEquals(size(endpoints), 8); - assertEquals(server.getRequestCount(), 2); - assertAuthentication(server); + assertSent(server, "GET", "/endpoints"); } - public void testListEndpointsReturns404() throws InterruptedException { - enqueueAuthentication(server); + public void testGetTokenReturns404() throws InterruptedException { server.enqueue(response404()); - List<Endpoint> endpoints = api.getCatalogApi().endpoints(); - assertEquals(endpoints.size(), 0); - + Token token = api.getAuthApi().get("bf583aefb74e45108346b4c1c8527a10"); + + assertNull(token); + assertEquals(server.getRequestCount(), 2); - assertAuthentication(server); - assertSent(server, "GET", "/endpoints"); + assertSent(server, "POST", "/auth/tokens"); + assertSent(server, "GET", "/token/bf583aefb74e45108346b4c1c8527a10"); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiLiveTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiLiveTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiLiveTest.java index d73c3cf..f3a718a 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiLiveTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiLiveTest.java @@ -16,49 +16,37 @@ */ package org.jclouds.openstack.keystone.v3.internal; -import static org.jclouds.openstack.keystone.config.KeystoneProperties.CREDENTIAL_TYPE; -import static org.jclouds.openstack.keystone.config.KeystoneProperties.SERVICE_TYPE; - import java.util.Properties; +import com.google.common.collect.Iterables; import org.jclouds.apis.BaseApiLiveTest; -import org.jclouds.openstack.keystone.auth.AuthenticationApi; -import org.jclouds.openstack.keystone.auth.config.Authentication; +import org.jclouds.http.HttpRequest; +import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest; +import org.jclouds.openstack.keystone.config.KeystoneProperties; import org.jclouds.openstack.keystone.v3.KeystoneApi; -import org.jclouds.rest.ApiContext; -import com.google.common.base.Supplier; -import com.google.inject.Key; -import com.google.inject.Module; -import com.google.inject.TypeLiteral; +import static org.jclouds.openstack.keystone.config.KeystoneProperties.SERVICE_TYPE; public class BaseV3KeystoneApiLiveTest extends BaseApiLiveTest<KeystoneApi> { - protected Supplier<String> token; - protected AuthenticationApi authenticationApi; + protected String token; public BaseV3KeystoneApiLiveTest() { provider = "openstack-keystone-3"; } @Override - protected KeystoneApi create(Properties props, Iterable<Module> modules) { - ApiContext<KeystoneApi> ctx = newBuilder().modules(modules).overrides(props).build(); - authenticationApi = ctx.utils().injector().getInstance(AuthenticationApi.class); - token = ctx.utils().injector().getInstance(Key.get(new TypeLiteral<Supplier<String>>() { - }, Authentication.class)); - return ctx.getApi(); - } - - @Override protected Properties setupProperties() { Properties props = super.setupProperties(); - setIfTestSystemPropertyPresent(props, CREDENTIAL_TYPE); - String customServiceType = setIfTestSystemPropertyPresent(props, SERVICE_TYPE); - if (customServiceType == null) { - props.setProperty(SERVICE_TYPE, "identityv3"); - } + setIfTestSystemPropertyPresent(props, KeystoneProperties.CREDENTIAL_TYPE); + props.setProperty(SERVICE_TYPE, "identityv3"); return props; } + // Get the token currently in use + protected void grabToken(AuthenticateRequest ar) { + HttpRequest test = ar.filter(HttpRequest.builder().method("GET").endpoint(endpoint).build()); + token = Iterables.getOnlyElement(test.getHeaders().get("X-Auth-Token")); + } + } http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/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..599a0e8 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 @@ -25,14 +25,12 @@ import java.io.IOException; import java.util.Map; import java.util.Properties; import java.util.Set; -import java.util.UUID; import org.jclouds.ContextBuilder; import org.jclouds.concurrent.config.ExecutorServiceModule; import org.jclouds.json.Json; -import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; import org.jclouds.openstack.keystone.auth.AuthenticationApi; -import org.jclouds.openstack.keystone.config.KeystoneProperties; +import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest; import org.jclouds.openstack.keystone.v3.KeystoneApi; import org.jclouds.openstack.keystone.v3.KeystoneApiMetadata; import org.jclouds.openstack.keystone.v3.domain.Token; @@ -55,10 +53,11 @@ public class BaseV3KeystoneApiMockTest { private static final String DEFAULT_ENDPOINT = new KeystoneApiMetadata().getDefaultEndpoint().orNull(); + private final Set<Module> modules = ImmutableSet.<Module> of(new ExecutorServiceModule(newDirectExecutorService())); + protected MockWebServer server; protected KeystoneApi api; protected AuthenticationApi authenticationApi; - protected String authToken; private Json json; // So that we can ignore formatting. @@ -68,11 +67,10 @@ public class BaseV3KeystoneApiMockTest { public void start() throws IOException { server = new MockWebServer(); server.play(); - ApiContext<KeystoneApi> ctx = ContextBuilder.newBuilder("openstack-keystone-3") - .credentials("project:identity", "credential") + .credentials("identity", "credential") .endpoint(url("")) - .modules(modules()) + .modules(modules) .overrides(overrides()) .build(); json = ctx.utils().injector().getInstance(Json.class); @@ -87,27 +85,12 @@ public class BaseV3KeystoneApiMockTest { } protected Properties overrides() { - Properties overrides = new Properties(); - overrides.setProperty(KeystoneProperties.SCOPE, "project:1234567890"); - overrides.setProperty(KeystoneProperties.SERVICE_TYPE, "identityv3"); - return overrides; - } - - protected Set<Module> modules() { - ImmutableSet.Builder<Module> modules = ImmutableSet.builder(); - modules.add(new ExecutorServiceModule(newDirectExecutorService())); - modules.add(new SLF4JLoggingModule()); - return modules.build(); + return new Properties(); } protected String url(String path) { return server.getUrl(path).toString(); } - - protected void enqueueAuthentication(MockWebServer server) { - authToken = UUID.randomUUID().toString(); - server.enqueue(jsonResponse("/v3/token.json").addHeader("X-Subject-Token", authToken)); - } protected MockResponse jsonResponse(String resource) { return new MockResponse().addHeader("Content-Type", "application/json").setBody(stringFromResource(resource)); @@ -143,10 +126,6 @@ public class BaseV3KeystoneApiMockTest { String text = stringFromResource(resourceName); return json.fromJson(text, type); } - - protected void assertAuthentication(MockWebServer server) throws InterruptedException { - assertSent(server, "POST", "/auth/tokens", stringFromResource("/v3/auth-password-scoped.json")); - } protected RecordedRequest assertSent(MockWebServer server, String method, String path) throws InterruptedException { RecordedRequest request = server.takeRequest(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/resources/logback.xml ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/resources/logback.xml b/apis/openstack-keystone/src/test/resources/logback.xml index 5c37355..4cf5016 100644 --- a/apis/openstack-keystone/src/test/resources/logback.xml +++ b/apis/openstack-keystone/src/test/resources/logback.xml @@ -13,7 +13,7 @@ </encoder> </appender> <appender name="COMPUTEFILE" class="ch.qos.logback.core.FileAppender"> - <file>target/test-data/jclouds-compute.log</file> + <file>target/jclouds-compute.log</file> <encoder> <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> </encoder> http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/resources/v3/auth-password-scoped.json ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/resources/v3/auth-password-scoped.json b/apis/openstack-keystone/src/test/resources/v3/auth-password-scoped.json deleted file mode 100644 index 48bfc9d..0000000 --- a/apis/openstack-keystone/src/test/resources/v3/auth-password-scoped.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "auth": { - "identity": { - "methods": [ - "password" - ], - "password": { - "user": { - "name": "identity", - "domain": { - "name": "project" - }, - "password": "credential" - } - } - }, - "scope": { - "project": { - "id": "1234567890" - } - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/resources/v3/auth-password.json ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/resources/v3/auth-password.json b/apis/openstack-keystone/src/test/resources/v3/auth-password.json deleted file mode 100644 index 6cb05a3..0000000 --- a/apis/openstack-keystone/src/test/resources/v3/auth-password.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "auth": { - "identity": { - "methods": [ - "password" - ], - "password": { - "user": { - "name": "identity", - "domain": { - "name": "project" - }, - "password": "credential" - } - } - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/resources/v3/auth-token-scoped.json ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/resources/v3/auth-token-scoped.json b/apis/openstack-keystone/src/test/resources/v3/auth-token-scoped.json deleted file mode 100644 index a1938a7..0000000 --- a/apis/openstack-keystone/src/test/resources/v3/auth-token-scoped.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "auth": { - "identity": { - "methods": [ - "token" - ], - "token": { - "id": "token" - } - }, - "scope": { - "domain": { - "name": "mydomain" - } - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/resources/v3/auth-token.json ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/resources/v3/auth-token.json b/apis/openstack-keystone/src/test/resources/v3/auth-token.json deleted file mode 100644 index 36096a2..0000000 --- a/apis/openstack-keystone/src/test/resources/v3/auth-token.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "auth": { - "identity": { - "methods": [ - "token" - ], - "token": { - "id": "token" - } - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/9b619981/apis/openstack-keystone/src/test/resources/v3/token.json ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/resources/v3/token.json b/apis/openstack-keystone/src/test/resources/v3/token.json index b7fa677..20734d5 100644 --- a/apis/openstack-keystone/src/test/resources/v3/token.json +++ b/apis/openstack-keystone/src/test/resources/v3/token.json @@ -298,7 +298,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "http://localhost/identity/v3", + "url": "http://localhost/v3", "region": "uk-1", "interface": "admin", "id": "db15a7126d4a4f1f81903bb4d56be32b", @@ -382,19 +382,11 @@ "endpoints": [ { "region_id": "uk-1", - "url": "http://localhost/identity/v3", + "url": "https://identity.myprovider.com/v3", "region": "uk-1", "interface": "public", "id": "27dc2bba1c5d4a14b68657fc8fdd4e3e", "name": "identityv3" - }, - { - "region_id": "uk-1", - "url": "http://localhost/identity/v3", - "region": "uk-1", - "interface": "admin", - "id": "27dc2bba1c5d4a14b68657fc8fdd4e3e", - "name": "identityv3" } ], "type": "identityv3",
