content_rewrite_validation_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package rewrite // import "miniflux.app/v2/internal/reader/rewrite"
  4. import (
  5. "testing"
  6. )
  7. func TestParseRulesInvalidEscape(t *testing.T) {
  8. rulesText := `replace("\d+"|"x")`
  9. _, errs := parseRules(rulesText)
  10. if len(errs) == 0 {
  11. t.Fatalf(`Expected at least one error, got none`)
  12. }
  13. var found bool
  14. for _, e := range errs {
  15. if e.Kind == RuleErrUnquote || e.Kind == RuleErrLexical {
  16. found = true
  17. }
  18. }
  19. if !found {
  20. t.Errorf(`Expected an error with Kind RuleErrUnquote or RuleErrLexical, got %v`, errs)
  21. }
  22. }
  23. func TestParseRulesUnknownName(t *testing.T) {
  24. rulesText := `replce("a"|"b")`
  25. _, errs := parseRules(rulesText)
  26. var found bool
  27. for _, e := range errs {
  28. if e.Kind == RuleErrUnknownName && e.Rule == "replce" {
  29. found = true
  30. }
  31. }
  32. if !found {
  33. t.Errorf(`Expected an error with Kind RuleErrUnknownName and Rule "replce", got %v`, errs)
  34. }
  35. }
  36. func TestParseRulesMissingArgs(t *testing.T) {
  37. rulesText := `replace("a")`
  38. _, errs := parseRules(rulesText)
  39. var found bool
  40. for _, e := range errs {
  41. if e.Kind == RuleErrMissingArgs && e.Rule == "replace" {
  42. found = true
  43. }
  44. }
  45. if !found {
  46. t.Errorf(`Expected an error with Kind RuleErrMissingArgs and Rule "replace", got %v`, errs)
  47. }
  48. }
  49. func TestParseRulesInvalidRegexp(t *testing.T) {
  50. rulesText := `replace("["|"x")`
  51. _, errs := parseRules(rulesText)
  52. var found bool
  53. for _, e := range errs {
  54. if e.Kind == RuleErrInvalidRegexp && e.Rule == "replace" {
  55. found = true
  56. }
  57. }
  58. if !found {
  59. t.Errorf(`Expected an error with Kind RuleErrInvalidRegexp and Rule "replace", got %v`, errs)
  60. }
  61. }
  62. func TestParseRulesWellFormed(t *testing.T) {
  63. rulesText := `replace("a"|"b") nl2br`
  64. rules, errs := parseRules(rulesText)
  65. if len(errs) != 0 {
  66. t.Fatalf(`Expected zero errors, got %v`, errs)
  67. }
  68. if len(rules) != 2 {
  69. t.Fatalf(`Expected 2 rules, got %d: %v`, len(rules), rules)
  70. }
  71. if rules[0].name != "replace" || len(rules[0].args) != 2 || rules[0].args[0] != "a" || rules[0].args[1] != "b" {
  72. t.Errorf(`Unexpected first rule: %v`, rules[0])
  73. }
  74. if rules[1].name != "nl2br" || len(rules[1].args) != 0 {
  75. t.Errorf(`Unexpected second rule: %v`, rules[1])
  76. }
  77. }