github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/cloud/regions_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package cloud_test 5 6 import ( 7 "encoding/json" 8 9 "github.com/juju/cmd/cmdtesting" 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/cmd/juju/cloud" 14 _ "github.com/juju/juju/provider/all" 15 "github.com/juju/juju/testing" 16 ) 17 18 type regionsSuite struct { 19 testing.FakeJujuXDGDataHomeSuite 20 } 21 22 var _ = gc.Suite(®ionsSuite{}) 23 24 func (s *regionsSuite) TestListRegionsInvalidCloud(c *gc.C) { 25 _, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "invalid") 26 c.Assert(err, gc.ErrorMatches, "cloud invalid not found") 27 } 28 29 func (s *regionsSuite) TestListRegionsInvalidArgs(c *gc.C) { 30 _, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "aws", "another") 31 c.Assert(err, gc.ErrorMatches, `unrecognized args: \["another"\]`) 32 } 33 34 func (s *regionsSuite) TestListRegions(c *gc.C) { 35 ctx, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "aws") 36 c.Assert(err, jc.ErrorIsNil) 37 out := cmdtesting.Stdout(ctx) 38 c.Assert(out, jc.DeepEquals, ` 39 us-east-1 40 us-east-2 41 us-west-1 42 us-west-2 43 ca-central-1 44 eu-west-1 45 eu-west-2 46 eu-west-3 47 eu-central-1 48 ap-south-1 49 ap-southeast-1 50 ap-southeast-2 51 ap-northeast-1 52 ap-northeast-2 53 sa-east-1 54 55 `[1:]) 56 } 57 58 func (s *regionsSuite) TestListRegionsBuiltInCloud(c *gc.C) { 59 ctx, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "localhost") 60 c.Assert(err, jc.ErrorIsNil) 61 out := cmdtesting.Stdout(ctx) 62 c.Assert(out, jc.DeepEquals, "localhost\n\n") 63 } 64 65 func (s *regionsSuite) TestListRegionsYaml(c *gc.C) { 66 ctx, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "aws", "--format", "yaml") 67 c.Assert(err, jc.ErrorIsNil) 68 out := cmdtesting.Stdout(ctx) 69 c.Assert(out, jc.DeepEquals, ` 70 us-east-1: 71 endpoint: https://ec2.us-east-1.amazonaws.com 72 us-east-2: 73 endpoint: https://ec2.us-east-2.amazonaws.com 74 us-west-1: 75 endpoint: https://ec2.us-west-1.amazonaws.com 76 us-west-2: 77 endpoint: https://ec2.us-west-2.amazonaws.com 78 ca-central-1: 79 endpoint: https://ec2.ca-central-1.amazonaws.com 80 eu-west-1: 81 endpoint: https://ec2.eu-west-1.amazonaws.com 82 eu-west-2: 83 endpoint: https://ec2.eu-west-2.amazonaws.com 84 eu-west-3: 85 endpoint: https://ec2.eu-west-3.amazonaws.com 86 eu-central-1: 87 endpoint: https://ec2.eu-central-1.amazonaws.com 88 ap-south-1: 89 endpoint: https://ec2.ap-south-1.amazonaws.com 90 ap-southeast-1: 91 endpoint: https://ec2.ap-southeast-1.amazonaws.com 92 ap-southeast-2: 93 endpoint: https://ec2.ap-southeast-2.amazonaws.com 94 ap-northeast-1: 95 endpoint: https://ec2.ap-northeast-1.amazonaws.com 96 ap-northeast-2: 97 endpoint: https://ec2.ap-northeast-2.amazonaws.com 98 sa-east-1: 99 endpoint: https://ec2.sa-east-1.amazonaws.com 100 `[1:]) 101 } 102 103 func (s *regionsSuite) TestListGCERegions(c *gc.C) { 104 ctx, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "google") 105 c.Assert(err, jc.ErrorIsNil) 106 out := cmdtesting.Stdout(ctx) 107 c.Assert(out, jc.DeepEquals, ` 108 us-east1 109 us-east4 110 us-central1 111 us-west1 112 us-west2 113 asia-east1 114 asia-east2 115 asia-northeast1 116 asia-south1 117 asia-southeast1 118 australia-southeast1 119 europe-north1 120 europe-west1 121 europe-west2 122 europe-west3 123 europe-west4 124 northamerica-northeast1 125 southamerica-east1 126 127 `[1:]) 128 } 129 130 func (s *regionsSuite) TestListGCERegionsYaml(c *gc.C) { 131 ctx, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "google", "--format", "yaml") 132 c.Assert(err, jc.ErrorIsNil) 133 out := cmdtesting.Stdout(ctx) 134 c.Assert(out, jc.DeepEquals, ` 135 us-east1: 136 endpoint: https://www.googleapis.com 137 us-east4: 138 endpoint: https://www.googleapis.com 139 us-central1: 140 endpoint: https://www.googleapis.com 141 us-west1: 142 endpoint: https://www.googleapis.com 143 us-west2: 144 endpoint: https://www.googleapis.com 145 asia-east1: 146 endpoint: https://www.googleapis.com 147 asia-east2: 148 endpoint: https://www.googleapis.com 149 asia-northeast1: 150 endpoint: https://www.googleapis.com 151 asia-south1: 152 endpoint: https://www.googleapis.com 153 asia-southeast1: 154 endpoint: https://www.googleapis.com 155 australia-southeast1: 156 endpoint: https://www.googleapis.com 157 europe-north1: 158 endpoint: https://www.googleapis.com 159 europe-west1: 160 endpoint: https://www.googleapis.com 161 europe-west2: 162 endpoint: https://www.googleapis.com 163 europe-west3: 164 endpoint: https://www.googleapis.com 165 europe-west4: 166 endpoint: https://www.googleapis.com 167 northamerica-northeast1: 168 endpoint: https://www.googleapis.com 169 southamerica-east1: 170 endpoint: https://www.googleapis.com 171 `[1:]) 172 } 173 174 type regionDetails struct { 175 Endpoint string `json:"endpoint"` 176 IdentityEndpoint string `json:"identity-endpoint"` 177 StorageEndpoint string `json:"storage-endpoint"` 178 } 179 180 func (s *regionsSuite) TestListRegionsJson(c *gc.C) { 181 ctx, err := cmdtesting.RunCommand(c, cloud.NewListRegionsCommand(), "azure", "--format", "json") 182 c.Assert(err, jc.ErrorIsNil) 183 out := cmdtesting.Stdout(ctx) 184 var data map[string]regionDetails 185 err = json.Unmarshal([]byte(out), &data) 186 c.Assert(err, jc.ErrorIsNil) 187 c.Assert(data, jc.DeepEquals, map[string]regionDetails{ 188 "centralus": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 189 "eastus": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 190 "eastus2": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 191 "northcentralus": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 192 "southcentralus": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 193 "westcentralus": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 194 "westus": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 195 "westus2": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 196 "northeurope": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 197 "westeurope": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 198 "eastasia": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 199 "southeastasia": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 200 "japaneast": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 201 "japanwest": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 202 "brazilsouth": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 203 "australiaeast": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 204 "australiasoutheast": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 205 "centralindia": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 206 "southindia": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 207 "westindia": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 208 "canadacentral": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 209 "canadaeast": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 210 "uksouth": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 211 "ukwest": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 212 "koreacentral": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 213 "koreasouth": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 214 "francecentral": {Endpoint: "https://management.azure.com", IdentityEndpoint: "https://graph.windows.net", StorageEndpoint: "https://core.windows.net"}, 215 }) 216 }