From d14573b5037d49ce520e26358281fac818856201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Thu, 18 Mar 2021 15:41:32 +0100 Subject: [PATCH] Test tweaks --- tests/compose/record_test.go | 73 +++++++++++++++++++++++++ tests/envoy/store_csv_records_test.go | 2 + tests/envoy/store_jsonl_records_test.go | 2 + 3 files changed, 77 insertions(+) diff --git a/tests/compose/record_test.go b/tests/compose/record_test.go index a8d0f1b93..5c7d7ec26 100644 --- a/tests/compose/record_test.go +++ b/tests/compose/record_test.go @@ -99,6 +99,40 @@ func (h helper) repoMakeRecordModuleWithFields(name string, ff ...*types.ModuleF return h.makeModule(namespace, name, ff...) } +func (h helper) repoMakeRecordModuleWithFieldsRequired(name string, ff ...*types.ModuleField) *types.Module { + namespace := h.makeNamespace("record testing namespace") + + h.allow(types.NamespaceRBACResource.AppendWildcard(), "read") + h.allow(types.ModuleRBACResource.AppendWildcard(), "read") + h.allow(types.ModuleRBACResource.AppendWildcard(), "record.read") + + if len(ff) == 0 { + // Default fields + ff = types.ModuleFieldSet{ + &types.ModuleField{ + Name: "name", + Required: true, + }, + &types.ModuleField{ + Name: "email", + }, + &types.ModuleField{ + Name: "options", + Multi: true, + }, + &types.ModuleField{ + Name: "description", + }, + &types.ModuleField{ + Name: "another_record", + Kind: "Record", + }, + } + } + + return h.makeModule(namespace, name, ff...) +} + func (h helper) makeRecord(module *types.Module, rvs ...*types.RecordValue) *types.Record { rec := &types.Record{ ID: id.Next(), @@ -521,6 +555,45 @@ func TestRecordImportRunForbidden_field(t *testing.T) { } } +func TestRecordImportRunFieldError_missing(t *testing.T) { + h := newHelper(t) + h.clearRecords() + h.allow(types.ModuleRBACResource.AppendWildcard(), "record.create") + + module := h.repoMakeRecordModuleWithFieldsRequired("record import run module") + + tests := []struct { + Name string + Content string + }{ + { + Name: "f1.csv", + Content: "fname,femail\n,v2\n", + }, + } + + for _, test := range tests { + t.Run(t.Name(), func(t *testing.T) { + url := fmt.Sprintf("/namespace/%d/module/%d/record/import", module.NamespaceID, module.ID) + rsp := &rImportSession{} + api := h.apiInit() + + r := h.apiInitRecordImport(api, url, test.Name, []byte(test.Content)).End() + r.JSON(rsp) + + h.apiRunRecordImport(api, fmt.Sprintf("%s/%s", url, rsp.Response.SessionID), `{"fields":{"femail":"email"},"onError":"skip"}`). + End() + + api.Get(fmt.Sprintf("%s/%s", url, rsp.Response.SessionID)). + Expect(h.t). + Status(http.StatusOK). + Assert(helpers.AssertNoErrors). + Assert(jsonpath.Present("$.response.progress.failLog.errors[\"empty field name\"]")). + End() + }) + } +} + func TestRecordImportImportProgress(t *testing.T) { h := newHelper(t) h.clearRecords() diff --git a/tests/envoy/store_csv_records_test.go b/tests/envoy/store_csv_records_test.go index 37098ac04..6786e1098 100644 --- a/tests/envoy/store_csv_records_test.go +++ b/tests/envoy/store_csv_records_test.go @@ -147,6 +147,7 @@ func TestStoreCsv_records(t *testing.T) { "base_module", "base_namespace", "tmp.csv", + true, resource.MappingTplSet{ { Cell: "id", @@ -360,6 +361,7 @@ func TestStoreCsv_records_fieldTypes(t *testing.T) { "base_module", "base_namespace", "tmp.csv", + true, resource.MappingTplSet{ { Cell: "id", diff --git a/tests/envoy/store_jsonl_records_test.go b/tests/envoy/store_jsonl_records_test.go index 5226d238c..f93b352d1 100644 --- a/tests/envoy/store_jsonl_records_test.go +++ b/tests/envoy/store_jsonl_records_test.go @@ -147,6 +147,7 @@ func TestStoreJsonl_records(t *testing.T) { "base_module", "base_namespace", "tmp.jsonl", + true, resource.MappingTplSet{ { Cell: "id", @@ -360,6 +361,7 @@ func TestStoreJsonl_records_fieldTypes(t *testing.T) { "base_module", "base_namespace", "tmp.csv", + true, resource.MappingTplSet{ { Cell: "id",