Skip to content

Commit 4fd3879

Browse files
committed
fixes based on pr comments and refactor import filter unit tests
1 parent 786b9fc commit 4fd3879

File tree

2 files changed

+246
-190
lines changed

2 files changed

+246
-190
lines changed

db/import.go

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -550,37 +550,37 @@ func (i *ImportFilterFunction) EvaluateFunction(ctx context.Context, doc Body, d
550550
func (db *DatabaseCollectionWithUser) ImportFilterDryRun(ctx context.Context, doc Body, importFn string) (bool, error) {
551551

552552
var shouldImport bool
553+
554+
// fetch configured import filter if one is not specified
553555
if importFn == "" {
554556
importFilter := db.importFilter()
555557
if importFilter == nil {
556-
return false, base.HTTPErrorf(http.StatusBadRequest, "No import filter specified")
557-
}
558-
output, err := importFilter.EvaluateFunction(ctx, doc, true)
559-
if err != nil {
560-
return false, &base.ImportFilterDryRunError{Err: err}
558+
return true, nil
561559
}
562-
shouldImport = output
563-
} else {
564-
jsTimeout := time.Duration(base.DefaultJavascriptTimeoutSecs) * time.Second
565-
importRunner, err := newImportFilterRunner(ctx, importFn, jsTimeout)
560+
importFn = importFilter.Function()
561+
}
562+
563+
// create new import filter runner for this dry run
564+
jsTimeout := time.Duration(base.DefaultJavascriptTimeoutSecs) * time.Second
565+
importRunner, err := newImportFilterRunner(ctx, importFn, jsTimeout)
566+
if err != nil {
567+
return false, errors.New("failed to create import filter runner: " + err.Error())
568+
}
569+
importOutput, err := importRunner.Call(ctx, doc)
570+
if err != nil {
571+
return false, &base.ImportFilterDryRunError{Err: err}
572+
}
573+
switch result := importOutput.(type) {
574+
case bool:
575+
shouldImport = result
576+
case string:
577+
boolResult, err := strconv.ParseBool(result)
566578
if err != nil {
567-
return false, errors.New("failed to create import filter runner: " + err.Error())
568-
}
569-
importOuput, err := importRunner.Call(ctx, doc)
570-
switch result := importOuput.(type) {
571-
case bool:
572-
shouldImport = result
573-
break
574-
case string:
575-
boolResult, err := strconv.ParseBool(result)
576-
if err != nil {
577-
return false, err
578-
}
579-
shouldImport = boolResult
580-
break
581-
default:
582-
return false, &base.ImportFilterDryRunError{Err: err}
579+
return false, err
583580
}
581+
shouldImport = boolResult
582+
default:
583+
return false, &base.ImportFilterDryRunError{Err: err}
584584
}
585585

586586
return shouldImport, nil

0 commit comments

Comments
 (0)