github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/command/agent/consul/self_test.go (about) 1 package consul 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/nomad/ci" 7 "github.com/stretchr/testify/require" 8 ) 9 10 var ( 11 ossFeatures = Features{ 12 Enterprise: false, 13 Namespaces: false, 14 } 15 ) 16 17 func TestSelf_SKU(t *testing.T) { 18 ci.Parallel(t) 19 20 t.Run("oss", func(t *testing.T) { 21 s, ok := SKU(Self{ 22 "Config": {"Version": "v1.9.5"}, 23 }) 24 require.True(t, ok) 25 require.Equal(t, "oss", s) 26 }) 27 28 t.Run("oss dev", func(t *testing.T) { 29 s, ok := SKU(Self{ 30 "Config": {"Version": "v1.9.5-dev"}, 31 }) 32 require.True(t, ok) 33 require.Equal(t, "oss", s) 34 }) 35 36 t.Run("ent", func(t *testing.T) { 37 s, ok := SKU(Self{ 38 "Config": {"Version": "v1.9.5+ent"}, 39 }) 40 require.True(t, ok) 41 require.Equal(t, "ent", s) 42 }) 43 44 t.Run("ent dev", func(t *testing.T) { 45 s, ok := SKU(Self{ 46 "Config": {"Version": "v1.9.5+ent-dev"}, 47 }) 48 require.True(t, ok) 49 require.Equal(t, "ent", s) 50 }) 51 52 t.Run("missing", func(t *testing.T) { 53 _, ok := SKU(Self{ 54 "Config": {}, 55 }) 56 require.False(t, ok) 57 }) 58 59 t.Run("malformed", func(t *testing.T) { 60 _, ok := SKU(Self{ 61 "Config": {"Version": "***"}, 62 }) 63 require.False(t, ok) 64 }) 65 } 66 67 func TestSelf_Namespaces(t *testing.T) { 68 ci.Parallel(t) 69 70 t.Run("supports namespaces", func(t *testing.T) { 71 enabled := Namespaces(Self{ 72 "Stats": {"license": map[string]interface{}{"features": "Automated Backups, Automated Upgrades, Enhanced Read Scalability, Network Segments, Redundancy Zone, Advanced Network Federation, Namespaces, SSO, Audit Logging"}}, 73 }) 74 require.True(t, enabled) 75 }) 76 77 t.Run("no namespaces", func(t *testing.T) { 78 enabled := Namespaces(Self{ 79 "Stats": {"license": map[string]interface{}{"features": "Automated Backups, Automated Upgrades, Enhanced Read Scalability, Network Segments, Redundancy Zone, Advanced Network Federation, SSO, Audit Logging"}}, 80 }) 81 require.False(t, enabled) 82 }) 83 84 t.Run("stats missing", func(t *testing.T) { 85 enabled := Namespaces(Self{}) 86 require.False(t, enabled) 87 }) 88 89 t.Run("license missing", func(t *testing.T) { 90 enabled := Namespaces(Self{"Stats": {}}) 91 require.False(t, enabled) 92 }) 93 94 t.Run("features missing", func(t *testing.T) { 95 enabled := Namespaces(Self{"Stats": {"license": map[string]interface{}{}}}) 96 require.False(t, enabled) 97 }) 98 }