validator_test.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package validator // import "miniflux.app/v2/internal/validator"
  4. import (
  5. "testing"
  6. )
  7. func TestIsValidURL(t *testing.T) {
  8. scenarios := map[string]bool{
  9. "https://www.example.org": true,
  10. "http://www.example.org/": true,
  11. "www.example.org": false,
  12. }
  13. for link, expected := range scenarios {
  14. result := IsValidURL(link)
  15. if result != expected {
  16. t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
  17. }
  18. }
  19. }
  20. func TestValidateRange(t *testing.T) {
  21. if err := ValidateRange(-1, 0); err == nil {
  22. t.Error(`An invalid offset should generate a error`)
  23. }
  24. if err := ValidateRange(0, -1); err == nil {
  25. t.Error(`An invalid limit should generate a error`)
  26. }
  27. if err := ValidateRange(42, 42); err != nil {
  28. t.Error(`A valid offset and limit should not generate any error`)
  29. }
  30. }
  31. func TestValidateDirection(t *testing.T) {
  32. for _, status := range []string{"asc", "desc"} {
  33. if err := ValidateDirection(status); err != nil {
  34. t.Error(`A valid direction should not generate any error`)
  35. }
  36. }
  37. if err := ValidateDirection("invalid"); err == nil {
  38. t.Error(`An invalid direction should generate a error`)
  39. }
  40. }
  41. func TestIsValidRegex(t *testing.T) {
  42. scenarios := map[string]bool{
  43. "(?i)miniflux": true,
  44. "[": false,
  45. }
  46. for expr, expected := range scenarios {
  47. result := IsValidRegex(expr)
  48. if result != expected {
  49. t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
  50. }
  51. }
  52. }
  53. func TestIsValidDomain(t *testing.T) {
  54. scenarios := map[string]bool{
  55. "example.org": true,
  56. "example": false,
  57. "example.": false,
  58. "example..": false,
  59. "mail.example.com:443": false,
  60. "*.example.com": false,
  61. }
  62. for domain, expected := range scenarios {
  63. result := IsValidDomain(domain)
  64. if result != expected {
  65. t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
  66. }
  67. }
  68. }
  69. func TestIsValidDomainList(t *testing.T) {
  70. scenarios := map[string]bool{
  71. "example.org": true,
  72. "example.org example.com": true,
  73. "example.org invalid..domain": false,
  74. "example.org example.com:443": false,
  75. "": false,
  76. }
  77. for domains, expected := range scenarios {
  78. result := IsValidDomainList(domains)
  79. if result != expected {
  80. t.Errorf(`Unexpected result for %q, got %v instead of %v`, domains, result, expected)
  81. }
  82. }
  83. }