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 }