You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/08/20 11:35:51 UTC

[05/51] [abbrv] [partial] stratos git commit: Revert "Upgrading to jclouds 1.9.1"

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/features/VmApiTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/features/VmApiTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/features/VmApiTest.java
new file mode 100644
index 0000000..b8e786c
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/features/VmApiTest.java
@@ -0,0 +1,318 @@
+/*
+ * 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.vcloud.features;
+
+import static org.jclouds.reflect.Reflection2.method;
+
+import java.io.IOException;
+import java.net.URI;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.http.functions.ParseSax;
+import org.jclouds.http.functions.ReleasePayloadAndReturn;
+import org.jclouds.http.functions.ReturnInputStream;
+import org.jclouds.rest.internal.GeneratedHttpRequest;
+import org.jclouds.util.Strings2;
+import org.jclouds.vcloud.domain.GuestCustomizationSection;
+import org.jclouds.vcloud.internal.BaseVCloudApiTest;
+import org.jclouds.vcloud.utils.TestUtils;
+import org.jclouds.vcloud.xml.TaskHandler;
+import org.jclouds.vcloud.xml.VmHandler;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.reflect.Invokable;
+/**
+ * Tests behavior of {@code VmApi}
+ */
+// NOTE:without testName, this will not call @Before* and fail w/NPE during
+// surefire
+@Test(groups = "unit", testName = "VmApiTest")
+public class VmApiTest extends BaseVCloudApiTest<VmApi> {
+
+   public void testGetThumbnailOfVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "getScreenThumbnailForVm", URI.class);
+      GeneratedHttpRequest request = processor
+               .createRequest(method, ImmutableList.<Object> of(URI.create("http://vcloud.example.com/api/v1.0/vApp/vm-12")));
+
+      assertRequestLineEquals(request, "GET http://vcloud.example.com/api/v1.0/vApp/vm-12/screen HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: image/png\n");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ReturnInputStream.class);
+      assertSaxResponseParserClassEquals(method, null);
+      assertFallbackClassEquals(method, NullOnNotFoundOr404.class);
+
+      checkFilters(request);
+   }
+
+   @Test(dataProvider = "ignoreOnWindows", description = "see http://code.google.com/p/jclouds/issues/detail?id=402")
+   public void testUpdateGuestConfiguration() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "updateGuestCustomizationOfVm", GuestCustomizationSection.class,
+               URI.class);
+      GuestCustomizationSection guest = new GuestCustomizationSection(URI
+               .create("http://vcloud.example.com/api/v1.0/vApp/vm-12/guestCustomizationSection"));
+      guest.setCustomizationScript("cat > /tmp/foo.txt<<EOF\nI love candy\nEOF");
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(guest, URI
+               .create("http://vcloud.example.com/api/v1.0/vApp/vm-12")));
+
+      assertRequestLineEquals(request,
+               "PUT http://vcloud.example.com/api/v1.0/vApp/vm-12/guestCustomizationSection HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, Strings2.toStringAndClose(getClass().getResourceAsStream(
+               "/guestCustomizationSection.xml")), "application/vnd.vmware.vcloud.guestCustomizationSection+xml", false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testUpdateCPUCountOfVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "updateCPUCountOfVm", int.class, URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(2, URI
+               .create("http://vcloud.example.com/api/v1.0/vApp/vm-12")));
+
+      assertRequestLineEquals(request,
+               "PUT http://vcloud.example.com/api/v1.0/vApp/vm-12/virtualHardwareSection/cpu HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, Strings2.toStringAndClose(getClass().getResourceAsStream("/cpuItem.xml")),
+               "application/vnd.vmware.vcloud.rasdItem+xml", false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testUpdateMemoryMBOfVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "updateMemoryMBOfVm", int.class, URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(512, URI
+               .create("http://vcloud.example.com/api/v1.0/vApp/vm-12")));
+
+      assertRequestLineEquals(request,
+               "PUT http://vcloud.example.com/api/v1.0/vApp/vm-12/virtualHardwareSection/memory HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, Strings2.toStringAndClose(getClass().getResourceAsStream("/memoryItem.xml")),
+               "application/vnd.vmware.vcloud.rasdItem+xml", false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testDeployVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "deployVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request, "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/action/deploy HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, "<DeployVAppParams xmlns=\"http://www.vmware.com/vcloud/v1\"/>",
+               "application/vnd.vmware.vcloud.deployVAppParams+xml", false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testDeployAndPowerOnVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "deployAndPowerOnVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request, "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/action/deploy HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, "<DeployVAppParams xmlns=\"http://www.vmware.com/vcloud/v1\" powerOn=\"true\"/>",
+               "application/vnd.vmware.vcloud.deployVAppParams+xml", false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testGetVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "getVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vm/1")));
+
+      assertRequestLineEquals(request, "GET https://vcenterprise.bluelock.com/api/v1.0/vm/1 HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.vm+xml\n");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, VmHandler.class);
+      assertFallbackClassEquals(method, NullOnNotFoundOr404.class);
+
+      checkFilters(request);
+   }
+
+   public void testRebootVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "rebootVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/power/action/reboot HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class);
+      assertSaxResponseParserClassEquals(method, null);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testUndeployVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "undeployVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/action/undeploy HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, "<UndeployVAppParams xmlns=\"http://www.vmware.com/vcloud/v1\"/>",
+               "application/vnd.vmware.vcloud.undeployVAppParams+xml", false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testUndeployAndSaveStateOfVmSaveState() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "undeployAndSaveStateOfVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/action/undeploy HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request,
+               "<UndeployVAppParams xmlns=\"http://www.vmware.com/vcloud/v1\" saveState=\"true\"/>",
+               "application/vnd.vmware.vcloud.undeployVAppParams+xml", false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testPowerOnVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "powerOnVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/power/action/powerOn HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testPowerOffVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "powerOffVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/power/action/powerOff HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testResetVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "resetVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/power/action/reset HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testSuspendVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "suspendVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/power/action/suspend HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "Accept: application/vnd.vmware.vcloud.task+xml\n");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ParseSax.class);
+      assertSaxResponseParserClassEquals(method, TaskHandler.class);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   public void testShutdownVm() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VmApi.class, "shutdownVm", URI.class);
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.<Object> of(URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/1")));
+
+      assertRequestLineEquals(request,
+               "POST https://vcenterprise.bluelock.com/api/v1.0/vApp/1/power/action/shutdown HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, "");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ReleasePayloadAndReturn.class);
+      assertSaxResponseParserClassEquals(method, null);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   @DataProvider
+   public Object[][] ignoreOnWindows() {
+      return TestUtils.isWindowsOs() ? TestUtils.NO_INVOCATIONS
+                                     : TestUtils.SINGLE_NO_ARG_INVOCATION;
+   }
+   
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java
new file mode 100644
index 0000000..40d1fd5
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java
@@ -0,0 +1,51 @@
+/*
+ * 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.vcloud.filters;
+
+import static org.testng.Assert.assertEquals;
+
+import org.jclouds.http.HttpRequest;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Supplier;
+import com.google.common.net.HttpHeaders;
+
+@Test(testName = "AddVCloudAuthorizationAndCookieToRequestTest")
+public class AddVCloudAuthorizationAndCookieToRequestTest {
+
+   private AddVCloudAuthorizationAndCookieToRequest filter;
+
+   @BeforeTest
+   void setUp() {
+       filter = new AddVCloudAuthorizationAndCookieToRequest(new Supplier<String>() {
+           public String get() {
+               return "token";
+           }
+       }, "1.0");
+   }
+
+   @Test
+   public void testApply() {
+      HttpRequest request = HttpRequest.builder().method("GET").endpoint("http://localhost").build();
+      request = filter.filter(request);
+      assertEquals(request.getHeaders().size(), 3);
+      assertEquals(request.getFirstHeaderOrNull(HttpHeaders.COOKIE), "vcloud-token=token");
+      assertEquals(request.getFirstHeaderOrNull("x-vcloud-authorization"), "token");
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/functions/ParseLoginResponseFromHeadersTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/functions/ParseLoginResponseFromHeadersTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/functions/ParseLoginResponseFromHeadersTest.java
new file mode 100644
index 0000000..66a4f4a
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/functions/ParseLoginResponseFromHeadersTest.java
@@ -0,0 +1,145 @@
+/*
+ * 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.vcloud.functions;
+
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+
+import org.jclouds.http.HttpResponse;
+import org.jclouds.http.HttpResponseException;
+import org.jclouds.http.functions.BaseHandlerTest;
+import org.jclouds.vcloud.VCloudMediaType;
+import org.jclouds.vcloud.domain.VCloudSession;
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+/**
+ * Tests behavior of {@code ParseLoginResponseFromHeaders}
+ */
+// NOTE:without testName, this will not call @Before* and fail w/NPE during
+// surefire
+@Test(groups = "unit", testName = "ParseLoginResponseFromHeadersTest")
+public class ParseLoginResponseFromHeadersTest extends BaseHandlerTest {
+
+   private ParseLoginResponseFromHeaders parser;
+
+   @BeforeTest
+   void setUp() {
+      parser = injector.getInstance(ParseLoginResponseFromHeaders.class);
+   }
+
+   @Test
+   public void testApply() {
+      HttpResponse response = HttpResponse.builder().statusCode(200).message("OK")
+                                          .payload(getClass().getResourceAsStream("/orglist.xml"))
+                                          .addHeader("x-vcloud-authorization", "vcloud-token=9er4d061-4bff-48fa-84b1-5da7166764d2; path=/").build();
+      response.getPayload().getContentMetadata().setContentType("Content-Type: application/xml; charset=utf-8");
+      response.getPayload().getContentMetadata().setContentLength(307l);
+
+      VCloudSession reply = parser.apply(response);
+      assertEquals(reply.getVCloudToken(), "9er4d061-4bff-48fa-84b1-5da7166764d2");
+      assertEquals(reply.getOrgs(), ImmutableMap.of("adrian@jclouds.org", new ReferenceTypeImpl("adrian@jclouds.org",
+               VCloudMediaType.ORG_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/org/48"))));
+
+   }
+
+   @Test
+   public void testApplyBlueLock() {
+      HttpResponse response = HttpResponse.builder().statusCode(200).message("OK")
+                                          .payload(getClass().getResourceAsStream("/orglist.xml"))
+                                          .addHeader("x-vcloud-authorization", "MUKOJ2HoAfoMmLnHRp4esNb2MtWscCLLhVysnsIsCG0=").build();
+      response.getPayload().getContentMetadata().setContentType("Content-Type: application/xml; charset=utf-8");
+      response.getPayload().getContentMetadata().setContentLength(307l);
+
+      VCloudSession reply = parser.apply(response);
+      assertEquals(reply.getVCloudToken(), "MUKOJ2HoAfoMmLnHRp4esNb2MtWscCLLhVysnsIsCG0=");
+      assertEquals(reply.getOrgs(), ImmutableMap.of("adrian@jclouds.org", new ReferenceTypeImpl("adrian@jclouds.org",
+               VCloudMediaType.ORG_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/org/48"))));
+
+   }
+
+   @Test
+   public void testApplyTerremark() {
+      HttpResponse response = HttpResponse.builder().statusCode(200).message("OK")
+                                          .payload(getClass().getResourceAsStream("/orglist.xml"))
+                                          .addHeader("Set-Cookie", "vcloud-token=37ce2715-9aba-4f48-8e45-2db8a8da702d; path=/").build();
+      response.getPayload().getContentMetadata().setContentType("Content-Type: application/xml; charset=utf-8");
+      response.getPayload().getContentMetadata().setContentLength(307l);
+
+      VCloudSession reply = parser.apply(response);
+      assertEquals(reply.getVCloudToken(), "37ce2715-9aba-4f48-8e45-2db8a8da702d");
+      assertEquals(reply.getOrgs(), ImmutableMap.of("adrian@jclouds.org", new ReferenceTypeImpl("adrian@jclouds.org",
+               VCloudMediaType.ORG_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/org/48"))));
+
+   }
+
+   @Test
+   public void testApplyTerremarkMultipleCookies() {
+      HttpResponse response = HttpResponse.builder().statusCode(200).message("OK")
+                                          .payload(getClass().getResourceAsStream("/orglist.xml"))
+                                          .addHeader("Set-Cookie", "NSC_ESUO_21654_72.46.239.132_443=fooo;expires=Thu, 02-Jun-2011 17:19:26 GMT;path=/;secure;httponly")
+                                          .addHeader("Set-Cookie", "vcloud-token=37ce2715-9aba-4f48-8e45-2db8a8da702d; path=/").build();
+      response.getPayload().getContentMetadata().setContentType("Content-Type: application/xml; charset=utf-8");
+      response.getPayload().getContentMetadata().setContentLength(307l);
+
+      VCloudSession reply = parser.apply(response);
+      assertEquals(reply.getVCloudToken(), "37ce2715-9aba-4f48-8e45-2db8a8da702d");
+      assertEquals(reply.getOrgs(), ImmutableMap.of("adrian@jclouds.org", new ReferenceTypeImpl("adrian@jclouds.org",
+               VCloudMediaType.ORG_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/org/48"))));
+
+   }
+
+   @Test(expectedExceptions = HttpResponseException.class)
+   public void testUnmatchedCookieThrowsHttpResponseException() {
+      HttpResponse response = HttpResponse.builder().statusCode(200).message("OK")
+                                          .payload(getClass().getResourceAsStream("/orglist.xml"))
+                                          .addHeader("Set-Cookie", "NSC_ESUO_21654_72.46.239.132_443=fooo;expires=Thu, 02-Jun-2011 17:19:26 GMT;path=/;secure;httponly").build();
+      response.getPayload().getContentMetadata().setContentType("Content-Type: application/xml; charset=utf-8");
+      response.getPayload().getContentMetadata().setContentLength(307l);
+
+      parser.apply(response);
+   }
+
+   @Test(expectedExceptions = HttpResponseException.class)
+   public void testNoThrowsHttpResponseException() {
+      HttpResponse response = HttpResponse.builder().statusCode(200).message("OK")
+                                          .payload(getClass().getResourceAsStream("/orglist.xml")).build();
+      response.getPayload().getContentMetadata().setContentType("Content-Type: application/xml; charset=utf-8");
+      response.getPayload().getContentMetadata().setContentLength(307l);
+
+      parser.apply(response);
+   }
+
+   @Test
+   public void testApplyVirtacore() {
+      HttpResponse response = HttpResponse.builder().statusCode(200).message("OK")
+                                          .payload(getClass().getResourceAsStream("/orglist.xml"))
+                                          .addHeader("x-vcloud-authorization", "vcloud-token=IPy0w7UGD4lwtdWAK/ZVzfuLK+dztxGRqsOhWqV0i48=").build();
+      response.getPayload().getContentMetadata().setContentType("Content-Type: application/xml; charset=utf-8");
+      response.getPayload().getContentMetadata().setContentLength(307l);
+
+      VCloudSession reply = parser.apply(response);
+      assertEquals(reply.getVCloudToken(), "IPy0w7UGD4lwtdWAK/ZVzfuLK+dztxGRqsOhWqV0i48=");
+      assertEquals(reply.getOrgs(), ImmutableMap.of("adrian@jclouds.org", new ReferenceTypeImpl("adrian@jclouds.org",
+               VCloudMediaType.ORG_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/org/48"))));
+
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/handlers/ParseVCloudErrorFromHttpResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/handlers/ParseVCloudErrorFromHttpResponseTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/handlers/ParseVCloudErrorFromHttpResponseTest.java
new file mode 100644
index 0000000..9466191
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/handlers/ParseVCloudErrorFromHttpResponseTest.java
@@ -0,0 +1,92 @@
+/*
+ * 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.vcloud.handlers;
+
+import java.net.URI;
+
+import org.jclouds.http.BaseHttpErrorHandlerTest;
+import org.jclouds.http.HttpErrorHandler;
+import org.jclouds.http.HttpResponseException;
+import org.jclouds.rest.AuthorizationException;
+import org.jclouds.rest.ResourceNotFoundException;
+import org.jclouds.vcloud.VCloudMediaType;
+import org.testng.annotations.Test;
+
+@Test(groups = { "unit" })
+public class ParseVCloudErrorFromHttpResponseTest extends BaseHttpErrorHandlerTest {
+
+   @Test
+   public void testGet404SetsResourceNotFoundException() {
+      assertCodeMakes("GET", URI.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32"), 404,
+               "", "", ResourceNotFoundException.class);
+   }
+
+   @Test
+   public void testGet403NoAcessToEntitySetsResourceNotFoundException() {
+      assertCodeMakes(
+               "GET",
+               URI.create("https://zone01.bluelock.com/api/v1.0/vApp/vapp-1535788985"),
+               403,
+               "HTTP/1.1 403",
+               VCloudMediaType.ERROR_XML,
+               "<Error xmlns=\"http://www.vmware.com/vcloud/v1\" minorErrorCode=\"ACCESS_TO_RESOURCE_IS_FORBIDDEN\" message=\"No access to entity &quot;(com.vmware.vcloud.entity.vapp:1535788985)&quot;.\" majorErrorCode=\"403\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.vmware.com/vcloud/v1 http://vcenterprise.bluelock.com/api/v1.0/schema/master.xsd\"></Error>\n",
+               ResourceNotFoundException.class);
+   }
+
+   @Test
+   public void testGet403NoAcessToEntitySetsResourceNotFoundExceptionOnAPI1_0AgainstVCD1_5() {
+      assertCodeMakes(
+               "GET",
+               URI.create("https://mycloud.greenhousedata.com/api/v1.0/vApp/vapp-d3a1f2cd-d07b-4ddc-bf7b-fb7468b4d95a"),
+               403,
+               "HTTP/1.1 403",
+               // NOTE VCD 1.5 appends the api version to the media type
+               VCloudMediaType.ERROR_XML + ";1.0",
+               "<Error xmlns=\"http://www.vmware.com/vcloud/v1\" minorErrorCode=\"ACCESS_TO_RESOURCE_IS_FORBIDDEN\" message=\"No access to entity &quot;(com.vmware.vcloud.entity.vapp:d3a1f2cd-d07b-4ddc-bf7b-fb7468b4d95a)&quot;.\" majorErrorCode=\"403\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.vmware.com/vcloud/v1 http://mycloud.greenhousedata.com/api/v1.0/schema/master.xsd\"></Error>",
+               ResourceNotFoundException.class);
+   }
+
+   @Test
+   public void testDelete404SetsHttpResponseException() {
+      assertCodeMakes("DELETE", URI.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32"),
+               404, "", "", HttpResponseException.class);
+   }
+
+   @Test
+   public void testPOSTNotRunningSetsIllegalStateException() {
+      assertCodeMakes(
+               "POST",
+               URI.create("https://vcenterprise.bluelock.com/api/v1.0/vApp/vapp-138351019/action/undeploy"),
+               400,
+               "HTTP/1.1 400 Bad Request",
+               VCloudMediaType.ERROR_XML,
+               "<Error xmlns=\"http://www.vmware.com/vcloud/v1\" minorErrorCode=\"BAD_REQUEST\" message=\"The requested operation could not be executed since vApp &quot;adriancolecap-78c&quot; is not running&quot;\" majorErrorCode=\"400\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.vmware.com/vcloud/v1 http://vcenterprise.bluelock.com/api/v1.0/schema/master.xsd\"></Error>\n",
+               IllegalStateException.class);
+   }
+
+   @Test
+   public void test401SetsAuthorizationException() {
+      assertCodeMakes("GET", URI.create("https://services.vcloudexpress.terremark.com/api/v0.8a-ext1.6/vdc/32"), 401,
+               "", "", AuthorizationException.class);
+   }
+
+   @Override
+   protected Class<? extends HttpErrorHandler> getHandlerClass() {
+      return ParseVCloudErrorFromHttpResponse.class;
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BasePayloadTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BasePayloadTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BasePayloadTest.java
new file mode 100644
index 0000000..4ffe512
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BasePayloadTest.java
@@ -0,0 +1,51 @@
+/*
+ * 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.vcloud.internal;
+
+import static org.jclouds.reflect.Reflection2.method;
+
+import java.net.URI;
+import java.util.List;
+
+import org.jclouds.reflect.Invocation;
+import org.jclouds.rest.internal.GeneratedHttpRequest;
+import org.jclouds.vcloud.VCloudApiMetadata;
+import org.nnsoft.guice.rocoto.Rocoto;
+import org.nnsoft.guice.rocoto.configuration.ConfigurationModule;
+
+import com.google.common.base.Throwables;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+public class BasePayloadTest {
+
+   protected Injector injector = Guice.createInjector(Rocoto.expandVariables(new ConfigurationModule() {
+      protected void bindConfigurations() {
+         bindProperties(new VCloudApiMetadata().getDefaultProperties());
+      }
+   }));
+
+   protected GeneratedHttpRequest requestForArgs(List<Object> args) {
+      try {
+         Invocation invocation = Invocation.create(method(String.class, "toString"), args);
+         return GeneratedHttpRequest.builder().method("POST").endpoint(URI.create("http://localhost/key"))
+               .invocation(invocation).build();
+      } catch (SecurityException e) {
+         throw Throwables.propagate(e);
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiLiveTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiLiveTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiLiveTest.java
new file mode 100644
index 0000000..a4db473
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiLiveTest.java
@@ -0,0 +1,55 @@
+/*
+ * 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.vcloud.internal;
+
+import org.jclouds.compute.ComputeService;
+import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
+import org.jclouds.sshj.config.SshjSshClientModule;
+import org.jclouds.vcloud.VCloudApi;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.inject.Module;
+
+@Test(groups = "live", enabled = true, singleThreaded = true)
+public abstract class BaseVCloudApiLiveTest extends BaseComputeServiceContextLiveTest {
+
+   // username is too long for name constraints
+   protected String prefix = "vcd";
+
+   protected ComputeService client;
+
+   public BaseVCloudApiLiveTest() {
+      provider = "vcloud";
+   }
+
+   protected VCloudApi getVCloudApi() {
+      return view.unwrapApi(VCloudApi.class);
+   }
+
+   @Override
+   @BeforeClass(groups = { "integration", "live" })
+   public void setupContext() {
+      super.setupContext();
+      client = view.getComputeService();
+   }
+
+   @Override
+   protected Module getSshModule() {
+      return new SshjSshClientModule();
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiTest.java
new file mode 100644
index 0000000..feeec7c
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/BaseVCloudApiTest.java
@@ -0,0 +1,270 @@
+/*
+ * 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.vcloud.internal;
+
+import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.jclouds.http.HttpRequest;
+import org.jclouds.ovf.Envelope;
+import org.jclouds.ovf.xml.EnvelopeHandlerTest;
+import org.jclouds.providers.AnonymousProviderMetadata;
+import org.jclouds.providers.ProviderMetadata;
+import org.jclouds.rest.AuthorizationException;
+import org.jclouds.rest.ConfiguresHttpApi;
+import org.jclouds.rest.internal.BaseRestAnnotationProcessingTest;
+import org.jclouds.vcloud.VCloudApiMetadata;
+import org.jclouds.vcloud.VCloudMediaType;
+import org.jclouds.vcloud.VCloudVersionsApi;
+import org.jclouds.vcloud.config.VCloudHttpApiModule;
+import org.jclouds.vcloud.domain.AllocationModel;
+import org.jclouds.vcloud.domain.CatalogItem;
+import org.jclouds.vcloud.domain.Org;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.VAppTemplate;
+import org.jclouds.vcloud.domain.VCloudSession;
+import org.jclouds.vcloud.domain.VDC;
+import org.jclouds.vcloud.domain.VDCStatus;
+import org.jclouds.vcloud.domain.internal.CatalogImpl;
+import org.jclouds.vcloud.domain.internal.CatalogItemImpl;
+import org.jclouds.vcloud.domain.internal.OrgImpl;
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+import org.jclouds.vcloud.domain.internal.VDCImpl;
+import org.jclouds.vcloud.filters.AddVCloudAuthorizationAndCookieToRequest;
+import org.jclouds.vcloud.xml.VAppTemplateHandlerTest;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Functions;
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
+import com.google.common.cache.CacheLoader;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.TypeLiteral;
+
+/**
+ * Tests behavior of {@code VCloudApi}
+ */
+// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire
+@Test(groups = "unit", testName = "BaseVCloudApiTest")
+public abstract class BaseVCloudApiTest<T> extends BaseRestAnnotationProcessingTest<T> {
+
+   @Override
+   protected void checkFilters(HttpRequest request) {
+      assertEquals(request.getFilters().size(), 1);
+      assertEquals(request.getFilters().get(0).getClass(), AddVCloudAuthorizationAndCookieToRequest.class);
+   }
+
+   @Override
+   protected Module createModule() {
+      return new VCloudHttpApiModuleExtension();
+   }
+   
+   @Override
+   protected ProviderMetadata createProviderMetadata() {
+      return  AnonymousProviderMetadata.forApiWithEndpoint(new VCloudApiMetadata(), "https://vcenterprise.bluelock.com/api/v1.0");
+   }
+   
+   protected static final ReferenceTypeImpl ORG_REF = new ReferenceTypeImpl("org", VCloudMediaType.ORG_XML,
+         URI.create("https://vcenterprise.bluelock.com/api/v1.0/org/1"));
+
+   protected static final ReferenceTypeImpl CATALOG_REF = new ReferenceTypeImpl("catalog", VCloudMediaType.CATALOG_XML,
+         URI.create("https://vcenterprise.bluelock.com/api/v1.0/catalog/1"));
+
+   protected static final ReferenceTypeImpl TASKSLIST_REF = new ReferenceTypeImpl("tasksList",
+         VCloudMediaType.TASKSLIST_XML, URI.create("https://vcenterprise.bluelock.com/api/v1.0/tasksList/1"));
+
+   protected static final ReferenceTypeImpl VDC_REF = new ReferenceTypeImpl("vdc", VCloudMediaType.VDC_XML,
+         URI.create("https://vcenterprise.bluelock.com/api/v1.0/vdc/1"));
+
+   protected static final ReferenceTypeImpl NETWORK_REF = new ReferenceTypeImpl("network", VCloudMediaType.NETWORK_XML,
+         URI.create("https://vcloud.safesecureweb.com/network/1990"));
+
+   protected static final Org ORG = new OrgImpl(ORG_REF.getName(), ORG_REF.getType(), ORG_REF.getHref(), "org", null,
+         ImmutableMap.<String, ReferenceType> of(CATALOG_REF.getName(), CATALOG_REF),
+         ImmutableMap.<String, ReferenceType> of(VDC_REF.getName(), VDC_REF), ImmutableMap.<String, ReferenceType> of(
+               NETWORK_REF.getName(), NETWORK_REF), TASKSLIST_REF, ImmutableList.<Task> of());
+
+   protected static final VDC VDC = new VDCImpl(VDC_REF.getName(), VDC_REF.getType(), VDC_REF.getHref(),
+         VDCStatus.READY, null, "description", ImmutableSet.<Task> of(), AllocationModel.ALLOCATION_POOL, null, null,
+         null, ImmutableMap.<String, ReferenceType> of(
+               "vapp",
+               new ReferenceTypeImpl("vapp", "application/vnd.vmware.vcloud.vApp+xml", URI
+                     .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/188849-1")),
+               "network",
+               new ReferenceTypeImpl("network", "application/vnd.vmware.vcloud.vAppTemplate+xml", URI
+                     .create("https://vcenterprise.bluelock.com/api/v1.0/vdcItem/2"))),
+         ImmutableMap.<String, ReferenceType> of(NETWORK_REF.getName(), NETWORK_REF), 0, 0, 0, false);
+
+   @ConfiguresHttpApi
+   public static class VCloudHttpApiModuleExtension extends VCloudHttpApiModule {
+
+      @Override
+      protected Supplier<URI> provideAuthenticationURI(VCloudVersionsApi versionService, String version) {
+         return Suppliers.ofInstance(URI.create("https://vcenterprise.bluelock.com/api/v1.0/login"));
+      }
+
+      @Override
+      protected Supplier<Org> provideOrg(Supplier<Map<String, Org>> orgSupplier,
+            @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg) {
+         return Suppliers.ofInstance(ORG);
+      }
+
+      @Override
+      protected void installDefaultVCloudEndpointsModule() {
+         install(new AbstractModule() {
+
+            @Override
+            protected void configure() {
+               TypeLiteral<Supplier<ReferenceType>> refTypeSupplier = new TypeLiteral<Supplier<ReferenceType>>() {
+               };
+               bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.Org.class).toInstance(
+                     Suppliers.<ReferenceType> ofInstance(ORG_REF));
+               bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.Catalog.class).toInstance(
+                     Suppliers.<ReferenceType> ofInstance(CATALOG_REF));
+               bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.TasksList.class).toInstance(
+                     Suppliers.<ReferenceType> ofInstance(TASKSLIST_REF));
+               bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.VDC.class).toInstance(
+                     Suppliers.<ReferenceType> ofInstance(VDC_REF));
+               bind(refTypeSupplier).annotatedWith(org.jclouds.vcloud.endpoints.Network.class).toInstance(
+                     Suppliers.<ReferenceType> ofInstance(NETWORK_REF));
+            }
+
+         });
+      }
+
+      @Override
+      protected Supplier<VCloudSession> provideVCloudTokenCache(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
+            AtomicReference<AuthorizationException> authException, final VCloudLoginApi login) {
+         return Suppliers.<VCloudSession> ofInstance(new VCloudSession() {
+
+            @Override
+            public Map<String, ReferenceType> getOrgs() {
+               return ImmutableMap.<String, ReferenceType> of(ORG_REF.getName(), ORG_REF);
+            }
+
+            @Override
+            public String getVCloudToken() {
+               return "token";
+            }
+
+         });
+
+      }
+
+      @Override
+      protected void configure() {
+         super.configure();
+         bind(OrgMapSupplier.class).to(TestOrgMapSupplier.class);
+         bind(OrgCatalogSupplier.class).to(TestOrgCatalogSupplier.class);
+         bind(OrgCatalogItemSupplier.class).to(TestOrgCatalogItemSupplier.class);
+      }
+      
+      @SuppressWarnings("unchecked")
+      @Override
+      protected void bindCacheLoaders() {
+         bind(new TypeLiteral<CacheLoader<URI, VAppTemplate>>() {
+         }).toInstance(CacheLoader.class.cast(CacheLoader.from(Functions.constant(VAppTemplateHandlerTest.parseTemplate()))));
+
+         bind(new TypeLiteral<CacheLoader<URI, Envelope>>() {
+         }).toInstance(CacheLoader.class.cast(CacheLoader.from(Functions.constant(EnvelopeHandlerTest.parseEnvelope()))));
+      }
+
+      @Override
+      protected Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> provideOrgVDCSupplierCache(
+            @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
+            OrgVDCSupplier supplier) {
+         return Suppliers.<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> ofInstance(ImmutableMap
+               .<String, Map<String, org.jclouds.vcloud.domain.VDC>> of(ORG_REF.getName(),
+                     ImmutableMap.<String, org.jclouds.vcloud.domain.VDC> of(VDC.getName(), VDC)));
+      }
+
+      @Singleton
+      public static class TestOrgMapSupplier extends OrgMapSupplier {
+
+         @Inject
+         protected TestOrgMapSupplier() {
+            super(null, null);
+         }
+
+         @Override
+         public Map<String, Org> get() {
+            return ImmutableMap.<String, Org> of(ORG.getName(), ORG);
+         }
+      }
+
+      @Singleton
+      public static class TestOrgCatalogSupplier extends OrgCatalogSupplier {
+         @Inject
+         protected TestOrgCatalogSupplier() {
+            super(null, null);
+         }
+
+         @Override
+         public Map<String, Map<String, org.jclouds.vcloud.domain.Catalog>> get() {
+            return ImmutableMap.<String, Map<String, org.jclouds.vcloud.domain.Catalog>> of(
+                  ORG_REF.getName(), ImmutableMap.<String, org.jclouds.vcloud.domain.Catalog> of(
+                        CATALOG_REF.getName(),
+                        new CatalogImpl(CATALOG_REF.getName(), CATALOG_REF.getType(), CATALOG_REF.getHref(), null,
+                              "description", ImmutableMap.<String, ReferenceType> of(
+                                    "item",
+                                    new ReferenceTypeImpl("item", "application/vnd.vmware.vcloud.catalogItem+xml", URI
+                                          .create("https://vcenterprise.bluelock.com/api/v1.0/catalogItem/1")),
+                                    "template",
+                                    new ReferenceTypeImpl("template", "application/vnd.vmware.vcloud.vAppTemplate+xml",
+                                          URI.create("https://vcenterprise.bluelock.com/api/v1.0/catalogItem/2"))),
+                              ImmutableList.<Task> of(), true, false)));
+         }
+      }
+
+      @Singleton
+      public static class TestOrgCatalogItemSupplier extends OrgCatalogItemSupplier {
+         protected TestOrgCatalogItemSupplier() {
+            super(null, null);
+         }
+
+         @Override
+         public Map<String, Map<String, Map<String, CatalogItem>>> get() {
+            return ImmutableMap.<String, Map<String, Map<String, CatalogItem>>> of(
+                  ORG_REF.getName(), ImmutableMap
+                        .<String, Map<String, CatalogItem>> of(CATALOG_REF
+                              .getName(), ImmutableMap.<String, CatalogItem> of(
+                              "template",
+                              new CatalogItemImpl("template", URI
+                                    .create("https://vcenterprise.bluelock.com/api/v1.0/catalogItem/2"), "description",
+                                    new ReferenceTypeImpl("template", "application/vnd.vmware.vcloud.vAppTemplate+xml",
+                                          URI.create("https://vcenterprise.bluelock.com/api/v1.0/vAppTemplate/2")),
+                                    ImmutableMap.<String, String> of()))));
+
+         }
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java
new file mode 100644
index 0000000..b97cdf0
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java
@@ -0,0 +1,95 @@
+/*
+ * 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.vcloud.internal;
+
+import static org.jclouds.reflect.Reflection2.method;
+import static org.testng.Assert.assertEquals;
+
+import java.io.IOException;
+import java.net.URI;
+
+import org.jclouds.http.HttpRequest;
+import org.jclouds.http.filters.BasicAuthentication;
+import org.jclouds.location.Provider;
+import org.jclouds.providers.AnonymousProviderMetadata;
+import org.jclouds.providers.ProviderMetadata;
+import org.jclouds.rest.internal.BaseRestAnnotationProcessingTest;
+import org.jclouds.rest.internal.GeneratedHttpRequest;
+import org.jclouds.vcloud.endpoints.VCloudLogin;
+import org.jclouds.vcloud.functions.ParseLoginResponseFromHeaders;
+import org.jclouds.vcloud.http.filters.VCloudBasicAuthentication;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.ImmutableList;
+import com.google.common.net.HttpHeaders;
+import com.google.common.reflect.Invokable;
+import com.google.inject.Binder;
+import com.google.inject.Module;
+import com.google.inject.Provides;
+/**
+ * Tests behavior of {@code VCloudLoginApi}
+ */
+// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire
+@Test(groups = "unit", testName = "VCloudLoginApiTest")
+public class VCloudLoginApiTest extends BaseRestAnnotationProcessingTest<VCloudLoginApi> {
+
+   public void testLogin() throws SecurityException, NoSuchMethodException, IOException {
+      Invokable<?, ?> method = method(VCloudLoginApi.class, "login");
+      GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.of());
+
+      assertEquals(request.getRequestLine(), "POST http://localhost:8080/login HTTP/1.1");
+      assertNonPayloadHeadersEqual(request, HttpHeaders.ACCEPT + ": application/vnd.vmware.vcloud.orgList+xml\n" + HttpHeaders.ACCEPT + ": application/vnd.vmware.vcloud.session+xml\n");
+      assertPayloadEquals(request, null, null, false);
+
+      assertResponseParserClassEquals(method, request, ParseLoginResponseFromHeaders.class);
+      assertSaxResponseParserClassEquals(method, null);
+      assertFallbackClassEquals(method, null);
+
+      checkFilters(request);
+   }
+
+   @Override
+   protected void checkFilters(HttpRequest request) {
+      assertEquals(request.getFilters().size(), 1);
+      assertEquals(request.getFilters().get(0).getClass(), VCloudBasicAuthentication.class);
+   }
+
+   @Override
+   protected Module createModule() {
+      return new Module() {
+
+         @Override
+         public void configure(Binder binder) {
+         }
+
+         @Provides
+         @VCloudLogin
+         Supplier<URI> provideURI(@Provider Supplier<URI> uri) {
+            return uri;
+         }
+
+      };
+   }
+
+   @Override
+   protected ProviderMetadata createProviderMetadata() {
+      return AnonymousProviderMetadata.forApiOnEndpoint(VCloudLoginApi.class,
+            "http://localhost:8080/login");
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/options/InstantiateVAppTemplateOptionsTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/options/InstantiateVAppTemplateOptionsTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/options/InstantiateVAppTemplateOptionsTest.java
new file mode 100644
index 0000000..8994284
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/options/InstantiateVAppTemplateOptionsTest.java
@@ -0,0 +1,72 @@
+/*
+ * 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.vcloud.options;
+
+import static org.jclouds.vcloud.options.InstantiateVAppTemplateOptions.Builder.addNetworkConfig;
+import static org.jclouds.vcloud.options.InstantiateVAppTemplateOptions.Builder.description;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+
+import org.jclouds.http.functions.config.SaxParserModule;
+import org.jclouds.vcloud.domain.network.FenceMode;
+import org.jclouds.vcloud.domain.network.NetworkConfig;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.Iterables;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Tests behavior of {@code InstantiateVAppTemplateOptions}
+ */
+@Test(groups = "unit")
+public class InstantiateVAppTemplateOptionsTest {
+
+   Injector injector = Guice.createInjector(new SaxParserModule());
+
+   @Test
+   public void testAddNetworkConfig() {
+      InstantiateVAppTemplateOptions options = new InstantiateVAppTemplateOptions();
+      options.addNetworkConfig(new NetworkConfig("default", URI.create("http://localhost"), FenceMode.BRIDGED));
+      assertEquals(Iterables.get(options.getNetworkConfig(), 0).getNetworkName(), "default");
+      assertEquals(Iterables.get(options.getNetworkConfig(), 0).getParentNetwork(), URI.create("http://localhost"));
+      assertEquals(Iterables.get(options.getNetworkConfig(), 0).getFenceMode(), FenceMode.BRIDGED);
+   }
+
+   @Test
+   public void testAddNetworkConfigStatic() {
+      InstantiateVAppTemplateOptions options = addNetworkConfig(new NetworkConfig("default",
+            URI.create("http://localhost"), FenceMode.BRIDGED));
+      assertEquals(Iterables.get(options.getNetworkConfig(), 0).getNetworkName(), "default");
+      assertEquals(Iterables.get(options.getNetworkConfig(), 0).getParentNetwork(), URI.create("http://localhost"));
+      assertEquals(Iterables.get(options.getNetworkConfig(), 0).getFenceMode(), FenceMode.BRIDGED);
+   }
+
+   @Test
+   public void testDescription() {
+      InstantiateVAppTemplateOptions options = new InstantiateVAppTemplateOptions();
+      options.description("foo");
+      assertEquals(options.getDescription(), "foo");
+   }
+
+   @Test
+   public void testDescriptionStatic() {
+      InstantiateVAppTemplateOptions options = description("foo");
+      assertEquals(options.getDescription(), "foo");
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/suppliers/OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefaultTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/suppliers/OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefaultTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/suppliers/OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefaultTest.java
new file mode 100644
index 0000000..4bdb5b8
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/suppliers/OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefaultTest.java
@@ -0,0 +1,113 @@
+/*
+ * 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.vcloud.suppliers;
+
+import static org.easymock.EasyMock.createMock;
+import static org.testng.Assert.assertEquals;
+
+import java.util.NoSuchElementException;
+
+import org.jclouds.config.ValueOfConfigurationKeyOrNull;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.name.Names;
+
+/**
+ * Tests behavior of
+ * {@code OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault}
+ */
+// NOTE:without testName, this will not call @Before* and fail w/NPE during
+// surefire
+@Test(groups = "unit", testName = "OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefaultTest")
+public class OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefaultTest {
+   ValueOfConfigurationKeyOrNull valueOfConfigurationKeyOrNull = Guice.createInjector().getInstance(
+         ValueOfConfigurationKeyOrNull.class);
+
+   @Test(expectedExceptions = IllegalArgumentException.class)
+   public void testIllegalArgumentWhenResourcesEmpty() {
+      new OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault(valueOfConfigurationKeyOrNull, "foo",
+            Predicates.<ReferenceType> alwaysTrue()).apply(ImmutableSet.<ReferenceType> of());
+   }
+
+   @Test
+   public void testReturnsOnlyResource() {
+      ReferenceType reference = createMock(ReferenceType.class);
+
+      assertEquals(new OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault(valueOfConfigurationKeyOrNull,
+            "foo", Predicates.<ReferenceType> alwaysTrue()).apply(ImmutableSet.<ReferenceType> of(reference)),
+            reference);
+
+   }
+
+   @Test
+   public void testReturnsFirstResourceWhenConfigurationUnspecified() {
+      ReferenceType reference1 = createMock(ReferenceType.class);
+      ReferenceType reference2 = createMock(ReferenceType.class);
+
+      assertEquals(new OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault(valueOfConfigurationKeyOrNull,
+            "foo", Predicates.<ReferenceType> alwaysTrue()).apply(ImmutableList.<ReferenceType> of(reference1,
+            reference2)), reference1);
+
+   }
+
+   @Test
+   public void testReturnsResourceMatchingDefaultPredicateWhenConfigurationUnspecified() {
+      ReferenceType reference1 = createMock(ReferenceType.class);
+      ReferenceType reference2 = createMock(ReferenceType.class);
+
+      assertEquals(new OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault(valueOfConfigurationKeyOrNull,
+            "foo", Predicates.equalTo(reference2)).apply(ImmutableList.<ReferenceType> of(reference1, reference2)),
+            reference2);
+
+   }
+
+   @Test
+   public void testReturnsResourceWithNameMatchingConfigurationKey() {
+      ReferenceType reference1 = new ReferenceTypeImpl("travis tritt", null, null);
+      ReferenceType reference2 = new ReferenceTypeImpl("hail mary", null, null);
+
+      assertEquals(
+            new OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault(Guice.createInjector(
+                  new AbstractModule() {
+                     protected void configure() {
+                        bindConstant().annotatedWith(Names.named("foo")).to(".*mary.*");
+                     }
+                  }).getInstance(ValueOfConfigurationKeyOrNull.class), "foo", Predicates.<ReferenceType> alwaysTrue()).apply(ImmutableList
+                  .<ReferenceType> of(reference1, reference2)), reference2);
+
+   }
+
+   @Test(expectedExceptions = NoSuchElementException.class)
+   public void testThrowsNoSuchElementWhenNoneMatchConfigurationKey() {
+      ReferenceType reference1 = new ReferenceTypeImpl("travis tritt", null, null);
+      ReferenceType reference2 = new ReferenceTypeImpl("hail mary", null, null);
+
+      new OnlyReferenceTypeFirstWithNameMatchingConfigurationKeyOrDefault(Guice.createInjector(new AbstractModule() {
+         protected void configure() {
+            bindConstant().annotatedWith(Names.named("foo")).to(".*happy.*");
+         }
+      }).getInstance(ValueOfConfigurationKeyOrNull.class), "foo", Predicates.<ReferenceType> alwaysTrue())
+            .apply(ImmutableList.<ReferenceType> of(reference1, reference2));
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/utils/TestUtils.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/utils/TestUtils.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/utils/TestUtils.java
new file mode 100644
index 0000000..9a844ed
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/utils/TestUtils.java
@@ -0,0 +1,30 @@
+/*
+ * 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.vcloud.utils;
+
+
+/**
+ * Utility class for test
+ */
+public class TestUtils {
+    public static final Object[][] NO_INVOCATIONS = new Object[0][0];
+    public static final Object[][] SINGLE_NO_ARG_INVOCATION = { new Object[0] };
+
+    public static boolean isWindowsOs() {
+        return System.getProperty("os.name", "").toLowerCase().contains("windows");
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogHandlerTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogHandlerTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogHandlerTest.java
new file mode 100644
index 0000000..2a883e6
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogHandlerTest.java
@@ -0,0 +1,133 @@
+/*
+ * 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.vcloud.xml;
+
+import static org.jclouds.vcloud.VCloudMediaType.CATALOGITEM_XML;
+import static org.testng.Assert.assertEquals;
+
+import java.io.InputStream;
+import java.net.URI;
+
+import org.jclouds.http.functions.ParseSax;
+import org.jclouds.http.functions.ParseSax.Factory;
+import org.jclouds.http.functions.config.SaxParserModule;
+import org.jclouds.vcloud.domain.Catalog;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.Task;
+import org.jclouds.vcloud.domain.internal.CatalogImpl;
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Tests behavior of {@code CatalogHandler}
+ */
+@Test(groups = "unit")
+public class CatalogHandlerTest {
+
+   private Injector injector;
+
+   private Factory factory;
+
+   public void testVCloud1_0() {
+      InputStream is = getClass().getResourceAsStream("/catalog-blank.xml");
+      injector = Guice.createInjector(new SaxParserModule());
+      factory = injector.getInstance(ParseSax.Factory.class);
+      Catalog result = factory.create(injector.getInstance(CatalogHandler.class)).parse(is);
+      assertEquals(result, new CatalogImpl("Jclouds-private", "application/vnd.vmware.vcloud.catalog+xml", URI
+               .create("https://vcenterprise.bluelock.com/api/v1.0/catalog/921222081"), new ReferenceTypeImpl(null,
+               "application/vnd.vmware.vcloud.org+xml", URI
+                        .create("https://vcenterprise.bluelock.com/api/v1.0/org/9566014")), null, ImmutableMap
+               .<String, ReferenceType> of(), ImmutableList.<Task> of(), false, false));
+   }
+
+   public void testTerremark() {
+      InputStream is = getClass().getResourceAsStream("/catalog.xml");
+      injector = Guice.createInjector(new SaxParserModule());
+      factory = injector.getInstance(ParseSax.Factory.class);
+      Catalog result = factory.create(injector.getInstance(CatalogHandler.class)).parse(is);
+      assertEquals(result.getName(), "Miami Environment 1");
+      assert result.getDescription() == null;
+
+      assertEquals(result.getHref(), URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/vdc/32/catalog"));
+      assertEquals(result.get("CentOS 5.3 (32-bit)"), new ReferenceTypeImpl("CentOS 5.3 (32-bit)", CATALOGITEM_XML, URI
+               .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/5")));
+      assertEquals(result.get("CentOS 5.3 (64-bit)"), new ReferenceTypeImpl("CentOS 5.3 (64-bit)", CATALOGITEM_XML, URI
+               .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/6")));
+      assertEquals(result.get("RHEL 5.3 (32-bit)"), new ReferenceTypeImpl("RHEL 5.3 (32-bit)", CATALOGITEM_XML, URI
+               .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/7")));
+      assertEquals(result.get("RHEL 5.3 (64-bit)"), new ReferenceTypeImpl("RHEL 5.3 (64-bit)", CATALOGITEM_XML, URI
+               .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/8")));
+      assertEquals(result.get("Ubuntu JeOS 9.04 (32-bit)"), new ReferenceTypeImpl("Ubuntu JeOS 9.04 (32-bit)",
+               CATALOGITEM_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/11")));
+      assertEquals(result.get("Ubuntu JeOS 9.04 (64-bit)"), new ReferenceTypeImpl("Ubuntu JeOS 9.04 (64-bit)",
+               CATALOGITEM_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/12")));
+      assertEquals(result.get("Ubuntu Server 9.04 (32-bit)"), new ReferenceTypeImpl("Ubuntu Server 9.04 (32-bit)",
+               CATALOGITEM_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/9")));
+      assertEquals(result.get("Ubuntu Server 9.04 (64-bit)"), new ReferenceTypeImpl("Ubuntu Server 9.04 (64-bit)",
+               CATALOGITEM_XML, URI.create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/10")));
+      assertEquals(result.get("Windows 2003 Enterprise R2 (32-bit)"), new ReferenceTypeImpl(
+               "Windows 2003 Enterprise R2 (32-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/1")));
+      assertEquals(result.get("Windows 2003 Enterprise R2 (64-bit)"), new ReferenceTypeImpl(
+               "Windows 2003 Enterprise R2 (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/2")));
+      assertEquals(result.get("Windows 2003 Standard R2 (32-bit)"), new ReferenceTypeImpl(
+               "Windows 2003 Standard R2 (32-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/3")));
+      assertEquals(result.get("Windows 2003 Standard R2 (64-bit)"), new ReferenceTypeImpl(
+               "Windows 2003 Standard R2 (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/4")));
+      assertEquals(result.get("Windows 2003 Standard R2 w.SQL 2008 Web (64-bit)"), new ReferenceTypeImpl(
+               "Windows 2003 Standard R2 w.SQL 2008 Web (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/23")));
+      assertEquals(result.get("Windows Server 2008 Enterprise (32-bit)"), new ReferenceTypeImpl(
+               "Windows Server 2008 Enterprise (32-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/13")));
+      assertEquals(result.get("Windows Server 2008 Enterprise (64-bit)"), new ReferenceTypeImpl(
+               "Windows Server 2008 Enterprise (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/15")));
+      assertEquals(result.get("Windows Server 2008 Enterprise R2 (64-bit)"), new ReferenceTypeImpl(
+               "Windows Server 2008 Enterprise R2 (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/16")));
+      assertEquals(result.get("Windows Server 2008 Standard (32-bit)"), new ReferenceTypeImpl(
+               "Windows Server 2008 Standard (32-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/17")));
+      assertEquals(result.get("Windows Server 2008 Standard (64-bit)"), new ReferenceTypeImpl(
+               "Windows Server 2008 Standard (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/18")));
+      assertEquals(result.get("Windows Server 2008 Standard R2 (64-bit)"), new ReferenceTypeImpl(
+               "Windows Server 2008 Standard R2 (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/19")));
+      assertEquals(result.get("Windows Server 2008 Standard w.SQL 2008 Web (64-bit)"), new ReferenceTypeImpl(
+               "Windows Server 2008 Standard w.SQL 2008 Web (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/14")));
+      assertEquals(result.get("Windows Web Server 2008 (32-bit)"), new ReferenceTypeImpl(
+               "Windows Web Server 2008 (32-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/20")));
+      assertEquals(result.get("Windows Web Server 2008 (64-bit)"), new ReferenceTypeImpl(
+               "Windows Web Server 2008 (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/21")));
+      assertEquals(result.get("Windows Web Server 2008 R2 (64-bit)"), new ReferenceTypeImpl(
+               "Windows Web Server 2008 R2 (64-bit)", CATALOGITEM_XML, URI
+                        .create("https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/22")));
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogItemHandlerTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogItemHandlerTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogItemHandlerTest.java
new file mode 100644
index 0000000..6f2b100
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/CatalogItemHandlerTest.java
@@ -0,0 +1,84 @@
+/*
+ * 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.vcloud.xml;
+
+import static org.testng.Assert.assertEquals;
+
+import java.io.InputStream;
+import java.net.URI;
+
+import org.jclouds.http.functions.ParseSax;
+import org.jclouds.http.functions.ParseSax.Factory;
+import org.jclouds.http.functions.config.SaxParserModule;
+import org.jclouds.vcloud.domain.CatalogItem;
+import org.jclouds.vcloud.domain.internal.CatalogItemImpl;
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSortedMap;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Tests behavior of {@code CatalogItemHandler}
+ */
+@Test(groups = "unit")
+public class CatalogItemHandlerTest {
+
+   public void testApplyInputStream() {
+      InputStream is = getClass().getResourceAsStream("/catalogItem-hosting.xml");
+      Injector injector = Guice.createInjector(new SaxParserModule());
+      Factory factory = injector.getInstance(ParseSax.Factory.class);
+      CatalogItem result = factory.create(injector.getInstance(CatalogItemHandler.class)).parse(is);
+
+      assertEquals(result, new CatalogItemImpl("Windows 2008 Datacenter 64 Bit", URI
+               .create("https://vcloud.safesecureweb.com/api/v0.8/catalogItem/2"), "Windows 2008 Datacenter 64 Bit",
+               new ReferenceTypeImpl("Windows 2008 Datacenter 64 Bit",
+                        "application/vnd.vmware.vcloud.vAppTemplate+xml", URI
+                                 .create("https://vcloud.safesecureweb.com/api/v0.8/vAppTemplate/2")),
+               ImmutableSortedMap.of("Foo", "Bar", "Hello", "World"
+
+               )));
+
+   }
+   
+   public void testApplyInputStreamWithNamespaceUsingVcloud() {
+      InputStream is = getClass().getResourceAsStream("/catalogItem-carrenza-with-vcloud-namespace.xml");
+      Injector injector = Guice.createInjector(new SaxParserModule());
+      Factory factory = injector.getInstance(ParseSax.Factory.class);
+      CatalogItem result = factory.create(injector.getInstance(CatalogItemHandler.class)).parse(is);
+
+      assertEquals(result, new CatalogItemImpl("ubuntu10.10x64", 
+               URI.create("https://myvdc.carrenza.net/api/v1.0/catalogItem/ecd4d3a0-0d12-4195-a6d2-14cdf9f925a3"), 
+               null, new ReferenceTypeImpl("ubuntu10.10x64", "application/vnd.vmware.vcloud.vAppTemplate+xml", 
+                        URI.create("https://myvdc.carrenza.net/api/v1.0/vAppTemplate/vappTemplate-123766ea-2b55-482c-8adf-735ab1952834")),
+               ImmutableSortedMap.<String, String>of()));
+   }
+   
+   public void testApplyInputStreamWithNamespaceUsingDefault() {
+      InputStream is = getClass().getResourceAsStream("/catalogItem-carrenza-with-default-namespace.xml");
+      Injector injector = Guice.createInjector(new SaxParserModule());
+      Factory factory = injector.getInstance(ParseSax.Factory.class);
+      CatalogItem result = factory.create(injector.getInstance(CatalogItemHandler.class)).parse(is);
+
+      assertEquals(result, new CatalogItemImpl("ubuntu10.10x64", 
+               URI.create("https://myvdc.carrenza.net/api/v1.0/catalogItem/ecd4d3a0-0d12-4195-a6d2-14cdf9f925a3"), 
+               null, new ReferenceTypeImpl("ubuntu10.10x64", "application/vnd.vmware.vcloud.vAppTemplate+xml", 
+                        URI.create("https://myvdc.carrenza.net/api/v1.0/vAppTemplate/vappTemplate-123766ea-2b55-482c-8adf-735ab1952834")),
+               ImmutableSortedMap.<String, String>of()));
+   }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/GuestCustomizationSectionHandlerTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/GuestCustomizationSectionHandlerTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/GuestCustomizationSectionHandlerTest.java
new file mode 100644
index 0000000..503611e
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/GuestCustomizationSectionHandlerTest.java
@@ -0,0 +1,73 @@
+/*
+ * 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.vcloud.xml;
+
+import static org.testng.Assert.assertEquals;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.net.UnknownHostException;
+
+import org.jclouds.http.functions.BaseHandlerTest;
+import org.jclouds.vcloud.VCloudMediaType;
+import org.jclouds.vcloud.domain.GuestCustomizationSection;
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+import org.testng.annotations.Test;
+
+/**
+ * Tests behavior of {@code GuestCustomizationSectionHandler}
+ */
+// NOTE:without testName, this will not call @Before* and fail w/NPE during surefire
+@Test(groups = "unit", testName = "GuestCustomizationSectionHandlerTest")
+public class GuestCustomizationSectionHandlerTest extends BaseHandlerTest {
+
+   public void testDefault() throws UnknownHostException {
+      InputStream is = getClass().getResourceAsStream("/guestCustomization.xml");
+
+      GuestCustomizationSection result = factory.create(injector.getInstance(GuestCustomizationSectionHandler.class))
+            .parse(is);
+
+      checkGuestCustomization(result);
+
+   }
+
+   @Test(enabled = false)
+   public static void checkGuestCustomization(GuestCustomizationSection result) {
+      assertEquals(result.getType(), VCloudMediaType.GUESTCUSTOMIZATIONSECTION_XML);
+      assertEquals(result.getHref(),
+            URI.create("https://vcenterprise.bluelock.com/api/v1.0/vApp/vm-2087535248/guestCustomizationSection/"));
+      assertEquals(result.getInfo(), "Specifies Guest OS Customization Settings");
+      assertEquals(result.isEnabled(), Boolean.TRUE);
+      assertEquals(result.shouldChangeSid(), Boolean.FALSE);
+      assertEquals(result.getVirtualMachineId(), "2087535248");
+      assertEquals(result.isJoinDomainEnabled(), Boolean.FALSE);
+      assertEquals(result.useOrgSettings(), Boolean.FALSE);
+      assertEquals(result.getDomainName(), null);
+      assertEquals(result.getDomainUserName(), null);
+      assertEquals(result.getDomainUserPassword(), null);
+      assertEquals(result.isAdminPasswordEnabled(), Boolean.TRUE);
+      assertEquals(result.isAdminPasswordAuto(), Boolean.TRUE);
+      assertEquals(result.getAdminPassword(), null);
+      assertEquals(result.isResetPasswordRequired(), Boolean.FALSE);
+      assertEquals(result.getCustomizationScript(), "cat > /root/foo.txt<<EOF\nI '\"love\"' {asc|!}*&\nEOF\n");
+      assertEquals(result.getComputerName(), "RHEL5");
+      assertEquals(
+            result.getEdit(),
+            new ReferenceTypeImpl(null, VCloudMediaType.GUESTCUSTOMIZATIONSECTION_XML, URI
+                  .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/vm-2087535248/guestCustomizationSection/")));
+   }
+}