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  }