229 lines
6.0 KiB
Go
229 lines
6.0 KiB
Go
package configmaps
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var drivertype = "file"
|
|
|
|
var opts map[string]string
|
|
|
|
func setup() (*ConfigMapManager, string, error) {
|
|
testpath, err := ioutil.TempDir("", "cmdata")
|
|
if err != nil {
|
|
return nil, "", err
|
|
}
|
|
manager, err := NewManager(testpath)
|
|
opts = map[string]string{"path": testpath}
|
|
return manager, testpath, err
|
|
}
|
|
|
|
func cleanup(testpath string) {
|
|
os.RemoveAll(testpath)
|
|
}
|
|
|
|
func TestAddSecretAndLookupData(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
_, err = manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.lookupConfigMap("myconfigmap")
|
|
require.NoError(t, err)
|
|
|
|
_, data, err := manager.LookupConfigMapData("myconfigmap")
|
|
require.NoError(t, err)
|
|
if !bytes.Equal(data, []byte("mydata")) {
|
|
t.Errorf("error: configmap data not equal")
|
|
}
|
|
}
|
|
|
|
func TestAddConfigMapName(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
// test one char configmap name
|
|
_, err = manager.Store("a", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.lookupConfigMap("a")
|
|
require.NoError(t, err)
|
|
|
|
// name too short
|
|
_, err = manager.Store("", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
// name too long
|
|
_, err = manager.Store("uatqsbssrapurkuqoapubpifvsrissslzjehalxcesbhpxcvhsozlptrmngrivaiz", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
// invalid chars
|
|
_, err = manager.Store("??", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
_, err = manager.Store("-a", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
_, err = manager.Store("a-", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
_, err = manager.Store(".a", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
_, err = manager.Store("a.", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestAddMultipleConfigMaps(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
id, err := manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
id2, err := manager.Store("myconfigmap2", []byte("mydata2"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
configmaps, err := manager.List()
|
|
require.NoError(t, err)
|
|
require.Len(t, configmaps, 2)
|
|
|
|
_, err = manager.lookupConfigMap("myconfigmap")
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.lookupConfigMap("myconfigmap2")
|
|
require.NoError(t, err)
|
|
|
|
_, data, err := manager.LookupConfigMapData(id)
|
|
require.NoError(t, err)
|
|
if !bytes.Equal(data, []byte("mydata")) {
|
|
t.Errorf("error: configmap data not equal")
|
|
}
|
|
|
|
_, data2, err := manager.LookupConfigMapData(id2)
|
|
require.NoError(t, err)
|
|
if !bytes.Equal(data2, []byte("mydata2")) {
|
|
t.Errorf("error: configmap data not equal")
|
|
}
|
|
}
|
|
|
|
func TestAddConfigMapDupName(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
_, err = manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestAddConfigMapPrefix(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
// If the randomly generated configmap id is something like "abcdeiuoergnadufigh"
|
|
// we should still allow someone to store a configmap with the name "abcd" or "a"
|
|
configmapID, err := manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.Store(configmapID[0:5], []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestRemoveConfigMap(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
_, err = manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.lookupConfigMap("myconfigmap")
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.Delete("myconfigmap")
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.lookupConfigMap("myconfigmap")
|
|
require.Error(t, err)
|
|
|
|
_, _, err = manager.LookupConfigMapData("myconfigmap")
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestRemoveConfigMapNoExist(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
_, err = manager.Delete("myconfigmap")
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestLookupAllConfigMaps(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
id, err := manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
// inspect using configmap name
|
|
lookup, err := manager.Lookup("myconfigmap")
|
|
require.NoError(t, err)
|
|
require.Equal(t, lookup.ID, id)
|
|
}
|
|
|
|
func TestInspectConfigMapId(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
id, err := manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
_, err = manager.lookupConfigMap("myconfigmap")
|
|
require.NoError(t, err)
|
|
|
|
// inspect using configmap id
|
|
lookup, err := manager.Lookup(id)
|
|
require.NoError(t, err)
|
|
require.Equal(t, lookup.ID, id)
|
|
|
|
// inspect using id prefix
|
|
short := id[0:5]
|
|
lookupshort, err := manager.Lookup(short)
|
|
require.NoError(t, err)
|
|
require.Equal(t, lookupshort.ID, id)
|
|
}
|
|
|
|
func TestInspectConfigMapBogus(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
_, err = manager.Lookup("bogus")
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestConfigMapList(t *testing.T) {
|
|
manager, testpath, err := setup()
|
|
require.NoError(t, err)
|
|
defer cleanup(testpath)
|
|
|
|
_, err = manager.Store("myconfigmap", []byte("mydata"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
_, err = manager.Store("myconfigmap2", []byte("mydata2"), drivertype, opts)
|
|
require.NoError(t, err)
|
|
|
|
allConfigmaps, err := manager.List()
|
|
require.NoError(t, err)
|
|
require.Len(t, allConfigmaps, 2)
|
|
}
|