http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiExpectTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiExpectTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiExpectTest.java deleted file mode 100644 index 46f20f9..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiExpectTest.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * 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.cloudstack.features; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; - -import java.io.UnsupportedEncodingException; -import java.net.URI; - -import org.jclouds.cloudstack.CloudStackContext; -import org.jclouds.cloudstack.domain.SshKeyPair; -import org.jclouds.cloudstack.internal.BaseCloudStackExpectTest; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.jclouds.ssh.SshKeys; -import org.jclouds.util.Strings2; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; - -/** - * Test the CloudStack SSHKeyPairApi - */ -@Test(groups = "unit", testName = "SSHKeyPairApiExpectTest") -public class SSHKeyPairApiExpectTest extends BaseCloudStackExpectTest<SSHKeyPairApi> { - - @Test - public void testListAndGetSSHKeyPairsWhenResponseIs2xx() { - HttpResponse response = HttpResponse.builder() - .statusCode(200) - .payload(payloadFromResource("/listsshkeypairsresponse.json")) - .build(); - - SSHKeyPairApi client = requestSendsResponse(HttpRequest.builder() - .method("GET") - .endpoint( - URI.create("http://localhost:8080/client/api?response=json&" + - "command=listSSHKeyPairs&listAll=true&apiKey=identity&signature=5d2J9u%2BdKpkQsadDbl9i9OcUSLQ%3D")) - .addHeader("Accept", "application/json") - .build(), response); - - assertEquals(client.listSSHKeyPairs(), ImmutableSet.of( - SshKeyPair.builder().name("jclouds-keypair") - .fingerprint("1c:06:74:52:3b:99:1c:95:5c:04:c2:f4:ba:77:6e:7b").build())); - - client = requestSendsResponse(HttpRequest.builder() - .method("GET") - .endpoint( - URI.create("http://localhost:8080/client/api?response=json&command=listSSHKeyPairs&listAll=true&" + - "name=jclouds-keypair&apiKey=identity&signature=hJIVCFOHhdOww3aq19tFHpeD2HI%3D")) - .addHeader("Accept", "application/json") - .build(), response); - - assertEquals(client.getSSHKeyPair("jclouds-keypair"), - SshKeyPair.builder().name("jclouds-keypair") - .fingerprint("1c:06:74:52:3b:99:1c:95:5c:04:c2:f4:ba:77:6e:7b").build()); - } - - @Test - public void testCreateSSHKeyPairsWhenResponseIs2xx() { - SSHKeyPairApi client = requestSendsResponse( - HttpRequest.builder() - .method("GET") - .endpoint( - URI.create("http://localhost:8080/client/api?response=json&command=createSSHKeyPair&" + - "name=jclouds-keypair&apiKey=identity&signature=8wk32PZF44jrBLH2HLel22%2BqMC4%3D")) - .addHeader("Accept", "application/json") - .build(), - HttpResponse.builder() - .statusCode(200) - .payload(payloadFromResource("/createsshkeypairresponse.json")) - .build()); - - SshKeyPair actual = client.createSSHKeyPair("jclouds-keypair"); - SshKeyPair expected = SshKeyPair.builder().name("jclouds-keypair") - .fingerprint("1c:06:74:52:3b:99:1c:95:5c:04:c2:f4:ba:77:6e:7b") - .privateKey("-----BEGIN RSA PRIVATE KEY-----\n" + - "MIICXgIBAAKBgQDZo/EF4Ew1uEW0raz7vCs28lBwy0UKV2Xr606gaEgxO7h9mSXZ\n" + - "4x2K/KQ1NMnrbjppxGycLh9EKPWAO3ezFULAyuOZW4Fy+xRS8+3MAijxBJY/KBgl\n" + - "x5rJm2ILumRkTNkMlLGCSBb9SOqYRN1VpOy7kn3StzU9LdJ/snKVE2JLHQIDAQAB\n" + - "AoGBAMnL5okKRd9xcsBqYIAxIuiZmNhcwTErhEdRMOAukPGFbDSYsa3rldLvGdpz\n" + - "jd2LoQG8rO/LHBZ429kASqZzyiV+NvcgH+tFNJSVAigjSICfhEKF9PY2TiAkrg7S\n" + - "GyJgAjpPWQc2sQh0dE8EPEtBiq4ibXfMTDmbs1d/vnfdwtQJAkEA+AX5Y+xgWj74\n" + - "dYETmNLyLhNZpftLizEfIYj7lCVhsbFwVb8jbM1m8n8bxwGjls1w/ico1CWcQna+\n" + - "UnAfA8kJvwJBAOCj0YgDKpYd0OLQhvI3212J9QcQpJEkDOTYiMwXNHCNMKRpoF47\n" + - "MPPX+GG8YzUiQAi9/OG4pDKCjzQWE/ebiiMCQQCssnQ5WICqtggIwYykr9VDseON\n" + - "SFIMpHJ5xkjumazRrqx6eDGxc8BH/6uWwRRoT7pqrVeniFyqhsX03u8pkpU/AkBj\n" + - "WfCcwBHArNUqy2EzlWKuvwogosq16oTNXbs60HR/5uIBhTnJE1K2NemDiGc0I77A\n" + - "Xw6N4jS0piuhtLYGB8OTAkEA50abdbduXWcr62Z6E8G/6LNFaNg0uBuVgwSHtJMd\n" + - "dNeUtVDHQCHSf3tvxXTAtaB9PCnGOfgm/dyYWEMf3rMoHQ==\n" + - "-----END RSA PRIVATE KEY-----\n") - .build(); - - assertEquals(actual, expected); - assertEquals(SshKeys.fingerprintPrivateKey(actual.getPrivateKey()), expected.getFingerprint()); - } - - @Test - public void testRegisterSSHKeyPairWhenResponseIs2xx() throws UnsupportedEncodingException { - String publicKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCc903twxU2zcQnIJdXv61RwZNZW94uId9qz08fgsBJsCOnHNIC4+L9kDOA2IHV9cUfEDBm1Be5TbpadWwSbS/05E+FARH2/MCO932UgcKUq5PGymS0249fLCBPci5zoLiG5vIym+1ij1hL/nHvkK99NIwe7io+Lmp9OcF3PTsm3Rgh5T09cRHGX9horp0VoAVa9vKJx6C1/IEHVnG8p0YPPa1lmemvx5kNBEiyoNQNYa34EiFkcJfP6rqNgvY8h/j4nE9SXoUCC/g6frhMFMOL0tzYqvz0Lczqm1Oh4RnSn3O9X4R934p28qqAobe337hmlLUdb6H5zuf+NwCh0HdZ"; - - String privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" + - "MIIEpQIBAAKCAQEAnPdN7cMVNs3EJyCXV7+tUcGTWVveLiHfas9PH4LASbAjpxzS\n" + - "AuPi/ZAzgNiB1fXFHxAwZtQXuU26WnVsEm0v9ORPhQER9vzAjvd9lIHClKuTxspk\n" + - "tNuPXywgT3Iuc6C4hubyMpvtYo9YS/5x75CvfTSMHu4qPi5qfTnBdz07Jt0YIeU9\n" + - "PXERxl/YaK6dFaAFWvbyicegtfyBB1ZxvKdGDz2tZZnpr8eZDQRIsqDUDWGt+BIh\n" + - "ZHCXz+q6jYL2PIf4+JxPUl6FAgv4On64TBTDi9Lc2Kr89C3M6ptToeEZ0p9zvV+E\n" + - "fd+KdvKqgKG3t9+4ZpS1HW+h+c7n/jcAodB3WQIDAQABAoIBAQCX+iKr2LzLiUMo\n" + - "lzexsFbB1+kxFe/zPryxD/QOEGzZa/+5KAB25+q5k0sqr3ZWkVXAk84pYaVut0F9\n" + - "oD95P9q1A/GyV6zrNSHDywD+Lv0VMWMtkH0dV5Bjl7fY9DbhoXXIuAc81Rhs21mk\n" + - "isIKME6Zra0VrYedGRfmE2usZc7F+rrnJeWs2edk1Q/lBLIe/v+NfRrO0fpHPu8S\n" + - "9/kbVM3fUwHXxVTbvzZjjerQcLyEr4nT53DcSQJcm3e2DGsdRr5FBxkOXlcWElew\n" + - "pbGM+RiF7RJvPW8lrmGj4y7Eo7TmfW8Yc5MM5A/PcvvxuRTRurmqOA5Wl1Bsp8/o\n" + - "PEU/p9G5AoGBANcBOz0vSj+NOFip9gbc2WPVFpaoCT51DBQsT9R4kxe34Ltbwqaj\n" + - "QXMiBjgereSM/KXTriA/Lhkj09YI5OAgk64PXcmDc2urMiFlewqxld79GDLAFwqn\n" + - "nsEm1YTjY8wujw2J5Fbp7BZFHCrfld5L8xhgSb135YEa1/4LGOg+o6FDAoGBALrl\n" + - "GL/v8ZDc2l/GpGsOA7360s9lRUhCTlQ86am8Lw/AdMSdpi9Is3yCdZx1NWDpUEKz\n" + - "MBQTfiEEzpYlujvdUQNyQ4JGuhU/J7JEqEP2rfXaXjn0PIThkWFuNRkyK6Pz0rsT\n" + - "4YJQouI7PCDE3BZxY4WYZ4uBZpCf3YC5SZiwtl0zAoGBAJGNnNwD+sDhSscDcLIe\n" + - "qvDh3iPp6DAnLyEtCnItmm7RJcvRCAqltPZLj2hIpLJ4G8XrcxMTkpKkZZGdfcyZ\n" + - "YUDR2E1Gt0mpoQto1w5bQLmwH8SjtDWbWmcqchw/kF03G9MviaypOhGtga8opB3U\n" + - "zuKutN0WoQFw+c5bFuaLGV1fAoGABdFLy+20H0ZApeqRA6QUCb3dAges+GrX9VdQ\n" + - "DrCE5oCfId+mZKJms+F7t7sORk386ZaaUIWqz2xO4e2atnJVKz5LS6rX8AFfQvVQ\n" + - "J41uLND3TeaEW76Jv/amQHqHUTstvBUKV/waleAyJvL5xtkQt//eeUE16BqR0ofx\n" + - "+obFpnECgYEAuDT1vH9JcGhD/iX4qLhS1xS1fXJh4IYvt8bg8oLRyRBqF6x9uhx3\n" + - "6v+WQaKHyGvebWRN+SKAsKQHsh8a7Iy7xZdZmQ8v9j4DcYwJMb7ksV//R2kXAPGL\n" + - "BTfRj1MSI+6AsuVY/YF1O2AfGneP+Zn5bQwYzQkxOYjzF9bhZz3IniE=\n" + - "-----END RSA PRIVATE KEY-----\n"; - - // Compute the fingerprint by using the following command: ssh-keygen -lf key.pub - String expectedFingerprint = "8f:f1:91:2d:b1:a8:51:f1:79:cf:c4:31:c4:14:9d:81"; - - assertTrue(SshKeys.privateKeyMatchesPublicKey(privateKey, publicKey)); - assertEquals(SshKeys.fingerprintPublicKey(publicKey), expectedFingerprint); - assertEquals(SshKeys.fingerprintPrivateKey(privateKey), expectedFingerprint); - - SSHKeyPairApi client = requestSendsResponse( - HttpRequest.builder() - .method("GET") - .endpoint( - URI.create("http://localhost:8080/client/api?response=json&command=registerSSHKeyPair&" + - "name=jclouds-keypair&publickey=" + Strings2.urlEncode(publicKey, '/') + - "&apiKey=identity&signature=g/6BXLnnvOMlKQBp1yM7GKlvfus%3D")) - .headers( - ImmutableMultimap.<String, String>builder() - .put("Accept", "application/json") - .build()) - .build(), - HttpResponse.builder() - .statusCode(200) - .payload(payloadFromResource("/registersshkeypairresponse.json")) - .build()); - - SshKeyPair actual = client.registerSSHKeyPair("jclouds-keypair", publicKey); - SshKeyPair expected = SshKeyPair.builder().name("jclouds-keypair") - .fingerprint(expectedFingerprint).build(); - - assertEquals(actual, expected); - assertEquals(expectedFingerprint, expected.getFingerprint()); - } - - @Override - protected SSHKeyPairApi clientFrom(CloudStackContext context) { - return context.getApi().getSSHKeyPairApi(); - } -}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiLiveTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiLiveTest.java deleted file mode 100644 index df35d51..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiLiveTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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.cloudstack.features; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; - -import java.util.Map; -import java.util.Set; - -import org.jclouds.cloudstack.domain.SshKeyPair; -import org.jclouds.cloudstack.internal.BaseCloudStackApiLiveTest; -import org.jclouds.ssh.SshKeys; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -/** - * Tests behavior of {@code SSHKeyPairApi} - */ -@Test(groups = "live", singleThreaded = true, testName = "SSHKeyPairApiLiveTest") -public class SSHKeyPairApiLiveTest extends BaseCloudStackApiLiveTest { - - protected String prefix = System.getProperty("user.name"); - private String keyPairName = prefix + "-jclouds-keypair"; - private SshKeyPair sshKeyPair; - - @BeforeMethod - @AfterMethod - public void removeExistingKey() { - client.getSSHKeyPairApi().deleteSSHKeyPair(keyPairName); - } - - @Test - public void testListSSHKeyPairs() { - final Set<SshKeyPair> sshKeyPairs = client.getSSHKeyPairApi().listSSHKeyPairs(); - for (SshKeyPair sshKeyPair : sshKeyPairs) { - checkSSHKeyPair(sshKeyPair); - } - } - - @Test - public void testCreateDeleteSSHKeyPair() { - sshKeyPair = client.getSSHKeyPairApi().createSSHKeyPair(keyPairName); - assertNotNull(sshKeyPair.getPrivateKey()); - checkSSHKeyPair(sshKeyPair); - client.getSSHKeyPairApi().deleteSSHKeyPair(sshKeyPair.getName()); - - assertEquals(client.getSSHKeyPairApi().getSSHKeyPair(sshKeyPair.getName()), null); - assertEquals(SshKeys.fingerprintPrivateKey(sshKeyPair.getPrivateKey()), sshKeyPair.getFingerprint()); - - sshKeyPair = null; - } - - @Test - public void testRegisterDeleteSSHKeyPair() { - final Map<String, String> sshKey = SshKeys.generate(); - final String publicKey = sshKey.get("public"); - - sshKeyPair = client.getSSHKeyPairApi().registerSSHKeyPair(keyPairName, publicKey); - assertNull(sshKeyPair.getPrivateKey()); - checkSSHKeyPair(sshKeyPair); - client.getSSHKeyPairApi().deleteSSHKeyPair(keyPairName); - - assertEquals(client.getSSHKeyPairApi().getSSHKeyPair(sshKeyPair.getName()), null); - assertEquals(SshKeys.fingerprintPublicKey(publicKey), sshKeyPair.getFingerprint()); - - sshKeyPair = null; - } - - protected void checkSSHKeyPair(SshKeyPair pair) { - assert pair.getName() != null : pair; - assertEquals(pair.getFingerprint(), - client.getSSHKeyPairApi().getSSHKeyPair(pair.getName()).getFingerprint()); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiTest.java deleted file mode 100644 index b8492e1..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SSHKeyPairApiTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * 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.cloudstack.features; - -import static org.jclouds.reflect.Reflection2.method; -import static org.testng.Assert.assertEquals; - -import java.io.IOException; -import java.net.URLEncoder; - -import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404; -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.Fallbacks.VoidOnNotFoundOr404; -import org.jclouds.cloudstack.filters.QuerySigner; -import org.jclouds.cloudstack.internal.BaseCloudStackApiTest; -import org.jclouds.cloudstack.options.ListSSHKeyPairsOptions; -import org.jclouds.fallbacks.MapHttp4xxCodesToExceptions; -import org.jclouds.functions.IdentityFunction; -import org.jclouds.http.functions.ParseFirstJsonValueNamed; -import org.jclouds.http.functions.ReleasePayloadAndReturn; -import org.jclouds.rest.internal.GeneratedHttpRequest; -import org.jclouds.ssh.SshKeys; -import org.testng.annotations.Test; - -import com.google.common.base.Functions; -import com.google.common.collect.ImmutableList; -import com.google.common.reflect.Invokable; -/** - * Tests behavior of {@code SSHKeyPairApi} - */ -@Test(groups = "unit", testName = "SSHKeyPairApiTest") -public class SSHKeyPairApiTest extends BaseCloudStackApiTest<SSHKeyPairApi> { - - public void testListSSHKeyPairs() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SSHKeyPairApi.class, "listSSHKeyPairs", ListSSHKeyPairsOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.of()); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSSHKeyPairs&listAll=true HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testListSSHKeyPairsOptions() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SSHKeyPairApi.class, "listSSHKeyPairs", ListSSHKeyPairsOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(ListSSHKeyPairsOptions.Builder.name("jclouds"))); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSSHKeyPairs&listAll=true&name=jclouds HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testGetSSHKeyPair() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SSHKeyPairApi.class, "getSSHKeyPair", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of("jclouds-keypair")); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSSHKeyPairs&listAll=true&name=jclouds-keypair HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, - Functions.compose(IdentityFunction.INSTANCE, IdentityFunction.INSTANCE).getClass()); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, NullOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testRegisterSSHKeyPair() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SSHKeyPairApi.class, "registerSSHKeyPair", String.class, String.class); - String publicKey = URLEncoder.encode(SshKeys.generate().get("public"), "UTF-8"); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of("jclouds-keypair", publicKey)); - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=registerSSHKeyPair&name=jclouds-keypair&publickey=" - + publicKey - + " HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - assertEquals(httpRequest.getFilters().size(), 1); - assertEquals(httpRequest.getFilters().get(0).getClass(), QuerySigner.class); - } - - - public void testDeleteSSHKeyPair() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SSHKeyPairApi.class, "deleteSSHKeyPair", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of("jclouds-keypair")); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=deleteSSHKeyPair&name=jclouds-keypair HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, ""); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); - - checkFilters(httpRequest); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiLiveTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiLiveTest.java deleted file mode 100644 index a4bb788..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiLiveTest.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * 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.cloudstack.features; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; - -import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.NoSuchElementException; - -import org.jclouds.cloudstack.domain.IngressRule; -import org.jclouds.cloudstack.domain.SecurityGroup; -import org.jclouds.cloudstack.domain.VirtualMachine; -import org.jclouds.cloudstack.domain.Zone; -import org.jclouds.cloudstack.internal.BaseCloudStackApiLiveTest; -import org.jclouds.cloudstack.options.AccountInDomainOptions; -import org.jclouds.cloudstack.options.DeployVirtualMachineOptions; -import org.jclouds.cloudstack.options.ListSecurityGroupsOptions; -import org.jclouds.util.Strings2; -import org.testng.SkipException; -import org.testng.annotations.AfterGroups; -import org.testng.annotations.Test; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.net.HostAndPort; - -/** - * Tests behavior of {@code SecurityGroupApi} - */ -@Test(groups = "live", singleThreaded = true, testName = "SecurityGroupApiLiveTest") -public class SecurityGroupApiLiveTest extends BaseCloudStackApiLiveTest { - public SecurityGroupApiLiveTest() { - prefix += "2"; - } - - private SecurityGroup group; - private boolean securityGroupsSupported; - private VirtualMachine vm; - private Zone zone; - - @Test - public void testCreateDestroySecurityGroup() { - try { - zone = Iterables.find(client.getZoneApi().listZones(), new Predicate<Zone>() { - - @Override - public boolean apply(Zone arg0) { - return arg0.isSecurityGroupsEnabled(); - } - - }); - securityGroupsSupported = true; - for (SecurityGroup securityGroup : client.getSecurityGroupApi().listSecurityGroups( - ListSecurityGroupsOptions.Builder.named(prefix))) { - for (IngressRule rule : securityGroup.getIngressRules()) - assertTrue(jobComplete.apply(client.getSecurityGroupApi().revokeIngressRule(rule.getId())), rule.toString()); - client.getSecurityGroupApi().deleteSecurityGroup(securityGroup.getId()); - } - group = client.getSecurityGroupApi().createSecurityGroup(prefix); - assertEquals(group.getName(), prefix); - checkGroup(group); - try { - client.getSecurityGroupApi().createSecurityGroup(prefix); - fail("Expected IllegalStateException"); - } catch (IllegalStateException e) { - - } - } catch (NoSuchElementException e) { - e.printStackTrace(); - } - } - - public static String getCurrentCIDR() throws IOException { - URL url = new URL("http://checkip.amazonaws.com/"); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.connect(); - return Strings2.toStringAndClose(connection.getInputStream()).trim() + "/32"; - } - - protected void skipIfSecurityGroupsNotSupported() { - if (!securityGroupsSupported) { - throw new SkipException("Test cannot run without security groups supported in a zone"); - } - } - - @Test(dependsOnMethods = "testCreateDestroySecurityGroup") - public void testCreateIngress() throws Exception { - skipIfSecurityGroupsNotSupported(); - String cidr = getCurrentCIDR(); - ImmutableSet<String> cidrs = ImmutableSet.of(cidr); - assertTrue(jobComplete.apply(client.getSecurityGroupApi().authorizeIngressICMPToCIDRs(group.getId(), 0, 8, cidrs)), group.toString()); - assertTrue(jobComplete.apply(client.getSecurityGroupApi().authorizeIngressPortsToCIDRs(group.getId(), "TCP", 22, - 22, cidrs)), group.toString()); - - AccountInDomainOptions.Builder.accountInDomain(group.getAccount(), group.getDomainId()); - - // replace with get once bug is fixed where getGroup returns only one - // ingress rule - group = Iterables.find(client.getSecurityGroupApi().listSecurityGroups(), new Predicate<SecurityGroup>() { - - @Override - public boolean apply(SecurityGroup input) { - return input.getId() == group.getId(); - } - - }); - - IngressRule ICMPPingRule = Iterables.find(group.getIngressRules(), new Predicate<IngressRule>() { - - @Override - public boolean apply(IngressRule input) { - return "icmp".equals(input.getProtocol()); - } - - }); - - assert ICMPPingRule.getId() != null : ICMPPingRule; - assert "icmp".equals(ICMPPingRule.getProtocol()) : ICMPPingRule; - assert ICMPPingRule.getStartPort() == -1 : ICMPPingRule; - assert ICMPPingRule.getEndPort() == -1 : ICMPPingRule; - assert ICMPPingRule.getICMPCode() == 0 : ICMPPingRule; - assert ICMPPingRule.getICMPType() == 8 : ICMPPingRule; - assert ICMPPingRule.getAccount() == null : ICMPPingRule; - assert ICMPPingRule.getSecurityGroupName() == null : ICMPPingRule; - assert cidr.equals(ICMPPingRule.getCIDR()) : ICMPPingRule; - - IngressRule SSHRule = Iterables.find(group.getIngressRules(), new Predicate<IngressRule>() { - - @Override - public boolean apply(IngressRule input) { - return "tcp".equals(input.getProtocol()); - } - - }); - - assert SSHRule.getId() != null : SSHRule; - assert "tcp".equals(SSHRule.getProtocol()) : SSHRule; - assert SSHRule.getStartPort() == 22 : SSHRule; - assert SSHRule.getEndPort() == 22 : SSHRule; - assert SSHRule.getICMPCode() == -1 : SSHRule; - assert SSHRule.getICMPType() == -1 : SSHRule; - assert SSHRule.getAccount() == null : SSHRule; - assert SSHRule.getSecurityGroupName() == null : SSHRule; - assert cidr.equals(SSHRule.getCIDR()) : SSHRule; - - } - - public void testListSecurityGroup() throws Exception { - skipIfSecurityGroupsNotSupported(); - for (SecurityGroup securityGroup : client.getSecurityGroupApi().listSecurityGroups()) - checkGroup(securityGroup); - } - - @Test(dependsOnMethods = "testCreateIngress") - public void testCreateVMInSecurityGroup() throws Exception { - skipIfSecurityGroupsNotSupported(); - String defaultTemplate = template != null ? template.getImageId() : null; - vm = VirtualMachineApiLiveTest.createVirtualMachineWithSecurityGroupInZone(zone.getId(), - defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), group.getId(), client, - jobComplete, virtualMachineRunning); - if (vm.getPassword() != null && !loginCredentials.getOptionalPassword().isPresent()) - loginCredentials = loginCredentials.toBuilder().password(vm.getPassword()).build(); - // ingress port 22 - checkSSH(HostAndPort.fromParts(vm.getIPAddress(), 22)); - // ingress icmp disabled as this is platform dependent and may actually - // just try tcp port 7 - // assert InetAddress.getByName(vm.getIPAddress()).isReachable(1000) : vm; - } - - protected void checkGroup(SecurityGroup group) { - // http://bugs.cloud.com/show_bug.cgi?id=8968 - if (group.getIngressRules().size() <= 1) { - assertEquals(group, client.getSecurityGroupApi().getSecurityGroup(group.getId())); - assertEquals(group, client.getSecurityGroupApi().getSecurityGroupByName(group.getName())); - } - assert group.getId() != null : group; - assert group.getName() != null : group; - assert group.getAccount() != null : group; - assert group.getDomain() != null : group; - assert group.getDomainId() != null : group; - assert group.getIngressRules() != null : group; - } - - @Test - public void testCreateVMWithoutSecurityGroupAssignsDefault() throws Exception { - skipIfSecurityGroupsNotSupported(); - String defaultTemplate = template != null ? template.getImageId() : null; - VirtualMachine newVm = VirtualMachineApiLiveTest.createVirtualMachineWithOptionsInZone(DeployVirtualMachineOptions.NONE, - zone.getId(), defaultTemplateOrPreferredInZone(defaultTemplate, client, zone.getId()), client, - jobComplete, virtualMachineRunning); - try { - VirtualMachine runningVm = client.getVirtualMachineApi().getVirtualMachine(newVm.getId()); - assertEquals(1, runningVm.getSecurityGroups().size()); - assertEquals(Iterables.getOnlyElement(runningVm.getSecurityGroups()).getName(), "default"); - } finally { - assertTrue(jobComplete.apply(client.getVirtualMachineApi().destroyVirtualMachine(newVm.getId()))); - } - } - - @AfterGroups(groups = "live") - @Override - protected void tearDownContext() { - if (vm != null) { - assertTrue(jobComplete.apply(client.getVirtualMachineApi().destroyVirtualMachine(vm.getId()))); - } - if (group != null) { - for (IngressRule rule : group.getIngressRules()) - assertTrue(jobComplete.apply(client.getSecurityGroupApi().revokeIngressRule(rule.getId())), rule.toString()); - client.getSecurityGroupApi().deleteSecurityGroup(group.getId()); - assertEquals(client.getSecurityGroupApi().getSecurityGroup(group.getId()), null); - } - super.tearDownContext(); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiTest.java deleted file mode 100644 index 1907877..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SecurityGroupApiTest.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * 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.cloudstack.features; - -import static org.jclouds.reflect.Reflection2.method; - -import java.io.IOException; - -import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404; -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.Fallbacks.VoidOnNotFoundOr404; -import org.jclouds.cloudstack.internal.BaseCloudStackApiTest; -import org.jclouds.cloudstack.options.AccountInDomainOptions; -import org.jclouds.cloudstack.options.ListSecurityGroupsOptions; -import org.jclouds.fallbacks.MapHttp4xxCodesToExceptions; -import org.jclouds.functions.IdentityFunction; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.functions.ParseFirstJsonValueNamed; -import org.jclouds.http.functions.ReleasePayloadAndReturn; -import org.jclouds.rest.internal.GeneratedHttpRequest; -import org.testng.annotations.Test; - -import com.google.common.base.Functions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Multimap; -import com.google.common.reflect.Invokable; -/** - * Tests behavior of {@code SecurityGroupApi} - */ -// NOTE:without testName, this will not call @Before* and fail w/NPE during -// surefire -@Test(groups = "unit", testName = "SecurityGroupApiTest") -public class SecurityGroupApiTest extends BaseCloudStackApiTest<SecurityGroupApi> { - - public void testListSecurityGroups() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "listSecurityGroups", ListSecurityGroupsOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.of()); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSecurityGroups&listAll=true HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testListSecurityGroupsOptions() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "listSecurityGroups", ListSecurityGroupsOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(ListSecurityGroupsOptions.Builder.virtualMachineId("4") - .domainId("5").id("6"))); - - assertRequestLineEquals( - httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSecurityGroups&listAll=true&virtualmachineid=4&domainid=5&id=6 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testGetSecurityGroup() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "getSecurityGroup", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(5)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSecurityGroups&listAll=true&id=5 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, - Functions.compose(IdentityFunction.INSTANCE, IdentityFunction.INSTANCE).getClass()); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, NullOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testGetSecurityGroupByName() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "getSecurityGroupByName", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of("some-name")); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSecurityGroups&listAll=true&securitygroupname=some-name HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, - Functions.compose(IdentityFunction.INSTANCE, IdentityFunction.INSTANCE).getClass()); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, NullOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testCreateSecurityGroup() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "createSecurityGroup", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of("goo")); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=createSecurityGroup&name=goo HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - - } - - HttpRequest authorizeSecurityGroupIngress3 = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("securitygroupid", "2") - .addQueryParam("protocol", "tcp") - .addQueryParam("startport", "22") - .addQueryParam("endport", "22") - .addQueryParam("cidrlist", "1.1.1.1/24,1.2.2.2/16").build(); - - public void testAuthorizeIngressPortsToCIDRs() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "authorizeIngressPortsToCIDRs", String.class, - String.class, int.class, int.class, Iterable.class, AccountInDomainOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(2, "tcp", 22, 22, - ImmutableSet.of("1.1.1.1/24", "1.2.2.2/16"))); - - assertRequestLineEquals(httpRequest, authorizeSecurityGroupIngress3.getRequestLine()); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - - } - - HttpRequest authorizeSecurityGroupIngress4 = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("securitygroupid", "2") - .addQueryParam("protocol", "tcp") - .addQueryParam("startport", "22") - .addQueryParam("endport", "22") - .addQueryParam("usersecuritygrouplist%5B0%5D.account", "adrian") - .addQueryParam("usersecuritygrouplist%5B0%5D.group", "group1") - .addQueryParam("usersecuritygrouplist%5B1%5D.account", "adrian") - .addQueryParam("usersecuritygrouplist%5B1%5D.group", "group2") - .addQueryParam("usersecuritygrouplist%5B2%5D.account", "bob") - .addQueryParam("usersecuritygrouplist%5B2%5D.group", "group1").build(); - - public void testAuthorizeIngressPortsToSecurityGroups() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "authorizeIngressPortsToSecurityGroups", String.class, - String.class, int.class, int.class, Multimap.class, AccountInDomainOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(2, "tcp", 22, 22, - ImmutableMultimap.of("adrian", "group1", "adrian", "group2", "bob", "group1"))); - - assertRequestLineEquals(httpRequest, authorizeSecurityGroupIngress4.getRequestLine()); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - - } - - HttpRequest authorizeSecurityGroupIngress1 = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("protocol", "ICMP") - .addQueryParam("securitygroupid", "2") - .addQueryParam("icmpcode", "22") - .addQueryParam("icmptype", "22") - .addQueryParam("cidrlist", "1.1.1.1/24,1.2.2.2/16").build(); - - public void testAuthorizeIngressICMPToCIDRs() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "authorizeIngressICMPToCIDRs", String.class , int.class, - int.class, Iterable.class, AccountInDomainOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(2, 22, 22, ImmutableSet.of("1.1.1.1/24", "1.2.2.2/16"))); - - assertRequestLineEquals(httpRequest, authorizeSecurityGroupIngress1.getRequestLine()); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - - } - - HttpRequest authorizeSecurityGroupIngress2 = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "authorizeSecurityGroupIngress") - .addQueryParam("protocol", "ICMP") - .addQueryParam("securitygroupid", "2") - .addQueryParam("icmpcode", "22") - .addQueryParam("icmptype", "22") - .addQueryParam("usersecuritygrouplist%5B0%5D.account", "adrian") - .addQueryParam("usersecuritygrouplist%5B0%5D.group", "group1") - .addQueryParam("usersecuritygrouplist%5B1%5D.account", "adrian") - .addQueryParam("usersecuritygrouplist%5B1%5D.group", "group2") - .addQueryParam("usersecuritygrouplist%5B2%5D.account", "bob") - .addQueryParam("usersecuritygrouplist%5B2%5D.group", "group1").build(); - - public void testAuthorizeIngressICMPToSecurityGroups() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "authorizeIngressICMPToSecurityGroups", String.class, - int.class, int.class, Multimap.class, AccountInDomainOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(2, 22, 22, - ImmutableMultimap.of("adrian", "group1", "adrian", "group2", "bob", "group1"))); - - assertRequestLineEquals(httpRequest, authorizeSecurityGroupIngress2.getRequestLine()); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - - } - - public void testRevokeIngressRule() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "revokeIngressRule", String.class, - AccountInDomainOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(5, - AccountInDomainOptions.Builder.accountInDomain("adrian", "1"))); - - assertRequestLineEquals( - httpRequest, - "GET http://localhost:8080/client/api?response=json&command=revokeSecurityGroupIngress&id=5&account=adrian&domainid=1 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } - - public void testDeleteSecurityGroup() throws SecurityException, NoSuchMethodException, IOException { - Invokable<?, ?> method = method(SecurityGroupApi.class, "deleteSecurityGroup", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(5)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=deleteSecurityGroup&id=5 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); - - checkFilters(httpRequest); - - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiExpectTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiExpectTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiExpectTest.java deleted file mode 100644 index a4cb945..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiExpectTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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.cloudstack.features; - -import static com.google.common.base.Charsets.UTF_8; -import static com.google.common.hash.Hashing.md5; -import static com.google.common.io.BaseEncoding.base16; -import static org.testng.Assert.assertEquals; - -import java.io.IOException; -import java.net.URI; - -import org.jclouds.cloudstack.CloudStackContext; -import org.jclouds.cloudstack.domain.Account; -import org.jclouds.cloudstack.domain.LoginResponse; -import org.jclouds.cloudstack.internal.BaseCloudStackExpectTest; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableMultimap; - -/** - * Tests behavior of {@code SessionApi} - */ -@Test(groups = "live", singleThreaded = true, testName = "SessionApiExpectTest") -public class SessionApiExpectTest extends BaseCloudStackExpectTest<SessionApi> { - - HttpRequest login = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "login") - .addQueryParam("username", "jclouds") - .addQueryParam("domain", "Partners/jclouds") - .addQueryParam("password", "30e14b3727225d833aad2206acea1275") - .addHeader("Accept", "application/json").build(); - - public void testLoginWhenResponseIs2xxIncludesJSessionId() throws IOException { - String domain = "Partners/jclouds"; - String user = "jclouds"; - String password = "jcl0ud"; - String md5password = base16().lowerCase().encode(md5().hashString(password, UTF_8).asBytes()); - - String jSessionId = "90DD65D13AEAA590ECCA312D150B9F6D"; - SessionApi client = requestSendsResponse(login, - HttpResponse.builder() - .statusCode(200) - .headers( - ImmutableMultimap.<String, String>builder() - .put("Set-Cookie", "JSESSIONID=" + jSessionId + "; Path=/client") - .build()) - .payload(payloadFromResource("/loginresponse.json")) - .build()); - - assertEquals(client.loginUserInDomainWithHashOfPassword(user, domain, md5password).toString(), - LoginResponse.builder().timeout(1800).lastName("Kiran").registered(false).username("jclouds").firstName("Vijay") - .domainId("11").accountType(Account.Type.DOMAIN_ADMIN).userId("19").sessionKey( - "uYT4/MNiglgAKiZRQkvV8QP8gn0=").jSessionId(jSessionId).accountName("jclouds").build().toString()); - } - - public void testLogout() throws IOException { - HttpRequest request = HttpRequest.builder() - .method("GET") - .endpoint( - URI.create("http://localhost:8080/client/api?response=json&command=logout&sessionkey=dummy-session-key")) - .build(); - - SessionApi client = requestSendsResponse(request, - HttpResponse.builder() - .statusCode(200) - .payload(payloadFromResource("/logoutresponse.json")) - .build()); - - client.logoutUser("dummy-session-key"); - } - - @Override - protected SessionApi clientFrom(CloudStackContext context) { - return context.getApi().getSessionApi(); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiLiveTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiLiveTest.java deleted file mode 100644 index c5f3f9e..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SessionApiLiveTest.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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.cloudstack.features; - -import static com.google.common.base.Charsets.UTF_8; -import static com.google.common.hash.Hashing.md5; -import static com.google.common.io.BaseEncoding.base16; -import static org.jclouds.cloudstack.features.GlobalAccountApiLiveTest.createTestAccount; -import static org.jclouds.cloudstack.features.GlobalUserApiLiveTest.createTestUser; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; - -import java.net.URI; - -import org.jclouds.cloudstack.domain.Account; -import org.jclouds.cloudstack.domain.ApiKeyPair; -import org.jclouds.cloudstack.domain.LoginResponse; -import org.jclouds.cloudstack.domain.User; -import org.jclouds.cloudstack.internal.BaseCloudStackApiLiveTest; -import org.jclouds.cloudstack.util.ApiKeyPairs; -import org.jclouds.rest.AuthorizationException; -import org.testng.annotations.Test; - -/** - * Tests behavior of {@code SessionApi} - */ -@Test(groups = "live", singleThreaded = true, testName = "SessionApiLiveTest") -public class SessionApiLiveTest extends BaseCloudStackApiLiveTest { - - @Test - public void testCreateContextUsingUserAndPasswordAuthentication() { - skipIfNotGlobalAdmin(); - - Account testAccount = null; - User testUser = null; - - String prefix = this.prefix + "-session"; - try { - testAccount = createTestAccount(globalAdminClient, prefix); - testUser = createTestUser(globalAdminClient, testAccount, prefix); - - String expectedUsername = prefix + "-user"; - assertEquals(testUser.getName(), expectedUsername); - - checkLoginAsTheNewUser(expectedUsername); - - ApiKeyPair expected = globalAdminClient.getUserClient().registerUserKeys(testUser.getId()); - ApiKeyPair actual = ApiKeyPairs.loginToEndpointAsUsernameInDomainWithPasswordAndReturnApiKeyPair( - URI.create(endpoint), prefix + "-user", "password", ""); - - assertEquals(actual, expected); - - } finally { - if (testUser != null) - globalAdminClient.getUserClient().deleteUser(testUser.getId()); - if (testAccount != null) - globalAdminClient.getAccountApi().deleteAccount(testAccount.getId()); - } - } - - @Test(expectedExceptions = AuthorizationException.class) - public void testTryToGetApiKeypairWithWrongCredentials() { - ApiKeyPairs.loginToEndpointAsUsernameInDomainWithPasswordAndReturnApiKeyPair( - URI.create(endpoint), "dummy-missing-user", "with-a-wrong-password", ""); - } - - private void checkLoginAsTheNewUser(String expectedUsername) { - LoginResponse response = globalAdminClient.getSessionApi().loginUserInDomainWithHashOfPassword( - expectedUsername, "", base16().lowerCase().encode(md5().hashString("password", UTF_8).asBytes())); - - assertNotNull(response); - assertNotNull(response.getSessionKey()); - assertNotNull(response.getJSessionId()); - - client.getSessionApi().logoutUser(response.getSessionKey()); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiLiveTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiLiveTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiLiveTest.java deleted file mode 100644 index 91801d6..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiLiveTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * 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.cloudstack.features; - -import static com.google.common.collect.Iterables.find; -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertFalse; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertNotSame; -import static org.testng.AssertJUnit.assertNull; -import static org.testng.AssertJUnit.assertTrue; - -import java.util.Set; - -import javax.annotation.Resource; - -import org.jclouds.cloudstack.domain.AsyncCreateResponse; -import org.jclouds.cloudstack.domain.Snapshot; -import org.jclouds.cloudstack.domain.Volume; -import org.jclouds.cloudstack.internal.BaseCloudStackApiLiveTest; -import org.jclouds.cloudstack.options.ListSnapshotsOptions; -import org.jclouds.logging.Logger; -import org.testng.annotations.Test; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; - -/** - * Tests behavior of {@code SnapshotApi} - */ -@Test(groups = "live", singleThreaded = true, testName = "SnapshotApiLiveTest") -public class SnapshotApiLiveTest extends BaseCloudStackApiLiveTest { - - @Resource Logger logger = Logger.NULL; - - public void testListSnapshots() { - Set<Snapshot> snapshots = client.getSnapshotApi().listSnapshots(); - assertNotNull(snapshots); - assertFalse(snapshots.isEmpty()); - - for (Snapshot snapshot : snapshots) { - checkSnapshot(snapshot); - } - } - - public void testListSnapshotsById() { - Iterable<String> snapshotIds = Iterables.transform(client.getSnapshotApi().listSnapshots(), new Function<Snapshot, String>() { - public String apply(Snapshot input) { - return input.getId(); - } - }); - assertNotNull(snapshotIds); - assertFalse(Iterables.isEmpty(snapshotIds)); - - for (String id : snapshotIds) { - Set<Snapshot> found = client.getSnapshotApi().listSnapshots(ListSnapshotsOptions.Builder.id(id)); - assertNotNull(found); - assertEquals(1, found.size()); - Snapshot snapshot = Iterables.getOnlyElement(found); - assertEquals(id, snapshot.getId()); - checkSnapshot(snapshot); - } - } - - public void testListSnapshotsNonexistantId() { - Set<Snapshot> found = client.getSnapshotApi().listSnapshots(ListSnapshotsOptions.Builder.id("foo")); - assertNotNull(found); - assertTrue(found.isEmpty()); - } - - public void testGetSnapshotById() { - Iterable<String> snapshotIds = Iterables.transform(client.getSnapshotApi().listSnapshots(), new Function<Snapshot, String>() { - public String apply(Snapshot input) { - return input.getId(); - } - }); - assertNotNull(snapshotIds); - assertFalse(Iterables.isEmpty(snapshotIds)); - - for (String id : snapshotIds) { - Snapshot found = client.getSnapshotApi().getSnapshot(id); - assertNotNull(found); - assertEquals(id, found.getId()); - checkSnapshot(found); - } - } - - public void testGetSnapshotNonexistantId() { - Snapshot found = client.getSnapshotApi().getSnapshot("foo"); - assertNull(found); - } - - protected Volume getPreferredVolume() { - for (Volume candidate : client.getVolumeApi().listVolumes()) { - if (candidate.getState() == Volume.State.READY) - return candidate; - } - throw new AssertionError("No suitable Volume found."); - } - - public void testCreateSnapshotFromVolume() { - final Volume volume = getPreferredVolume(); //fail fast if none - logger.info("creating snapshot from volume %s", volume); - AsyncCreateResponse job = client.getSnapshotApi().createSnapshot(volume.getId()); - assertTrue(jobComplete.apply(job.getJobId())); - Snapshot snapshot = findSnapshotWithId(job.getId()); - logger.info("created snapshot %s from volume %s", snapshot, volume); - checkSnapshot(snapshot); - client.getSnapshotApi().deleteSnapshot(snapshot.getId()); - } - - private void checkSnapshot(final Snapshot snapshot) { - assertNotNull(snapshot.getId()); - assertNotNull(snapshot.getName()); - assertNotSame(Snapshot.Type.UNRECOGNIZED, snapshot.getSnapshotType()); - } - - private Snapshot findSnapshotWithId(final String id) { - return find(client.getSnapshotApi().listSnapshots(), new Predicate<Snapshot>() { - @Override - public boolean apply(Snapshot arg0) { - return arg0.getId().equals(id); - } - }); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiTest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiTest.java deleted file mode 100644 index 897bf3c..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/features/SnapshotApiTest.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * 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.cloudstack.features; - -import static org.jclouds.reflect.Reflection2.method; - -import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404; -import org.jclouds.Fallbacks.NullOnNotFoundOr404; -import org.jclouds.Fallbacks.VoidOnNotFoundOr404; -import org.jclouds.cloudstack.domain.Snapshot; -import org.jclouds.cloudstack.domain.SnapshotPolicySchedule; -import org.jclouds.cloudstack.internal.BaseCloudStackApiTest; -import org.jclouds.cloudstack.options.CreateSnapshotOptions; -import org.jclouds.cloudstack.options.ListSnapshotPoliciesOptions; -import org.jclouds.cloudstack.options.ListSnapshotsOptions; -import org.jclouds.cloudstack.util.SnapshotPolicySchedules; -import org.jclouds.fallbacks.MapHttp4xxCodesToExceptions; -import org.jclouds.functions.IdentityFunction; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.functions.ParseFirstJsonValueNamed; -import org.jclouds.http.functions.ReleasePayloadAndReturn; -import org.jclouds.http.functions.UnwrapOnlyJsonValue; -import org.jclouds.rest.internal.GeneratedHttpRequest; -import org.testng.annotations.Test; - -import com.google.common.base.Functions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.reflect.Invokable; -/** - * Tests the behaviour of SnapshotApi. - * - * @see SnapshotApi - */ -// NOTE:without testName, this will not call @Before* and fail w/NPE during -// surefire -@Test(groups = "unit", testName = "SnapshotApiTest") -public class SnapshotApiTest extends BaseCloudStackApiTest<SnapshotApi> { - - public void testCreateSnapshot() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "createSnapshot", String.class, CreateSnapshotOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(5)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=createSnapshot&volumeid=5 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, UnwrapOnlyJsonValue.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - } - - public void testCreateSnapshotOptions() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "createSnapshot", String.class, CreateSnapshotOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(5, CreateSnapshotOptions.Builder.accountInDomain("acc", "7").policyId("9"))); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=createSnapshot&volumeid=5&account=acc&domainid=7&policyid=9 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, UnwrapOnlyJsonValue.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - } - - public void testListSnapshots() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "listSnapshots", ListSnapshotsOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.of()); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSnapshots&listAll=true HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - } - - public void testGetSnapshot() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "getSnapshot", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(5)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSnapshots&listAll=true&id=5 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, - Functions.compose(IdentityFunction.INSTANCE, IdentityFunction.INSTANCE).getClass()); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, NullOnNotFoundOr404.class); - - checkFilters(httpRequest); - } - - public void testListSnapshotsOptions() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "listSnapshots", ListSnapshotsOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(ListSnapshotsOptions.Builder.accountInDomain("acc", "7").id("5").interval(Snapshot.Interval.MONTHLY).isRecursive(true).keyword("fred").name("fred's snapshot").snapshotType(Snapshot.Type.RECURRING).volumeId("11"))); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSnapshots&listAll=true&account=acc&domainid=7&id=5&intervaltype=MONTHLY&isrecursive=true&keyword=fred&name=fred%27s%20snapshot&snapshottype=RECURRING&volumeid=11 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ParseFirstJsonValueNamed.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - } - - public void testDeleteSnapshot() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "deleteSnapshot", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(14)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=deleteSnapshot&id=14 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); - - checkFilters(httpRequest); - } - - HttpRequest extractIso = HttpRequest.builder().method("GET") - .endpoint("http://localhost:8080/client/api") - .addQueryParam("response", "json") - .addQueryParam("command", "createSnapshotPolicy") - .addQueryParam("maxsnaps", "10") - .addQueryParam("timezone", "UTC") - .addQueryParam("volumeid", "12") - .addQueryParam("intervaltype", "MONTHLY") - .addQueryParam("schedule", "07%3A06%3A05").build(); - - public void testCreateSnapshotPolicy() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "createSnapshotPolicy", SnapshotPolicySchedule.class, String.class, String.class, String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(SnapshotPolicySchedules.monthly(5, 6, 7), 10, "UTC", 12)); - - assertRequestLineEquals(httpRequest, extractIso.getRequestLine()); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, UnwrapOnlyJsonValue.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, MapHttp4xxCodesToExceptions.class); - - checkFilters(httpRequest); - } - - public void testDeleteSnapshotPolicy() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "deleteSnapshotPolicy", String.class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(7)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=deleteSnapshotPolicies&id=7 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); - - checkFilters(httpRequest); - } - - public void testDeleteSnapshotPolicies() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "deleteSnapshotPolicies", Iterable.class); - Iterable<String> ids = ImmutableSet.of("3", "5", "7"); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(ids)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=deleteSnapshotPolicies&ids=3,5,7 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, ReleasePayloadAndReturn.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, VoidOnNotFoundOr404.class); - - checkFilters(httpRequest); - } - - public void testListSnapshotPolicies() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "listSnapshotPolicies", String.class, ListSnapshotPoliciesOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(10)); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSnapshotPolicies&listAll=true&volumeid=10 HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, UnwrapOnlyJsonValue.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - } - - public void testListSnapshotPoliciesOptions() throws NoSuchMethodException { - Invokable<?, ?> method = method(SnapshotApi.class, "listSnapshotPolicies", String.class, ListSnapshotPoliciesOptions[].class); - GeneratedHttpRequest httpRequest = processor.createRequest(method, ImmutableList.<Object> of(10, ListSnapshotPoliciesOptions.Builder.accountInDomain("fred", "4").keyword("bob"))); - - assertRequestLineEquals(httpRequest, - "GET http://localhost:8080/client/api?response=json&command=listSnapshotPolicies&listAll=true&volumeid=10&account=fred&domainid=4&keyword=bob HTTP/1.1"); - assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n"); - assertPayloadEquals(httpRequest, null, null, false); - - assertResponseParserClassEquals(method, httpRequest, UnwrapOnlyJsonValue.class); - assertSaxResponseParserClassEquals(method, null); - assertFallbackClassEquals(method, EmptySetOnNotFoundOr404.class); - - checkFilters(httpRequest); - } -}
