github.com/franciscocpg/up@v0.1.10/config_test.go (about)

     1  package up
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/tj/assert"
     7  )
     8  
     9  func TestConfig_Name(t *testing.T) {
    10  	t.Run("valid", func(t *testing.T) {
    11  		c := Config{
    12  			Name: "my-app123",
    13  		}
    14  
    15  		assert.NoError(t, c.Default(), "default")
    16  		assert.NoError(t, c.Validate(), "validate")
    17  	})
    18  
    19  	t.Run("invalid", func(t *testing.T) {
    20  		c := Config{
    21  			Name: "my app",
    22  		}
    23  
    24  		assert.NoError(t, c.Default(), "default")
    25  		assert.EqualError(t, c.Validate(), `.name "my app": must contain only alphanumeric characters and '-'`)
    26  	})
    27  }
    28  
    29  func TestConfig_Type(t *testing.T) {
    30  	t.Run("default", func(t *testing.T) {
    31  		c := Config{
    32  			Name: "api",
    33  		}
    34  
    35  		assert.NoError(t, c.Default(), "default")
    36  		assert.NoError(t, c.Validate(), "validate")
    37  		assert.Equal(t, "server", c.Type)
    38  	})
    39  
    40  	t.Run("valid", func(t *testing.T) {
    41  		c := Config{
    42  			Name: "api",
    43  			Type: "server",
    44  		}
    45  
    46  		assert.NoError(t, c.Default(), "default")
    47  		assert.NoError(t, c.Validate(), "validate")
    48  	})
    49  
    50  	t.Run("invalid", func(t *testing.T) {
    51  		c := Config{
    52  			Name: "api",
    53  			Type: "something",
    54  		}
    55  
    56  		assert.NoError(t, c.Default(), "default")
    57  		assert.EqualError(t, c.Validate(), `.type: "something" is invalid, must be one of:
    58  
    59    • static
    60    • server`)
    61  	})
    62  }
    63  
    64  func TestConfig_Regions(t *testing.T) {
    65  	t.Run("valid multiple", func(t *testing.T) {
    66  		c := Config{
    67  			Name:    "api",
    68  			Type:    "server",
    69  			Regions: []string{"us-west-2", "us-east-1"},
    70  		}
    71  
    72  		assert.NoError(t, c.Default(), "default")
    73  		assert.NoError(t, c.Validate(), "validate")
    74  	})
    75  
    76  	t.Run("valid globbing", func(t *testing.T) {
    77  		c := Config{
    78  			Name:    "api",
    79  			Type:    "server",
    80  			Regions: []string{"us-*", "us-east-1", "ca-central-*"},
    81  		}
    82  
    83  		assert.NoError(t, c.Default(), "default")
    84  		assert.NoError(t, c.Validate(), "validate")
    85  		assert.Equal(t, []string{"us-east-1", "us-west-2", "us-east-2", "us-west-1", "us-east-1", "ca-central-1"}, c.Regions)
    86  	})
    87  
    88  	t.Run("invalid globbing", func(t *testing.T) {
    89  		c := Config{
    90  			Name:    "api",
    91  			Type:    "server",
    92  			Regions: []string{"uss-*"},
    93  		}
    94  
    95  		assert.NoError(t, c.Default(), "default")
    96  
    97  		assert.EqualError(t, c.Validate(), `.regions: "uss-*" is invalid, must be one of:
    98  
    99    • us-east-1
   100    • us-west-2
   101    • eu-west-1
   102    • eu-central-1
   103    • ap-northeast-1
   104    • ap-southeast-1
   105    • ap-southeast-2
   106    • us-east-2
   107    • us-west-1
   108    • ap-northeast-2
   109    • ap-south-1
   110    • sa-east-1
   111    • ca-central-1`)
   112  	})
   113  
   114  	t.Run("invalid", func(t *testing.T) {
   115  		c := Config{
   116  			Name:    "api",
   117  			Type:    "server",
   118  			Regions: []string{"us-west-1", "us-west-9"},
   119  		}
   120  
   121  		assert.NoError(t, c.Default(), "default")
   122  
   123  		assert.EqualError(t, c.Validate(), `.regions: "us-west-9" is invalid, must be one of:
   124  
   125    • us-east-1
   126    • us-west-2
   127    • eu-west-1
   128    • eu-central-1
   129    • ap-northeast-1
   130    • ap-southeast-1
   131    • ap-southeast-2
   132    • us-east-2
   133    • us-west-1
   134    • ap-northeast-2
   135    • ap-south-1
   136    • sa-east-1
   137    • ca-central-1`)
   138  	})
   139  }