| package namespace |
|
|
| import ( |
| "context" |
| "sync" |
| "testing" |
|
|
| "github.com/stretchr/testify/assert" |
| "github.com/stretchr/testify/require" |
| ) |
|
|
| func newFakeHandler() *fakeHandler { |
| return &fakeHandler{ |
| namespaces: map[string]bool{}, |
| } |
| } |
|
|
| type fakeHandler struct { |
| namespaces map[string]bool |
|
|
| mu sync.Mutex |
| } |
|
|
| func (h *fakeHandler) CreateNamespace(_ context.Context, name string) error { |
| h.mu.Lock() |
| defer h.mu.Unlock() |
|
|
| h.namespaces[name] = true |
|
|
| return nil |
| } |
|
|
| func (h *fakeHandler) DeleteNamespace(_ context.Context, name string) error { |
| h.mu.Lock() |
| defer h.mu.Unlock() |
|
|
| delete(h.namespaces, name) |
|
|
| return nil |
| } |
|
|
| func TestManager_CreateNamespce(t *testing.T) { |
| handler := newFakeHandler() |
|
|
| manager, err := NewManager(ManagerConfig{ |
| Handlers: []Handler{handler}, |
| DefaultNamespace: "default", |
| }) |
| require.NoError(t, err) |
|
|
| const namespace = "my-namespace" |
|
|
| err = manager.CreateNamespace(context.Background(), namespace) |
| require.NoError(t, err) |
|
|
| assert.True(t, handler.namespaces[namespace]) |
| } |
|
|
| func TestManager_CreateDefaultNamespce(t *testing.T) { |
| handler := newFakeHandler() |
|
|
| manager, err := NewManager(ManagerConfig{ |
| Handlers: []Handler{handler}, |
| DefaultNamespace: "default", |
| }) |
| require.NoError(t, err) |
|
|
| err = manager.CreateDefaultNamespace(context.Background()) |
| require.NoError(t, err) |
|
|
| assert.True(t, handler.namespaces["default"]) |
| } |
|
|
| func TestManager_DeleteNamespce(t *testing.T) { |
| handler := newFakeHandler() |
|
|
| manager, err := NewManager(ManagerConfig{ |
| Handlers: []Handler{handler}, |
| DefaultNamespace: "default", |
| }) |
| require.NoError(t, err) |
|
|
| const namespace = "my-namespace" |
|
|
| err = manager.CreateNamespace(context.Background(), namespace) |
| require.NoError(t, err) |
|
|
| assert.True(t, handler.namespaces[namespace]) |
|
|
| err = manager.DeleteNamespace(context.Background(), namespace) |
| require.NoError(t, err) |
|
|
| assert.False(t, handler.namespaces[namespace]) |
| } |
|
|
| func TestManager_Register(t *testing.T) { |
| handler := newFakeHandler() |
| handler2 := newFakeHandler() |
|
|
| manager, err := NewManager(ManagerConfig{ |
| Handlers: []Handler{handler}, |
| DefaultNamespace: "default", |
| }) |
| require.NoError(t, err) |
|
|
| err = manager.RegisterHandler(handler2) |
| require.NoError(t, err) |
|
|
| const namespace = "my-namespace" |
|
|
| err = manager.CreateNamespace(context.Background(), namespace) |
| require.NoError(t, err) |
|
|
| assert.True(t, handler.namespaces[namespace]) |
| assert.True(t, handler2.namespaces[namespace]) |
|
|
| err = manager.DeleteNamespace(context.Background(), namespace) |
| require.NoError(t, err) |
|
|
| assert.False(t, handler.namespaces[namespace]) |
| assert.False(t, handler2.namespaces[namespace]) |
| } |
|
|