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(&regionsSuite{})
    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  }