diff --git a/compose/importer/importer_test.go b/compose/importer/importer_test.go index 8e316771c..3967e2080 100644 --- a/compose/importer/importer_test.go +++ b/compose/importer/importer_test.go @@ -21,4 +21,10 @@ func TestImporter_Cast(t *testing.T) { req.Equal("Module1", i.namespaces.modules["foo"].set.FindByHandle("m1").Name) }) + + impFixTester(t, "importer_with_settings", func(t *testing.T, i *Importer) { + req := require.New(t) + + req.NotNil(i) + }) } diff --git a/compose/importer/main_test.go b/compose/importer/main_test.go index 4e4729913..f4f599ed4 100644 --- a/compose/importer/main_test.go +++ b/compose/importer/main_test.go @@ -11,6 +11,7 @@ import ( "github.com/cortezaproject/corteza-server/compose/service" "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/permissions" + "github.com/cortezaproject/corteza-server/pkg/settings" ) var ( @@ -23,6 +24,7 @@ var ( // Add namespace to the stack, make sure importer can find it pi *permissions.Importer + st *settings.Importer imp *Importer ) @@ -35,8 +37,9 @@ func TestMain(m *testing.M) { func resetMocks() { // whitelist = nil, anything can be added pi = permissions.NewImporter(service.AccessControl(nil).Whitelist()) + st = settings.NewImporter() - imp = NewImporter(nil, nil, nil, nil, nil, pi) + imp = NewImporter(nil, nil, nil, nil, nil, pi, st) } diff --git a/compose/importer/testdata/importer_with_settings.yaml b/compose/importer/testdata/importer_with_settings.yaml new file mode 100644 index 000000000..6e0ec9418 --- /dev/null +++ b/compose/importer/testdata/importer_with_settings.yaml @@ -0,0 +1,8 @@ +settings: + s1: v1 + s2: + - v2 + - v3 + s3: + ss1: v4 + ss2: v5 diff --git a/messaging/importer/main_test.go b/messaging/importer/main_test.go index b70d8e667..c569fdada 100644 --- a/messaging/importer/main_test.go +++ b/messaging/importer/main_test.go @@ -9,11 +9,13 @@ import ( "gopkg.in/yaml.v2" "github.com/cortezaproject/corteza-server/pkg/permissions" + "github.com/cortezaproject/corteza-server/pkg/settings" "github.com/cortezaproject/corteza-server/system/service" ) var ( pi *permissions.Importer + si *settings.Importer imp *Importer ) @@ -26,9 +28,10 @@ func TestMain(m *testing.M) { func resetMocks() { // whitelist = nil, anything can be added pi = permissions.NewImporter(service.AccessControl(nil).Whitelist()) - + si = settings.NewImporter() imp = NewImporter( pi, + si, NewChannelImport(pi, nil), ) } diff --git a/pkg/settings/export_test.go b/pkg/settings/exporter_test.go similarity index 100% rename from pkg/settings/export_test.go rename to pkg/settings/exporter_test.go diff --git a/pkg/settings/importer_test.go b/pkg/settings/importer_test.go new file mode 100644 index 000000000..b5c9910fb --- /dev/null +++ b/pkg/settings/importer_test.go @@ -0,0 +1,64 @@ +package settings + +import ( + "os" + "testing" + + "github.com/jmoiron/sqlx/types" + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v2" +) + +func TestSettingImport_CastSet(t *testing.T) { + type tv struct { + name string + value string + } + + var aux interface{} + req := require.New(t) + f, err := os.Open("testdata/settings.yaml") + defer f.Close() + req.NoError(err) + req.NoError(yaml.NewDecoder(f).Decode(&aux)) + req.NotNil(aux) + + imp := NewImporter() + err = imp.CastSet(aux) + req.Nil(err) + req.Len(imp.settings, 6) + + tests := []tv{ + tv{ + name: "array", + value: "[\"v1\",\"v2\"]", + }, + tv{ + name: "object", + value: "{\"k1\":\"v1\",\"k2\":\"v2\"}", + }, + tv{ + name: "plain_b", + value: "true", + }, + tv{ + name: "plain_double", + value: "12.34", + }, + tv{ + name: "plain_double_2", + value: "12", + }, + tv{ + name: "plain_s", + value: "\"string\"", + }, + } + + for _, t := range tests { + v := imp.settings.First(t.name) + vv, _ := types.JSONText(t.value).MarshalJSON() + ee, _ := v.Value.MarshalJSON() + req.Equal(vv, ee) + } +} diff --git a/pkg/settings/testdata/settings.yaml b/pkg/settings/testdata/settings.yaml new file mode 100644 index 000000000..a889e4e37 --- /dev/null +++ b/pkg/settings/testdata/settings.yaml @@ -0,0 +1,10 @@ +array: +- v1 +- v2 +object: + k1: v1 + k2: v2 +plain_b: true +plain_double: 12.34 +plain_double_2: 12 +plain_s: string diff --git a/system/importer/main_test.go b/system/importer/main_test.go index 93e672011..91f939da8 100644 --- a/system/importer/main_test.go +++ b/system/importer/main_test.go @@ -9,12 +9,13 @@ import ( "gopkg.in/yaml.v2" "github.com/cortezaproject/corteza-server/pkg/permissions" + "github.com/cortezaproject/corteza-server/pkg/settings" "github.com/cortezaproject/corteza-server/system/service" ) var ( - pi *permissions.Importer - + pi *permissions.Importer + si *settings.Importer imp *Importer ) @@ -26,9 +27,10 @@ func TestMain(m *testing.M) { func resetMocks() { // whitelist = nil, anything can be added pi = permissions.NewImporter(service.AccessControl(nil).Whitelist()) - + si = settings.NewImporter() imp = NewImporter( pi, + si, NewRoleImport(pi, nil), ) }