github.com/jalateras/up@v0.1.5/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 }