[#872] changed the schema required validator to be optional for auth collections

This commit is contained in:
Gani Georgiev
2022-11-16 15:13:04 +02:00
parent 4528f075dc
commit 6e9cf986c5
45 changed files with 1166 additions and 445 deletions
+14
View File
@@ -116,6 +116,7 @@ func (form *CollectionUpsert) Validate() error {
// validates using the type's own validation rules + some collection's specific
validation.Field(
&form.Schema,
validation.By(form.checkMinSchemaFields),
validation.By(form.ensureNoSystemFieldsChange),
validation.By(form.ensureNoFieldsTypeChange),
validation.By(form.ensureExistingRelationCollectionId),
@@ -255,6 +256,19 @@ func (form *CollectionUpsert) ensureNoAuthFieldName(value any) error {
return nil
}
func (form *CollectionUpsert) checkMinSchemaFields(value any) error {
if form.Type == models.CollectionTypeAuth {
return nil // auth collections doesn't require having additional schema fields
}
v, ok := value.(schema.Schema)
if !ok || len(v.Fields()) == 0 {
return validation.ErrRequired
}
return nil
}
func (form *CollectionUpsert) ensureNoSystemFieldsChange(value any) error {
v, _ := value.(schema.Schema)
+2 -1
View File
@@ -96,7 +96,8 @@ func TestCollectionUpsertValidateAndSubmit(t *testing.T) {
jsonData string
expectedErrors []string
}{
{"empty create", "", "{}", []string{"name", "schema"}},
{"empty create (base)", "", "{}", []string{"name", "schema"}},
{"empty create (auth)", "", `{"type":"auth"}`, []string{"name"}},
{"empty update", "demo2", "{}", []string{}},
{
"create failure",
+26 -3
View File
@@ -87,6 +87,25 @@ func TestCollectionsImportSubmit(t *testing.T) {
"OnModelBeforeCreate": 2,
},
},
{
name: "test empty base collection schema",
jsonData: `{
"collections": [
{
"name": "import1"
},
{
"name": "import2",
"type": "auth"
}
]
}`,
expectError: true,
expectCollectionsCount: 7,
expectEvents: map[string]int{
"OnModelBeforeCreate": 2,
},
},
{
name: "all imported collections has valid data",
jsonData: `{
@@ -110,14 +129,18 @@ func TestCollectionsImportSubmit(t *testing.T) {
"type":"bool"
}
]
},
{
"name": "import3",
"type": "auth"
}
]
}`,
expectError: false,
expectCollectionsCount: 9,
expectCollectionsCount: 10,
expectEvents: map[string]int{
"OnModelBeforeCreate": 2,
"OnModelAfterCreate": 2,
"OnModelBeforeCreate": 3,
"OnModelAfterCreate": 3,
},
},
{