github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/registrar/registrar_test.go (about) 1 package registrar_test 2 3 import ( 4 "testing" 5 6 "github.com/containers/podman/v2/pkg/registrar" 7 . "github.com/containers/podman/v2/test/framework" 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 ) 11 12 // TestRegistrar runs the created specs 13 func TestRegistrar(t *testing.T) { 14 RegisterFailHandler(Fail) 15 RunSpecs(t, "Registrar") 16 } 17 18 // nolint: gochecknoglobals 19 var t *TestFramework 20 21 var _ = BeforeSuite(func() { 22 t = NewTestFramework(NilFunc, NilFunc) 23 t.Setup() 24 }) 25 26 var _ = AfterSuite(func() { 27 t.Teardown() 28 }) 29 30 // The actual test suite 31 var _ = t.Describe("Registrar", func() { 32 // Constant test data needed by some tests 33 const ( 34 testKey = "testKey" 35 testName = "testName" 36 anotherKey = "anotherKey" 37 ) 38 39 // The system under test 40 var sut *registrar.Registrar 41 42 // Prepare the system under test and register a test name and key before 43 // each test 44 BeforeEach(func() { 45 sut = registrar.NewRegistrar() 46 Expect(sut.Reserve(testName, testKey)).To(BeNil()) 47 }) 48 49 t.Describe("Reserve", func() { 50 It("should succeed to reserve a new registrar", func() { 51 // Given 52 // When 53 err := sut.Reserve("name", "key") 54 55 // Then 56 Expect(err).To(BeNil()) 57 }) 58 59 It("should succeed to reserve a registrar twice", func() { 60 // Given 61 // When 62 err := sut.Reserve(testName, testKey) 63 64 // Then 65 Expect(err).To(BeNil()) 66 }) 67 68 It("should fail to reserve an already reserved registrar", func() { 69 // Given 70 // When 71 err := sut.Reserve(testName, anotherKey) 72 73 // Then 74 Expect(err).NotTo(BeNil()) 75 Expect(err).To(Equal(registrar.ErrNameReserved)) 76 }) 77 }) 78 79 t.Describe("Release", func() { 80 It("should succeed to release a registered registrar multiple times", func() { 81 // Given 82 // When 83 // Then 84 sut.Release(testName) 85 sut.Release(testName) 86 }) 87 88 It("should succeed to release a unknown registrar multiple times", func() { 89 // Given 90 // When 91 // Then 92 sut.Release(anotherKey) 93 sut.Release(anotherKey) 94 }) 95 96 It("should succeed to release and re-register a registrar", func() { 97 // Given 98 // When 99 sut.Release(testName) 100 err := sut.Reserve(testName, testKey) 101 102 // Then 103 Expect(err).To(BeNil()) 104 }) 105 }) 106 107 t.Describe("GetNames", func() { 108 It("should succeed to retrieve a single name for a registrar", func() { 109 // Given 110 // When 111 names, err := sut.GetNames(testKey) 112 113 // Then 114 Expect(err).To(BeNil()) 115 Expect(len(names)).To(Equal(1)) 116 Expect(names[0]).To(Equal(testName)) 117 }) 118 119 It("should succeed to retrieve all names for a registrar", func() { 120 // Given 121 testNames := []string{"test1", "test2"} 122 for _, name := range testNames { 123 Expect(sut.Reserve(name, anotherKey)).To(BeNil()) 124 } 125 126 // When 127 names, err := sut.GetNames(anotherKey) 128 129 // Then 130 Expect(err).To(BeNil()) 131 Expect(len(names)).To(Equal(2)) 132 Expect(names).To(Equal(testNames)) 133 }) 134 }) 135 136 t.Describe("GetNames", func() { 137 It("should succeed to retrieve a single name for a registrar", func() { 138 // Given 139 // When 140 names, err := sut.GetNames(testKey) 141 142 // Then 143 Expect(err).To(BeNil()) 144 Expect(len(names)).To(Equal(1)) 145 Expect(names[0]).To(Equal(testName)) 146 }) 147 148 It("should succeed to retrieve all names for a registrar", func() { 149 // Given 150 anotherKey := "anotherKey" 151 testNames := []string{"test1", "test2"} 152 for _, name := range testNames { 153 Expect(sut.Reserve(name, anotherKey)).To(BeNil()) 154 } 155 156 // When 157 names, err := sut.GetNames(anotherKey) 158 159 // Then 160 Expect(err).To(BeNil()) 161 Expect(len(names)).To(Equal(2)) 162 Expect(names).To(Equal(testNames)) 163 }) 164 }) 165 166 t.Describe("Delete", func() { 167 It("should succeed to delete a registrar", func() { 168 // Given 169 // When 170 sut.Delete(testKey) 171 172 // Then 173 names, err := sut.GetNames(testKey) 174 Expect(len(names)).To(BeZero()) 175 Expect(err).To(Equal(registrar.ErrNoSuchKey)) 176 }) 177 }) 178 179 t.Describe("Get", func() { 180 It("should succeed to get a key for a registrar", func() { 181 // Given 182 // When 183 key, err := sut.Get(testName) 184 185 // Then 186 Expect(err).To(BeNil()) 187 Expect(key).To(Equal(testKey)) 188 }) 189 190 It("should fail to get a key for a not existing registrar", func() { 191 // Given 192 // When 193 key, err := sut.Get("notExistingName") 194 195 // Then 196 Expect(key).To(BeEmpty()) 197 Expect(err).To(Equal(registrar.ErrNameNotReserved)) 198 }) 199 }) 200 201 t.Describe("GetAll", func() { 202 It("should succeed to get all names", func() { 203 // Given 204 // When 205 names := sut.GetAll() 206 207 // Then 208 Expect(len(names)).To(Equal(1)) 209 Expect(len(names[testKey])).To(Equal(1)) 210 Expect(names[testKey][0]).To(Equal(testName)) 211 }) 212 }) 213 })