validator_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. "miniflux.app/v2/internal/locale"
  7. )
  8. func TestIsValidURL(t *testing.T) {
  9. scenarios := map[string]bool{
  10. "https://www.example.org": true,
  11. "http://www.example.org/": true,
  12. "www.example.org": false,
  13. }
  14. for link, expected := range scenarios {
  15. result := IsValidURL(link)
  16. if result != expected {
  17. t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
  18. }
  19. }
  20. }
  21. func TestValidateRange(t *testing.T) {
  22. if err := ValidateRange(-1, 0); err == nil {
  23. t.Error(`An invalid offset should generate a error`)
  24. }
  25. if err := ValidateRange(0, -1); err == nil {
  26. t.Error(`An invalid limit should generate a error`)
  27. }
  28. if err := ValidateRange(42, 42); err != nil {
  29. t.Error(`A valid offset and limit should not generate any error`)
  30. }
  31. }
  32. func TestValidateDirection(t *testing.T) {
  33. for _, status := range []string{"asc", "desc"} {
  34. if err := ValidateDirection(status); err != nil {
  35. t.Error(`A valid direction should not generate any error`)
  36. }
  37. }
  38. if err := ValidateDirection("invalid"); err == nil {
  39. t.Error(`An invalid direction should generate a error`)
  40. }
  41. }
  42. func TestIsValidRegex(t *testing.T) {
  43. scenarios := map[string]bool{
  44. "(?i)miniflux": true,
  45. "[": false,
  46. }
  47. for expr, expected := range scenarios {
  48. result := IsValidRegex(expr)
  49. if result != expected {
  50. t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
  51. }
  52. }
  53. }
  54. func TestIsValidDomain(t *testing.T) {
  55. scenarios := map[string]bool{
  56. "example.org": true,
  57. "example": false,
  58. "example.": false,
  59. "example..": false,
  60. "mail.example.com:443": false,
  61. "*.example.com": false,
  62. }
  63. for domain, expected := range scenarios {
  64. result := IsValidDomain(domain)
  65. if result != expected {
  66. t.Errorf(`Unexpected result, got %v instead of %v`, result, expected)
  67. }
  68. }
  69. }
  70. func TestValidateUsername(t *testing.T) {
  71. scenarios := map[string]*locale.LocalizedError{
  72. "jvoisin": nil,
  73. "j.voisin": nil,
  74. "j@vois.in": nil,
  75. "invalid username": locale.NewLocalizedError("error.invalid_username"),
  76. }
  77. for username, expected := range scenarios {
  78. result := validateUsername(username)
  79. if expected == nil {
  80. if result != nil {
  81. t.Errorf(`got an unexpected error for %q instead of nil: %v`, username, result)
  82. }
  83. } else {
  84. if result == nil {
  85. t.Errorf(`expected an error, got nil.`)
  86. }
  87. }
  88. }
  89. }