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:36:22 UTC
[36/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/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseImageTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseImageTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseImageTest.java
new file mode 100644
index 0000000..99cfd6f
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseImageTest.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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Image;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class ParseImageTest extends BaseGoogleComputeEngineParseTest<Image> {
+
+ @Override
+ public String resource() {
+ return "/image_get.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Image expected() {
+ return Image.builder()
+ .id("12941197498378735318")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2012-07-16T22:16:13.468"))
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-6-2" +
+ "-v20120326"))
+ .name("centos-6-2-v20120326")
+ .description("DEPRECATED. CentOS 6.2 image; Created Mon, 26 Mar 2012 21:19:09 +0000")
+ .sourceType("RAW")
+ .rawDisk(
+ Image.RawDisk.builder()
+ .source("")
+ .containerType("TAR")
+ .build()
+ ).build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceListTest.java
new file mode 100644
index 0000000..ad6041b
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceListTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.googlecomputeengine.domain.Instance;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Resource;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+import com.google.common.collect.ImmutableSet;
+
+public class ParseInstanceListTest extends BaseGoogleComputeEngineParseTest<ListPage<Instance>> {
+
+ @Override
+ public String resource() {
+ return "/instance_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<Instance> expected() {
+ return ListPage.<Instance>builder()
+ .kind(Resource.Kind.INSTANCE_LIST)
+ .id("projects/myproject/zones/us-central1-a/instances")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances"))
+ .items(ImmutableSet.of(new ParseInstanceTest().expected()))
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceSerialOutputTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceSerialOutputTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceSerialOutputTest.java
new file mode 100644
index 0000000..f44baa1
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceSerialOutputTest.java
@@ -0,0 +1,38 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.googlecomputeengine.domain.Instance;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+public class ParseInstanceSerialOutputTest extends BaseGoogleComputeEngineParseTest<Instance.SerialPortOutput> {
+
+ @Override
+ public String resource() {
+ return "/instance_serial_port.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Instance.SerialPortOutput expected() {
+ return Instance.SerialPortOutput.builder()
+ .contents("console output").build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
new file mode 100644
index 0000000..5abdf6a
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Instance;
+import org.jclouds.googlecomputeengine.domain.Metadata;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+import com.google.common.collect.ImmutableMap;
+
+public class ParseInstanceTest extends BaseGoogleComputeEngineParseTest<Instance> {
+
+ @Override
+ public String resource() {
+ return "/instance_get.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Instance expected() {
+ return Instance.builder()
+ .id("13051190678907570425")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2012-11-25T23:48:20.758"))
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-0"))
+ .description("desc")
+ .name("test-0")
+ .machineType(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1" +
+ "-standard-1"))
+ .status(Instance.Status.RUNNING)
+ .zone(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a"))
+ .addNetworkInterface(
+ Instance.NetworkInterface.builder()
+ .name("nic0")
+ .networkIP("10.240.121.115")
+ .network(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/global/networks/default"))
+ .build()
+ )
+ .addDisk(
+ Instance.PersistentAttachedDisk.builder()
+ .index(0)
+ .mode(Instance.PersistentAttachedDisk.Mode.READ_WRITE)
+ .deviceName("test")
+ .source(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/zones/us-central1-a/disks/test"))
+ .boot(true)
+ .build()
+ )
+ .tags(Instance.Tags.builder().fingerprint("abcd").addItem("aTag").build())
+ .metadata(Metadata.builder()
+ .items(ImmutableMap.of("aKey", "aValue",
+ "jclouds-image",
+ "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140718",
+ "jclouds-delete-boot-disk", "true"))
+ .fingerprint("efgh")
+ .build())
+ .addServiceAccount(Instance.ServiceAccount.builder().email("default").addScopes("myscope").build())
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java
new file mode 100644
index 0000000..f8146d2
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeListTest.java
@@ -0,0 +1,91 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import static org.jclouds.googlecomputeengine.domain.Resource.Kind.MACHINE_TYPE_LIST;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.MachineType;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+public class ParseMachineTypeListTest extends BaseGoogleComputeEngineParseTest<ListPage<MachineType>> {
+
+
+ @Override
+ public String resource() {
+ return "/machinetype_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<MachineType> expected() {
+ SimpleDateFormatDateService dateService = new SimpleDateFormatDateService();
+ return ListPage.<MachineType>builder()
+ .kind(MACHINE_TYPE_LIST)
+ .id("projects/myproject/machineTypes")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes"))
+ .addItem(MachineType.builder()
+ .id("4618642685664990776")
+ .creationTimestamp(dateService.iso8601DateParse("2013-04-25T13:32:49.088-07:00"))
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro"))
+ .zone("us-central1-a")
+ .name("f1-micro")
+ .description("1 vCPU (shared physical core) and 0.6 GB RAM")
+ .guestCpus(1)
+ .memoryMb(614)
+ .maximumPersistentDisks(4)
+ .maximumPersistentDisksSizeGb(3072)
+ .build())
+ .addItem(MachineType.builder()
+ .id("12907738072351752276")
+ .creationTimestamp(dateService.iso8601DateParse("2012-06-07T20:48:14.670"))
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1"))
+ .zone("us-central1-a")
+ .name("n1-standard-1")
+ .description("1 vCPU, 3.75 GB RAM, and a 10 GB ephemeral root disk")
+ .guestCpus(1)
+ .memoryMb(3840)
+ .maximumPersistentDisks(16)
+ .maximumPersistentDisksSizeGb(128)
+ .build())
+ .addItem(MachineType.builder()
+ .id("12908560709887590691")
+ .creationTimestamp(dateService.iso8601DateParse("2012-06-07T20:51:19.936"))
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-8-d"))
+ .zone("us-central1-a")
+ .name("n1-standard-8-d")
+ .description("8 vCPUs, 30 GB RAM, a 10 GB ephemeral root disk, " +
+ "and 2 extra 1770 GB ephemeral disks")
+ .guestCpus(8)
+ .memoryMb(30720)
+ .addScratchDisk(1770)
+ .addScratchDisk(1770)
+ .maximumPersistentDisks(16)
+ .maximumPersistentDisksSizeGb(1024)
+ .build())
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java
new file mode 100644
index 0000000..c1f1fad
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMachineTypeTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.MachineType;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+public class ParseMachineTypeTest extends BaseGoogleComputeEngineParseTest<MachineType> {
+
+
+ @Override
+ public String resource() {
+ return "/machinetype.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public MachineType expected() {
+ SimpleDateFormatDateService dateService = new SimpleDateFormatDateService();
+ return MachineType.builder()
+ .id("12907738072351752276")
+ .creationTimestamp(dateService.iso8601DateParse("2012-06-07T20:48:14.670"))
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1" +
+ "-standard-1"))
+ .zone("us-central1-a")
+ .name("n1-standard-1")
+ .description("1 vCPU, 3.75 GB RAM, and a 10 GB ephemeral root disk")
+ .guestCpus(1)
+ .memoryMb(3840)
+ .addScratchDisk(1770)
+ .addScratchDisk(1770)
+ .maximumPersistentDisks(16)
+ .maximumPersistentDisksSizeGb(128)
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java
new file mode 100644
index 0000000..877bc31
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseMetadataTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.googlecomputeengine.domain.Metadata;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+@Test(groups = "unit")
+public class ParseMetadataTest extends BaseGoogleComputeEngineParseTest<Metadata> {
+
+ @Override
+ public String resource() {
+ return "/metadata.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Metadata expected() {
+ return new Metadata("efgh",
+ ImmutableMap.<String, String>builder()
+ .put("propA", "valueA")
+ .put("propB", "valueB")
+ .build());
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkListTest.java
new file mode 100644
index 0000000..61d56ba
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkListTest.java
@@ -0,0 +1,49 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Network;
+import org.jclouds.googlecomputeengine.domain.Resource;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+import com.google.common.collect.ImmutableSet;
+
+public class ParseNetworkListTest extends BaseGoogleComputeEngineParseTest<ListPage<Network>> {
+
+ @Override
+ public String resource() {
+ return "/network_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<Network> expected() {
+ return ListPage.<Network>builder()
+ .kind(Resource.Kind.NETWORK_LIST)
+ .id("projects/myproject/networks")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/networks"))
+ .items(ImmutableSet.of(new ParseNetworkTest().expected()))
+ .build();
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java
new file mode 100644
index 0000000..cd0fdcf
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseNetworkTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Network;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+public class ParseNetworkTest extends BaseGoogleComputeEngineParseTest<Network> {
+
+ @Override
+ public String resource() {
+ return "/network_get.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Network expected() {
+ return Network.builder()
+ .id("13024414170909937976")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2012-10-24T20:13:19.967"))
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/networks/jclouds-test"))
+ .name("default")
+ .description("Default network for the project")
+ .IPv4Range("10.0.0.0/8")
+ .gatewayIPv4("10.0.0.1")
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationListTest.java
new file mode 100644
index 0000000..ec407a3
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationListTest.java
@@ -0,0 +1,46 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.domain.Resource;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+
+public class ParseOperationListTest extends BaseGoogleComputeEngineParseTest<ListPage<Operation>> {
+
+ @Override
+ public String resource() {
+ return "/global_operation_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<Operation> expected() {
+ return ListPage.<Operation>builder()
+ .kind(Resource.Kind.OPERATION_LIST)
+ .id("projects/myproject/global/operations")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/operations"))
+ .addItem(new ParseOperationTest().expected())
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java
new file mode 100644
index 0000000..cb561bf
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseOperationTest.java
@@ -0,0 +1,58 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class ParseOperationTest extends BaseGoogleComputeEngineParseTest<Operation> {
+
+ @Override
+ public String resource() {
+ return "/global_operation.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Operation expected() {
+ SimpleDateFormatDateService dateService = new SimpleDateFormatDateService();
+ return Operation.builder().id("13053095055850848306")
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/global/operations/operation-1354084865060-4cf88735faeb8" +
+ "-bbbb12cb"))
+ .name("operation-1354084865060-4cf88735faeb8-bbbb12cb")
+ .targetLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/global/firewalls/jclouds-test-delete"))
+ .targetId("13053094017547040099")
+ .status(Operation.Status.DONE)
+ .user("user@developer.gserviceaccount.com")
+ .progress(100)
+ .insertTime(dateService.iso8601DateParse("2012-11-28T06:41:05.060"))
+ .startTime(dateService.iso8601DateParse("2012-11-28T06:41:05.142"))
+ .endTime(dateService.iso8601DateParse("2012-11-28T06:41:06.142"))
+ .operationType("insert")
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java
new file mode 100644
index 0000000..3e549df
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseProjectTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+import java.util.Date;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.googlecomputeengine.domain.Metadata;
+import org.jclouds.googlecomputeengine.domain.Project;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+@Test(groups = "unit")
+public class ParseProjectTest extends BaseGoogleComputeEngineParseTest<Project> {
+
+ @Override
+ public String resource() {
+ return "/project.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Project expected() {
+ return Project.builder()
+ .id("13024414184846275913")
+ .creationTimestamp(new Date(Long.parseLong("1351109596252")))
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject"))
+ .name("myproject")
+ .description("")
+ .commonInstanceMetadata(Metadata.builder()
+ .items(ImmutableMap.<String, String>builder()
+ .put("propA", "valueA")
+ .put("propB", "valueB")
+ .build())
+ .fingerprint("efgh")
+ .build())
+ .addQuota("INSTANCES", 0, 8)
+ .addQuota("CPUS", 0, 8)
+ .addQuota("EPHEMERAL_ADDRESSES", 0, 8)
+ .addQuota("DISKS", 0, 8)
+ .addQuota("DISKS_TOTAL_GB", 0, 100)
+ .addQuota("SNAPSHOTS", 0, 1000)
+ .addQuota("NETWORKS", 1, 5)
+ .addQuota("FIREWALLS", 2, 100)
+ .addQuota("IMAGES", 0, 100)
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseQuotaTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseQuotaTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseQuotaTest.java
new file mode 100644
index 0000000..894dd0e
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseQuotaTest.java
@@ -0,0 +1,39 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.googlecomputeengine.domain.Quota;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class ParseQuotaTest extends BaseGoogleComputeEngineParseTest<Quota> {
+
+ @Override
+ public String resource() {
+ return "/quota.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Quota expected() {
+ return Quota.builder().metric("INSTANCES").usage(0.0).limit(8.0).build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.java
new file mode 100644
index 0000000..8dfdea1
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionListTest.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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Region;
+import org.jclouds.googlecomputeengine.domain.Resource;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ParseRegionListTest extends BaseGoogleComputeEngineParseTest<ListPage<Region>> {
+
+ @Override
+ public String resource() {
+ return "/region_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<Region> expected() {
+ return ListPage.<Region>builder()
+ .kind(Resource.Kind.REGION_LIST)
+ .id("projects/myproject/regions")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/regions"))
+ .items(ImmutableSet.of(
+ new ParseRegionTest().expected(),
+ Region.builder()
+ .id("6396763663251190992")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse
+ ("2013-07-08T14:40:37.939-07:00"))
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/regions/us-central2"))
+ .name("us-central2")
+ .description("us-central2")
+ .status(Region.Status.UP)
+ .zone(URI.create("https://www.googleapis.com/compute/v1/zones/us-central2-a"))
+ .addQuota("INSTANCES", 0, 8)
+ .addQuota("CPUS", 0, 8)
+ .addQuota("EPHEMERAL_ADDRESSES", 0, 8)
+ .addQuota("DISKS", 0, 8)
+ .addQuota("DISKS_TOTAL_GB", 0, 100)
+ .addQuota("SNAPSHOTS", 0, 1000)
+ .addQuota("NETWORKS", 1, 5)
+ .addQuota("FIREWALLS", 2, 100)
+ .addQuota("IMAGES", 0, 100)
+ .build()))
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionTest.java
new file mode 100644
index 0000000..fab9915
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRegionTest.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Region;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ParseRegionTest extends BaseGoogleComputeEngineParseTest<Region> {
+
+ @Override
+ public String resource() {
+ return "/region_get.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Region expected() {
+ return Region.builder()
+ .id("12912210600542709766")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2013-07-08T14:40:37.939-07:00"))
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1"))
+ .name("us-central1")
+ .description("us-central1")
+ .status(Region.Status.UP)
+ .zones(ImmutableSet.of(URI.create("https://www.googleapis.com/compute/v1/zones/us-central1-a"),
+ URI.create("https://www.googleapis.com/compute/v1/zones/us-central1-b")))
+ .addQuota("INSTANCES", 0, 8)
+ .addQuota("CPUS", 0, 8)
+ .addQuota("EPHEMERAL_ADDRESSES", 0, 8)
+ .addQuota("DISKS", 0, 8)
+ .addQuota("DISKS_TOTAL_GB", 0, 100)
+ .addQuota("SNAPSHOTS", 0, 1000)
+ .addQuota("NETWORKS", 1, 5)
+ .addQuota("FIREWALLS", 2, 100)
+ .addQuota("IMAGES", 0, 100)
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteListTest.java
new file mode 100644
index 0000000..3a378aa
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteListTest.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Resource.Kind;
+import org.jclouds.googlecomputeengine.domain.Route;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ParseRouteListTest extends BaseGoogleComputeEngineParseTest<ListPage<Route>> {
+
+ @Override
+ public String resource() {
+ return "/route_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<Route> expected() {
+ return ListPage.<Route>builder()
+ .kind(Kind.ROUTE_LIST)
+ .id("projects/myproject/global/routes")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/routes"))
+ .items(ImmutableSet.of(new ParseRouteTest().expected(),
+ Route.builder()
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/routes/default-route-fc92a41ecb5a8d17"))
+ .id("507025480040058551")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2013-07-08T14:40:38.502-07:00"))
+ .name("default-route-fc92a41ecb5a8d17")
+ .description("Default route to the Internet.")
+ .network(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default"))
+ .destRange("0.0.0.0/0")
+ .priority(1000)
+ .nextHopGateway(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/gateways/default-internet-gateway"))
+ .build())
+ ).build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteTest.java
new file mode 100644
index 0000000..5ffd845
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseRouteTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Route;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ParseRouteTest extends BaseGoogleComputeEngineParseTest<Route> {
+
+ @Override
+ public String resource() {
+ return "/route_get.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Route expected() {
+ return Route.builder()
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/routes/default-route-c99ebfbed0e1f375"))
+ .id("7241926205630356071")
+ .name("default-route-c99ebfbed0e1f375")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2013-07-08T14:40:38.502-07:00"))
+ .description("Default route to the virtual network.")
+ .network(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default"))
+ .destRange("10.240.0.0/16")
+ .priority(1000)
+ .nextHopNetwork(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default"))
+ .tags(ImmutableSet.of("fooTag", "barTag"))
+ .build();
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotListTest.java
new file mode 100644
index 0000000..f52aa3f
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotListTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Resource.Kind;
+import org.jclouds.googlecomputeengine.domain.Snapshot;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ParseSnapshotListTest extends BaseGoogleComputeEngineParseTest<ListPage<Snapshot>> {
+
+ @Override
+ public String resource() {
+ return "/snapshot_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<Snapshot> expected() {
+ return ListPage.<Snapshot>builder()
+ .kind(Kind.SNAPSHOT_LIST)
+ .id("projects/myproject/global/snapshots")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots"))
+ .items(ImmutableSet.of(
+ new ParseSnapshotTest().expected(), Snapshot.builder()
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/global/snapshots/test-snap2"))
+ .id("13895715048576107883")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse
+ ("2013-07-26T12:57:01.927-07:00"))
+ .status("READY")
+ .sizeGb(10)
+ .sourceDisk(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/testimage1"))
+ .name("test-snap2")
+ .description("")
+ .sourceDiskId("8243603669926824540")
+ .build()))
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotTest.java
new file mode 100644
index 0000000..f3e7a01
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseSnapshotTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Snapshot;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class ParseSnapshotTest extends BaseGoogleComputeEngineParseTest<Snapshot> {
+
+ @Override
+ public String resource() {
+ return "/snapshot_get.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Snapshot expected() {
+ return Snapshot.builder()
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/test-snap"))
+ .id("9734455566806191190")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2013-07-26T12:54:23.173-07:00"))
+ .status("READY")
+ .sizeGb(10)
+ .sourceDisk(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/testimage1"))
+ .name("test-snap")
+ .description("")
+ .sourceDiskId("8243603669926824540")
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneListTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneListTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneListTest.java
new file mode 100644
index 0000000..54fe1a2
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneListTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Resource;
+import org.jclouds.googlecomputeengine.domain.Zone;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ParseZoneListTest extends BaseGoogleComputeEngineParseTest<ListPage<Zone>> {
+
+ @Override
+ public String resource() {
+ return "/zone_list.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public ListPage<Zone> expected() {
+ return ListPage.<Zone>builder()
+ .kind(Resource.Kind.ZONE_LIST)
+ .id("projects/myproject/zones")
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones"))
+ .items(ImmutableSet.of(
+ new ParseZoneTest().expected()
+ , Zone.builder()
+ .id("13024414164050619686")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse
+ ("2012-10-24T20:13:19.271"))
+ .selfLink(URI.create("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/zones/us-central1-b"))
+ .name("us-central1-b")
+ .description("us-central1-b")
+ .status(Zone.Status.UP)
+ .addMaintenanceWindow(Zone.MaintenanceWindow.builder()
+ .name("2013-02-17-planned-outage")
+ .description("maintenance zone")
+ .beginTime(new SimpleDateFormatDateService().iso8601DateParse
+ ("2013-02-17T08:00:00.000"))
+ .endTime(new SimpleDateFormatDateService().iso8601DateParse
+ ("2013-03-03T08:00:00.000"))
+ .build())
+ .build()))
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneTest.java
new file mode 100644
index 0000000..48cdbfc
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/parse/ParseZoneTest.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.googlecomputeengine.parse;
+
+import java.net.URI;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.googlecomputeengine.domain.Zone;
+import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class ParseZoneTest extends BaseGoogleComputeEngineParseTest<Zone> {
+
+ @Override
+ public String resource() {
+ return "/zone_get.json";
+ }
+
+ @Override
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Zone expected() {
+ return Zone.builder()
+ .id("13020128040171887099")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2012-10-19T16:42:54.131"))
+ .selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a"))
+ .name("us-central1-a")
+ .description("us-central1-a")
+ .status(Zone.Status.DOWN)
+ .addMaintenanceWindow(Zone.MaintenanceWindow.builder()
+ .name("2012-11-10-planned-outage")
+ .description("maintenance zone")
+ .beginTime(new SimpleDateFormatDateService().iso8601DateParse("2012-11-10T20:00:00.000"))
+ .endTime(new SimpleDateFormatDateService().iso8601DateParse("2012-12-02T20:00:00.000"))
+ .build())
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java
new file mode 100644
index 0000000..58ed81c
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/googlecomputeengine/predicates/NetworkFirewallPredicatesTest.java
@@ -0,0 +1,162 @@
+/*
+ * 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.googlecomputeengine.predicates;
+
+import static org.jclouds.googlecomputeengine.compute.functions.FirewallToIpPermissionTest.fwForTest;
+import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.equalsIpPermission;
+import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.hasPortRange;
+import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.hasProtocol;
+import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.hasSourceRange;
+import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.hasSourceTag;
+import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.providesIpPermission;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import java.net.URI;
+import java.util.Date;
+
+import org.jclouds.googlecomputeengine.domain.Firewall;
+import org.jclouds.net.domain.IpPermission;
+import org.jclouds.net.domain.IpProtocol;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.Range;
+
+@Test(groups = "unit")
+public class NetworkFirewallPredicatesTest {
+
+ public static Firewall getFwForTestSourceTags() {
+ Firewall.Builder builder = Firewall.builder();
+
+ builder.network(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/jclouds-test"));
+ builder.selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/firewalls/jclouds-test"));
+ builder.addSourceTag("tag-1");
+ builder.addAllowed(Firewall.Rule.builder().IpProtocol(IpProtocol.TCP)
+ .addPortRange(1, 10).build());
+ builder.addAllowed(Firewall.Rule.builder().IpProtocol(IpProtocol.TCP)
+ .addPort(33).build());
+ builder.addAllowed(Firewall.Rule.builder().IpProtocol(IpProtocol.ICMP).build());
+ builder.id("abcd");
+ builder.creationTimestamp(new Date());
+ builder.name("jclouds-test");
+
+ return builder.build();
+ }
+
+ public static Firewall getFwForTestSourceTagsExact() {
+ Firewall.Builder builder = Firewall.builder();
+
+ builder.network(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/networks/jclouds-test"));
+ builder.selfLink(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/global/firewalls/jclouds-test"));
+ builder.addSourceTag("tag-1");
+ builder.addAllowed(Firewall.Rule.builder().IpProtocol(IpProtocol.TCP)
+ .addPortRange(1, 10).build());
+ builder.id("abcd");
+ builder.creationTimestamp(new Date());
+ builder.name("jclouds-test");
+
+ return builder.build();
+ }
+
+ @Test
+ public void testHasProtocol() {
+ assertTrue(hasProtocol(IpProtocol.TCP).apply(fwForTest()),
+ "Firewall " + fwForTest() + " should contain a TCP rule.");
+ }
+
+ @Test
+ public void testHasProtocolFails() {
+ assertFalse(hasProtocol(IpProtocol.UDP).apply(fwForTest()),
+ "Firewall " + fwForTest() + " should NOT contain a UDP rule.");
+ }
+
+ @Test
+ public void testHasPortRange() {
+ assertTrue(hasPortRange(Range.closed(2, 9)).apply(fwForTest()),
+ "Firewall " + fwForTest() + " should contain the port range 2-9.");
+ }
+
+ @Test
+ public void testHasPortRangeFails() {
+ assertFalse(hasPortRange(Range.closed(11, 15)).apply(fwForTest()),
+ "Firewall " + fwForTest() + " should NOT contain the port range 11-15.");
+ }
+
+ @Test
+ public void testHasSourceTag() {
+ assertTrue(hasSourceTag("tag-1").apply(getFwForTestSourceTags()),
+ "Firewall " + getFwForTestSourceTags() + " should contain the source tag 'tag-1'.");
+ }
+
+ @Test
+ public void testHasSourceTagFails() {
+ assertFalse(hasSourceTag("tag-1").apply(fwForTest()),
+ "Firewall " + fwForTest() + " should NOT contain the source tag 'tag-1'.");
+ }
+
+ @Test
+ public void testHasSourceRange() {
+ assertTrue(hasSourceRange("0.0.0.0/0").apply(fwForTest()),
+ "Firewall " + fwForTest() + " should contain the source range '0.0.0.0/0'.");
+ }
+
+ @Test
+ public void testHasSourceRangeFails() {
+ assertFalse(hasSourceRange("0.0.0.0/0").apply(getFwForTestSourceTags()),
+ "Firewall " + getFwForTestSourceTags() + " should NOT contain the source range '0.0.0.0/0'.");
+ }
+
+ @Test
+ public void testEqualsIpPermission() {
+ IpPermission perm = IpPermission.builder().groupId("tag-1")
+ .fromPort(1).toPort(10).ipProtocol(IpProtocol.TCP).build();
+
+ assertTrue(equalsIpPermission(perm).apply(getFwForTestSourceTagsExact()),
+ "Firewall " + getFwForTestSourceTagsExact() + " should match IpPermission " + perm + " but does not.");
+ }
+
+ @Test
+ public void testEqualsIpPermissionFails() {
+ IpPermission perm = IpPermission.builder().groupId("tag-1")
+ .fromPort(1).toPort(10).ipProtocol(IpProtocol.TCP).build();
+
+ assertFalse(equalsIpPermission(perm).apply(getFwForTestSourceTags()),
+ "Firewall " + getFwForTestSourceTags() + " should not match IpPermission " + perm + " but does.");
+ }
+
+ @Test
+ public void testProvidesIpPermission() {
+ IpPermission perm = IpPermission.builder().groupId("tag-1")
+ .fromPort(1).toPort(10).ipProtocol(IpProtocol.TCP).build();
+
+ assertTrue(providesIpPermission(perm).apply(getFwForTestSourceTagsExact()),
+ "Firewall " + getFwForTestSourceTagsExact() + " should provide IpPermission " + perm + " but does not.");
+
+ assertTrue(providesIpPermission(perm).apply(getFwForTestSourceTags()),
+ "Firewall " + getFwForTestSourceTags() + " should inexactly provide IpPermission " + perm + " but does not.");
+ }
+
+ @Test
+ public void testProvidesIpPermissionFails() {
+ IpPermission perm = IpPermission.builder().groupId("tag-1")
+ .fromPort(1).toPort(10).ipProtocol(IpProtocol.TCP).build();
+
+ assertFalse(providesIpPermission(perm).apply(fwForTest()),
+ "Firewall " + fwForTest() + " should not provide IpPermission " + perm + " but does.");
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthApiMetadataTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthApiMetadataTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthApiMetadataTest.java
new file mode 100644
index 0000000..d6ea17f
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthApiMetadataTest.java
@@ -0,0 +1,38 @@
+/*
+ * 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.oauth.v2;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.reflect.TypeToken;
+import org.jclouds.View;
+import org.jclouds.apis.internal.BaseApiMetadataTest;
+import org.testng.annotations.Test;
+
+/**
+ * Tests that OAuthApiMetadata is properly registered in ServiceLoader
+ * <p/>
+ * <pre>
+ * META-INF/services/org.jclouds.apis.ApiMetadata
+ * </pre>
+ */
+@Test(groups = "unit")
+public class OAuthApiMetadataTest extends BaseApiMetadataTest {
+
+ public OAuthApiMetadataTest() {
+ super(new OAuthApiMetadata(), ImmutableSet.<TypeToken<? extends View>>of());
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java
new file mode 100644
index 0000000..901cdfe
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/OAuthTestUtils.java
@@ -0,0 +1,91 @@
+/*
+ * 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.oauth.v2;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Throwables;
+import com.google.common.io.Files;
+import org.jclouds.oauth.v2.config.CredentialType;
+import org.jclouds.oauth.v2.config.OAuthProperties;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.jclouds.oauth.v2.config.OAuthProperties.AUDIENCE;
+
+/**
+ * Utils for OAuth tests.
+ */
+public class OAuthTestUtils {
+
+ public static Properties defaultProperties(Properties properties) {
+ try {
+ properties = properties == null ? new Properties() : properties;
+ properties.put("oauth.identity", "foo");
+ properties.put("oauth.credential",
+ Files.asCharSource(new File("src/test/resources/testpk.pem"), Charsets.UTF_8).read());
+ properties.put("oauth.endpoint", "http://localhost:5000/o/oauth2/token");
+ properties.put(AUDIENCE, "https://accounts.google.com/o/oauth2/token");
+ return properties;
+ } catch (IOException e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ public static Properties bearerTokenAuthProperties(Properties properties) {
+ properties = properties == null ? new Properties() : properties;
+ properties.put("oauth.identity", "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com");
+ properties.put("oauth.credential", "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M");
+ properties.put("oauth.endpoint", "http://localhost:5000/o/oauth2/token");
+ properties.put(AUDIENCE, "https://accounts.google.com/o/oauth2/token");
+ properties.put(OAuthProperties.CREDENTIAL_TYPE, CredentialType.BEARER_TOKEN_CREDENTIALS.toString());
+ return properties;
+ }
+
+ public static String setCredential(Properties overrides, String key) {
+ String val = null;
+ String credentialFromFile = null;
+ String testKey = "test." + key;
+
+ if (System.getProperties().containsKey(testKey)) {
+ val = System.getProperty(testKey);
+ }
+ checkNotNull(val, String.format("the property %s must be set (pem private key file path or private key as a string)", testKey));
+
+ if (val.startsWith("-----BEGIN")) {
+ return val;
+ }
+
+ try {
+ credentialFromFile = Files.toString(new File(val), Charsets.UTF_8);
+ } catch (IOException e) {
+ throw Throwables.propagate(e);
+ }
+ overrides.setProperty(key, credentialFromFile);
+ return credentialFromFile;
+ }
+
+ public static String getMandatoryProperty(Properties properties, String key) {
+ checkNotNull(properties);
+ checkNotNull(key);
+ String value = properties.getProperty(key);
+ return checkNotNull(value, String.format("mandatory property %s or test.%s was not present", key, key));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/features/OAuthApiExpectTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/features/OAuthApiExpectTest.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/features/OAuthApiExpectTest.java
new file mode 100644
index 0000000..2008e5d
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/test/java/org/jclouds/oauth/v2/features/OAuthApiExpectTest.java
@@ -0,0 +1,99 @@
+/*
+ * 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.oauth.v2.features;
+
+import static com.google.common.base.Charsets.UTF_8;
+import static com.google.common.io.BaseEncoding.base64Url;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+import java.util.Properties;
+
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.http.HttpRequest;
+import org.jclouds.http.HttpResponse;
+import org.jclouds.oauth.v2.OAuthApi;
+import org.jclouds.oauth.v2.OAuthTestUtils;
+import org.jclouds.oauth.v2.domain.ClaimSet;
+import org.jclouds.oauth.v2.domain.Header;
+import org.jclouds.oauth.v2.domain.Token;
+import org.jclouds.oauth.v2.domain.TokenRequest;
+import org.jclouds.oauth.v2.internal.BaseOAuthApiExpectTest;
+import org.testng.annotations.Test;
+
+/**
+ * Tests that a token requess is well formed.
+ */
+@Test(groups = "unit")
+public class OAuthApiExpectTest extends BaseOAuthApiExpectTest {
+
+ private static final String header = "{\"alg\":\"RS256\",\"typ\":\"JWT\"}";
+
+ private static final String claims = "{\"iss\":\"761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer" +
+ ".gserviceaccount.com\"," +
+ "\"scope\":\"https://www.googleapis.com/auth/prediction\",\"aud\":\"https://accounts.google" +
+ ".com/o/oauth2/token\",\"exp\":1328573381,\"iat\":1328569781}";
+
+ private static final Token TOKEN = new Token.Builder().accessToken
+ ("1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M").tokenType("Bearer").expiresIn(3600).build();
+
+ private static final ClaimSet CLAIM_SET = new ClaimSet.Builder().addClaim("iss",
+ "761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer" +
+ ".gserviceaccount.com")
+ .addClaim("scope", "https://www.googleapis.com/auth/prediction")
+ .addClaim("aud", "https://accounts.google.com/o/oauth2/token")
+ .expirationTime(1328573381)
+ .emissionTime(1328569781).build();
+
+ private static final Header HEADER = new Header.Builder().signerAlgorithm("RS256").type("JWT").build();
+
+ private static final String URL_ENCODED_TOKEN_REQUEST =
+ "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&" +
+ // Base64 Encoded Header
+ "assertion=" + base64Url().omitPadding().encode(header.getBytes(UTF_8)) + "." +
+ // Base64 Encoded Claims
+ base64Url().omitPadding().encode(claims.getBytes(UTF_8)) + "." +
+ // Base64 encoded {header}.{claims} signature (using SHA256)
+ "W2Lesr_98AzVYiMbzxFqmwcOjpIWlwqkC6pNn1fXND9oSDNNnFhy-AAR6DKH-x9ZmxbY80" +
+ "R5fH-OCeWumXlVgceKN8Z2SmgQsu8ElTpypQA54j_5j8vUImJ5hsOUYPeyF1U2BUzZ3L5g" +
+ "03PXBA0YWwRU9E1ChH28dQBYuGiUmYw";
+
+ private static final HttpRequest TOKEN_REQUEST = HttpRequest.builder()
+ .method("POST")
+ .endpoint(URI.create("http://localhost:5000/o/oauth2/token"))
+ .addHeader("Accept", MediaType.APPLICATION_JSON)
+ .payload(payloadFromStringWithContentType(URL_ENCODED_TOKEN_REQUEST, "application/x-www-form-urlencoded"))
+ .build();
+
+ private static final HttpResponse TOKEN_RESPONSE = HttpResponse.builder().statusCode(200).payload(
+ payloadFromString("{\n" +
+ " \"access_token\" : \"1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M\",\n" +
+ " \"token_type\" : \"Bearer\",\n" +
+ " \"expires_in\" : 3600\n" +
+ "}")).build();
+
+ @Override
+ protected Properties setupProperties() {
+ return OAuthTestUtils.defaultProperties(super.setupProperties());
+ }
+
+ public void testGenerateJWTRequest() {
+ OAuthApi api = requestSendsResponse(TOKEN_REQUEST, TOKEN_RESPONSE);
+ assertEquals(api.authenticate(new TokenRequest(HEADER, CLAIM_SET)), TOKEN);
+ }
+}