Repository: jclouds Updated Branches: refs/heads/keystonev3 d090c1a20 -> aa33769ef
improve mocke tests Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/aa33769e Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/aa33769e Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/aa33769e Branch: refs/heads/keystonev3 Commit: aa33769ef30fb893184fd14c49de1494ff4b52e1 Parents: d090c1a Author: Andrea Turli <[email protected]> Authored: Wed Dec 20 17:11:18 2017 +0100 Committer: Andrea Turli <[email protected]> Committed: Wed Dec 20 17:11:18 2017 +0100 ---------------------------------------------------------------------- .../v3/auth/V3AuthenticationApiMockTest.java | 62 ++++++++++++++++++++ .../keystone/v3/features/TokenApiMockTest.java | 5 -- .../v3/internal/BaseV3KeystoneApiMockTest.java | 16 ++++- .../src/test/resources/v3/token.json | 48 +++++++-------- 4 files changed, 99 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/aa33769e/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 new file mode 100644 index 0000000..4f7f2cd --- /dev/null +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java @@ -0,0 +1,62 @@ +/* + * 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.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; +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.v3.domain.Token; +import org.jclouds.openstack.keystone.v3.internal.BaseV3KeystoneApiMockTest; +import org.testng.annotations.Test; + +import com.google.common.reflect.TypeToken; + +import java.util.Map; + +@Test(groups = "unit", testName = "TokenApiMockTest", singleThreaded = true) +public class V3AuthenticationApiMockTest extends BaseV3KeystoneApiMockTest { + + public void testAuthenticatePassword() throws InterruptedException { + server.enqueue(jsonResponse("/v3/token.json")); + + 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"); + } + + public void testAuthenticateToken() throws InterruptedException { + server.enqueue(jsonResponse("/v3/token.json")); + + 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"); + } + +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/aa33769e/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/TokenApiMockTest.java ---------------------------------------------------------------------- diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/TokenApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/TokenApiMockTest.java index 57520fa..ba33431 100644 --- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/TokenApiMockTest.java +++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/features/TokenApiMockTest.java @@ -51,9 +51,4 @@ public class TokenApiMockTest extends BaseV3KeystoneApiMockTest { assertSent(server, "GET", "/token/bf583aefb74e45108346b4c1c8527a10"); } - private Token tokenFromResource(String resource) { - return onlyObjectFromResource(resource, new TypeToken<Token>() { - private static final long serialVersionUID = 1L; - }); - } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/aa33769e/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 1d87cf8..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 @@ -29,8 +29,11 @@ import java.util.Set; import org.jclouds.ContextBuilder; import org.jclouds.concurrent.config.ExecutorServiceModule; import org.jclouds.json.Json; +import org.jclouds.openstack.keystone.auth.AuthenticationApi; +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; import org.jclouds.rest.ApiContext; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -54,6 +57,7 @@ public class BaseV3KeystoneApiMockTest { protected MockWebServer server; protected KeystoneApi api; + protected AuthenticationApi authenticationApi; private Json json; // So that we can ignore formatting. @@ -70,6 +74,7 @@ public class BaseV3KeystoneApiMockTest { .overrides(overrides()) .build(); json = ctx.utils().injector().getInstance(Json.class); + authenticationApi = ctx.utils().injector().getInstance(AuthenticationApi.class); api = ctx.getApi(); } @@ -108,7 +113,7 @@ public class BaseV3KeystoneApiMockTest { } } - protected <T> T onlyObjectFromResource(String resourceName, TypeToken<T> type) { + protected <T> T onlyObjectFromResource(String resourceName, TypeToken<Map<String, T>> type) { // Assume JSON objects passed here will be in the form: { "entity": { ... } } String text = stringFromResource(resourceName); Map<String, T> object = json.fromJson(text, type.getType()); @@ -116,7 +121,7 @@ public class BaseV3KeystoneApiMockTest { checkArgument(object.keySet().size() == 1, "The given json does not contain more than one object: %s", text); return object.get(getOnlyElement(object.keySet())); } - + protected <T> T objectFromResource(String resourceName, Class<T> type) { String text = stringFromResource(resourceName); return json.fromJson(text, type); @@ -127,7 +132,6 @@ public class BaseV3KeystoneApiMockTest { assertEquals(request.getMethod(), method); assertEquals(request.getPath(), path); assertEquals(request.getHeader("Accept"), "application/json"); - assertEquals(request.getHeader("Authorization"), "X-Token " + "token"); return request; } @@ -138,4 +142,10 @@ public class BaseV3KeystoneApiMockTest { assertEquals(parser.parse(new String(request.getBody(), Charsets.UTF_8)), parser.parse(json)); return request; } + + protected Token tokenFromResource(String resource) { + return onlyObjectFromResource(resource, new TypeToken<Map<String, Token>>() { + private static final long serialVersionUID = 1L; + }); + } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/aa33769e/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 1e8906d..20734d5 100644 --- a/apis/openstack-keystone/src/test/resources/v3/token.json +++ b/apis/openstack-keystone/src/test/resources/v3/token.json @@ -31,7 +31,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://objectstorage.uk-1.cloud.global.fujitsu.com/v1/AUTH_2233c4d7d5c044b1b48e1bef25c1f305", + "url": "https://objectstorage.myprovider.com/v1/AUTH_2233c4d7d5c044b1b48e1bef25c1f305", "region": "uk-1", "interface": "public", "id": "b506af0e016a4b5fb592f196da569a41", @@ -46,7 +46,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://keymanagement.uk-1.cloud.global.fujitsu.com/v1", + "url": "https://keymanagement.myprovider.com/v1", "region": "uk-1", "interface": "public", "id": "0419c448001845af8f6828cf49745e72", @@ -61,7 +61,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://certificate.uk-1.cloud.global.fujitsu.com/v1", + "url": "https://certificate.myprovider.com/v1", "region": "uk-1", "interface": "public", "id": "e1cc93936fb94cdbadc20f17c4ad3140", @@ -76,7 +76,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://orchestration.uk-1.cloud.global.fujitsu.com/v1/2233c4d7d5c044b1b48e1bef25c1f305", + "url": "https://orchestration.myprovider.com/v1/2233c4d7d5c044b1b48e1bef25c1f305", "region": "uk-1", "interface": "public", "id": "c3ee708a6ae24ddf92c078526c36a446", @@ -91,7 +91,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://blockstorage.uk-1.cloud.global.fujitsu.com/v1/2233c4d7d5c044b1b48e1bef25c1f305", + "url": "https://blockstorage.myprovider.com/v1/2233c4d7d5c044b1b48e1bef25c1f305", "region": "uk-1", "interface": "public", "id": "ba9061d324954b1a9f6b1c1f5d4a5c5e", @@ -106,7 +106,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://loadbalancing.uk-1.cloud.global.fujitsu.com", + "url": "https://loadbalancing.myprovider.com", "region": "uk-1", "interface": "public", "id": "169bcb3f92384f709232864f4d5304eb", @@ -139,7 +139,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://compute-w.uk-1.cloud.global.fujitsu.com", + "url": "https://compute-w.myprovider.com", "region": "uk-1", "interface": "public", "id": "e26ad89a682d4c8f8a71c9e76cd785b4", @@ -160,7 +160,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://compute.uk-1.cloud.global.fujitsu.com/v2/2233c4d7d5c044b1b48e1bef25c1f305", + "url": "https://compute.myprovider.com/v2/2233c4d7d5c044b1b48e1bef25c1f305", "region": "uk-1", "interface": "public", "id": "f70e51b9a6a74a87a4c7055b8df8bedf", @@ -175,7 +175,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://queue.uk-1.cloud.global.fujitsu.com", + "url": "https://queue.myprovider.com", "region": "uk-1", "interface": "public", "id": "c46b5ec51ab04402a9ffd8177743ba6f", @@ -190,7 +190,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://autoscale.uk-1.cloud.global.fujitsu.com/autoscale_schedulers", + "url": "https://autoscale.myprovider.com/autoscale_schedulers", "region": "uk-1", "interface": "public", "id": "071ee50be4b341558e37f84abac47d02", @@ -205,7 +205,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://telemetry.uk-1.cloud.global.fujitsu.com", + "url": "https://telemetry.myprovider.com", "region": "uk-1", "interface": "public", "id": "6ac15657fbc548d7ab2ed986b8d94192", @@ -232,7 +232,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://rolemanagement.uk-1.cloud.global.fujitsu.com/v1", + "url": "https://rolemanagement.myprovider.com/v1", "region": "uk-1", "interface": "public", "id": "2d600a5de6ec42c6a5eab7b519832d87", @@ -247,7 +247,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://compute-b.uk-1.cloud.global.fujitsu.com", + "url": "https://compute-b.myprovider.com", "region": "uk-1", "interface": "public", "id": "768450282d5546409395d2cb35502dad", @@ -262,7 +262,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://networking.uk-1.cloud.global.fujitsu.com", + "url": "https://networking.myprovider.com", "region": "uk-1", "interface": "public", "id": "675910513a7e466c84c39c5ca9445b81", @@ -283,7 +283,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://database.uk-1.cloud.global.fujitsu.com/v1.0/2233c4d7d5c044b1b48e1bef25c1f305", + "url": "https://database.myprovider.com/v1.0/2233c4d7d5c044b1b48e1bef25c1f305", "region": "uk-1", "interface": "public", "id": "6976cbeed14c464da15c13e949b41607", @@ -298,7 +298,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://identity.uk-1.cloud.global.fujitsu.com/v2.0", + "url": "http://localhost/v3", "region": "uk-1", "interface": "admin", "id": "db15a7126d4a4f1f81903bb4d56be32b", @@ -331,7 +331,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://software.uk-1.cloud.global.fujitsu.com/v1.0", + "url": "https://software.myprovider.com/v1.0", "region": "uk-1", "interface": "public", "id": "fd6g35fgknrzumut7bx6p6bwzehkfhrz", @@ -346,7 +346,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://blockstorage.uk-1.cloud.global.fujitsu.com/v2/2233c4d7d5c044b1b48e1bef25c1f305", + "url": "https://blockstorage.myprovider.com/v2/2233c4d7d5c044b1b48e1bef25c1f305", "region": "uk-1", "interface": "public", "id": "8c4ace3bbbd44883b5762a9ad8432a46", @@ -367,7 +367,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://vmimport.uk-1.cloud.global.fujitsu.com", + "url": "https://vmimport.myprovider.com", "region": "uk-1", "interface": "public", "id": "225257ec50ef47668185587cc6edb95d", @@ -382,7 +382,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://identity.uk-1.cloud.global.fujitsu.com/v3", + "url": "https://identity.myprovider.com/v3", "region": "uk-1", "interface": "public", "id": "27dc2bba1c5d4a14b68657fc8fdd4e3e", @@ -397,7 +397,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://applicationmanagement.uk-1.cloud.global.fujitsu.com", + "url": "https://applicationmanagement.myprovider.com", "region": "uk-1", "interface": "public", "id": "06fbcf8235434f23a08faed03b4af9ac", @@ -430,7 +430,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://networking-ex.uk-1.cloud.global.fujitsu.com", + "url": "https://networking-ex.myprovider.com", "region": "uk-1", "interface": "public", "id": "bf356065e45349a5bde5e043c95a1923", @@ -460,7 +460,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://image.uk-1.cloud.global.fujitsu.com", + "url": "https://image.myprovider.com", "region": "uk-1", "interface": "public", "id": "a832d640886b4ef89027339a2edf8fcd", @@ -481,7 +481,7 @@ "endpoints": [ { "region_id": "uk-1", - "url": "https://import-export.uk-1.cloud.global.fujitsu.com", + "url": "https://import-export.myprovider.com", "region": "uk-1", "interface": "public", "id": "e8bde8fe61a14a88b414e5568fc17201",
