فهرست منبع

fix(validator): allow clearing user filter rules on update

Frédéric Guillot 2 هفته پیش
والد
کامیت
c2cbf5370d
2فایلهای تغییر یافته به همراه30 افزوده شده و 4 حذف شده
  1. 8 4
      internal/validator/user.go
  2. 22 0
      internal/validator/user_test.go

+ 8 - 4
internal/validator/user.go

@@ -129,14 +129,18 @@ func ValidateUserModification(store *storage.Storage, userID int64, changes *mod
 	}
 
 	if changes.BlockFilterEntryRules != nil {
-		if err := isValidFilterRules(*changes.BlockFilterEntryRules, "block"); err != nil {
-			return err
+		if *changes.BlockFilterEntryRules != "" {
+			if err := isValidFilterRules(*changes.BlockFilterEntryRules, "block"); err != nil {
+				return err
+			}
 		}
 	}
 
 	if changes.KeepFilterEntryRules != nil {
-		if err := isValidFilterRules(*changes.KeepFilterEntryRules, "keep"); err != nil {
-			return err
+		if *changes.KeepFilterEntryRules != "" {
+			if err := isValidFilterRules(*changes.KeepFilterEntryRules, "keep"); err != nil {
+				return err
+			}
 		}
 	}
 

+ 22 - 0
internal/validator/user_test.go

@@ -7,6 +7,7 @@ import (
 	"testing"
 
 	"miniflux.app/v2/internal/locale"
+	"miniflux.app/v2/internal/model"
 )
 
 func TestValidateUsername(t *testing.T) {
@@ -179,3 +180,24 @@ func TestValidateMediaPlaybackRate(t *testing.T) {
 		}
 	}
 }
+
+func TestValidateUserModificationAllowsClearingFilterRules(t *testing.T) {
+	req := &model.UserModificationRequest{
+		BlockFilterEntryRules: new(string),
+		KeepFilterEntryRules:  new(string),
+	}
+
+	if err := ValidateUserModification(nil, 0, req); err != nil {
+		t.Fatalf("expected empty filter rules to be accepted, got %v", err)
+	}
+}
+
+func TestValidateUserModificationRejectsInvalidNonEmptyFilterRule(t *testing.T) {
+	req := &model.UserModificationRequest{
+		BlockFilterEntryRules: new("EntryTitle=["),
+	}
+
+	if err := ValidateUserModification(nil, 0, req); err == nil {
+		t.Fatal("expected invalid non-empty filter rules to be rejected")
+	}
+}