github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/client/cli/namespace/namespace_test.go (about)

     1  package namespace
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/tickoalcantara12/micro/v3/service/registry"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestNamespace(t *testing.T) {
    13  	envName := fmt.Sprintf("test-%v", time.Now().UnixNano())
    14  	namespace := "foo"
    15  
    16  	t.Run("ListEmptyEnv", func(t *testing.T) {
    17  		vals, err := List("")
    18  		assert.Error(t, err, "Listing from a blank env should an error")
    19  		assert.Nil(t, vals, "Listing from a blank env should not return namespaces")
    20  	})
    21  
    22  	t.Run("ListNewEnv", func(t *testing.T) {
    23  		vals, err := List(envName)
    24  		assert.Nilf(t, err, "Listing from a new env should not return an error")
    25  		assert.Lenf(t, vals, 1, "Listing from a new env should return a single result")
    26  		assert.Contains(t, vals, registry.DefaultDomain, "Listing from a new env should return the default namespace")
    27  	})
    28  
    29  	t.Run("AddEmptyEnv", func(t *testing.T) {
    30  		err := Add("one", "")
    31  		assert.Error(t, err, "Adding a namespace to an empty environment should return an error")
    32  	})
    33  
    34  	t.Run("AddEmptyNamespace", func(t *testing.T) {
    35  		err := Add("", envName)
    36  		assert.Error(t, err, "Adding an empty namespace to an environment should return an error")
    37  	})
    38  
    39  	t.Run("AddValidNamespace", func(t *testing.T) {
    40  		err := Add(namespace, envName)
    41  		assert.Nil(t, err, "Adding a valid namespace to an environment should not return an error")
    42  	})
    43  
    44  	t.Run("AddDuplicateNamespace", func(t *testing.T) {
    45  		err := Add(namespace, envName)
    46  		assert.Nil(t, err, "Adding a duplicate namespace to an environment should not return an error")
    47  	})
    48  
    49  	t.Run("ListPopulatedEnv", func(t *testing.T) {
    50  		vals, err := List(envName)
    51  		assert.Nilf(t, err, "Listing from a populated env should not return an error")
    52  		assert.Lenf(t, vals, 2, "Listing from a populated env should return the correct number of results")
    53  		assert.Contains(t, vals, registry.DefaultDomain, "Listing from a new env should return the default namespace")
    54  		assert.Contains(t, vals, namespace, "Listing from a new env should return the added namespaces")
    55  	})
    56  
    57  	t.Run("GetBlankEnv", func(t *testing.T) {
    58  		ns, err := Get("")
    59  		assert.Error(t, err, "Getting from a blank env should an error")
    60  		assert.Len(t, ns, 0, "Getting from a blank env should not return a namespace")
    61  	})
    62  
    63  	t.Run("GetUnsetEnv", func(t *testing.T) {
    64  		ns, err := Get(envName)
    65  		assert.Nil(t, err, "Getting an unset env should not error")
    66  		assert.Equal(t, registry.DefaultDomain, ns, "Getting from an unset env should return the default namespace")
    67  	})
    68  
    69  	t.Run("SetBlankEnv", func(t *testing.T) {
    70  		err := Set(namespace, "")
    71  		assert.Error(t, err, "Setting the namespace of a blank env should an error")
    72  	})
    73  
    74  	t.Run("SetBlankNamespace", func(t *testing.T) {
    75  		err := Set("", envName)
    76  		assert.Error(t, err, "Setting a blank namespace should an error")
    77  	})
    78  
    79  	t.Run("SetInvalidNamespace", func(t *testing.T) {
    80  		err := Set("notavalidns", envName)
    81  		assert.Error(t, err, "Setting an unknown namespace should error")
    82  	})
    83  
    84  	t.Run("SetValidNamespace", func(t *testing.T) {
    85  		err := Set(namespace, envName)
    86  		assert.Nil(t, err, "Setting a valid namespace should not error")
    87  	})
    88  
    89  	t.Run("GetSetEnv", func(t *testing.T) {
    90  		ns, err := Get(envName)
    91  		assert.Nil(t, err, "Getting a set namespace should not error")
    92  		assert.Equal(t, namespace, ns, "Getting a set namespace should return the correct value")
    93  	})
    94  
    95  	t.Run("RemoveEmptyEnv", func(t *testing.T) {
    96  		err := Remove("one", "")
    97  		assert.Error(t, err, "Removing a namespace from an empty environment should return an error")
    98  	})
    99  
   100  	t.Run("RemoveEmptyNamespace", func(t *testing.T) {
   101  		err := Remove("", envName)
   102  		assert.Error(t, err, "Removing an empty namespace from an environment should return an error")
   103  	})
   104  
   105  	t.Run("RemoveDefaultNamespace", func(t *testing.T) {
   106  		err := Remove(registry.DefaultDomain, envName)
   107  		assert.Error(t, err, "Removing the default namespace from an environment should return an error")
   108  	})
   109  
   110  	t.Run("RemoveSetNamespace", func(t *testing.T) {
   111  		err := Remove(namespace, envName)
   112  		assert.Nil(t, err, "Removing a namespace which is currently set should not error")
   113  	})
   114  
   115  	t.Run("SetDefaultNamespace", func(t *testing.T) {
   116  		err := Set(registry.DefaultDomain, envName)
   117  		assert.Nil(t, err, "Setting the default namespace should not error")
   118  	})
   119  
   120  	// Adding and setting valid namesapce again to test removal
   121  	t.Run("AddValidNamespace", func(t *testing.T) {
   122  		err := Add(namespace, envName)
   123  		assert.Nil(t, err, "Adding a valid namespace to an environment should not return an error")
   124  	})
   125  
   126  	t.Run("SetValidNamespace", func(t *testing.T) {
   127  		err := Set(namespace, envName)
   128  		assert.Nil(t, err, "Setting a valid namespace should not error")
   129  	})
   130  
   131  	t.Run("RemoveValidNamespace", func(t *testing.T) {
   132  		err := Remove(namespace, envName)
   133  		assert.Nil(t, err, "Removing a valid namespace from an environment should not return an error")
   134  	})
   135  
   136  	t.Run("GetOverridenNamespace", func(t *testing.T) {
   137  		ns, err := Get(envName)
   138  		assert.Nil(t, err, "Getting an overriden namespace should not return an error")
   139  		assert.Equal(t, registry.DefaultDomain, ns, "Getting an overriden namespace should return the correct value")
   140  	})
   141  }