eea.api.redirector 0.2__tar.gz → 0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. {eea_api_redirector-0.2/eea.api.redirector.egg-info → eea_api_redirector-0.3}/PKG-INFO +5 -1
  2. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/docs/HISTORY.txt +4 -0
  3. eea_api_redirector-0.3/eea/api/redirector/tests/test_add_redirects.py +120 -0
  4. eea_api_redirector-0.3/eea/api/redirector/version.txt +1 -0
  5. {eea_api_redirector-0.2 → eea_api_redirector-0.3/eea.api.redirector.egg-info}/PKG-INFO +5 -1
  6. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea.api.redirector.egg-info/SOURCES.txt +1 -0
  7. eea_api_redirector-0.2/eea/api/redirector/version.txt +0 -1
  8. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/CONTRIBUTING.md +0 -0
  9. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/MANIFEST.in +0 -0
  10. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/README.rst +0 -0
  11. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/docs/LICENSE.GPL +0 -0
  12. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/docs/LICENSE.txt +0 -0
  13. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/__init__.py +0 -0
  14. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/__init__.py +0 -0
  15. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/README.txt +0 -0
  16. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/__init__.py +0 -0
  17. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/browser/__init__.py +0 -0
  18. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/browser/configure.zcml +0 -0
  19. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/browser/controlpanel.py +0 -0
  20. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/configure.zcml +0 -0
  21. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/interfaces.py +0 -0
  22. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/__init__.py +0 -0
  23. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/bg/LC_MESSAGES/eea.mo +0 -0
  24. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/bg/LC_MESSAGES/eea.po +0 -0
  25. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/bg/LC_MESSAGES/plone.mo +0 -0
  26. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/bg/LC_MESSAGES/plone.po +0 -0
  27. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/cs/LC_MESSAGES/eea.mo +0 -0
  28. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/cs/LC_MESSAGES/eea.po +0 -0
  29. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/cs/LC_MESSAGES/plone.mo +0 -0
  30. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/cs/LC_MESSAGES/plone.po +0 -0
  31. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/da/LC_MESSAGES/eea.mo +0 -0
  32. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/da/LC_MESSAGES/eea.po +0 -0
  33. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/da/LC_MESSAGES/plone.mo +0 -0
  34. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/da/LC_MESSAGES/plone.po +0 -0
  35. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/de/LC_MESSAGES/eea.mo +0 -0
  36. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/de/LC_MESSAGES/eea.po +0 -0
  37. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/de/LC_MESSAGES/plone.mo +0 -0
  38. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/de/LC_MESSAGES/plone.po +0 -0
  39. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/eea.pot +0 -0
  40. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/el/LC_MESSAGES/eea.mo +0 -0
  41. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/el/LC_MESSAGES/eea.po +0 -0
  42. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/el/LC_MESSAGES/plone.mo +0 -0
  43. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/el/LC_MESSAGES/plone.po +0 -0
  44. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/en/LC_MESSAGES/eea.mo +0 -0
  45. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/en/LC_MESSAGES/eea.po +0 -0
  46. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/en/LC_MESSAGES/plone.mo +0 -0
  47. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/en/LC_MESSAGES/plone.po +0 -0
  48. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/es/LC_MESSAGES/eea.mo +0 -0
  49. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/es/LC_MESSAGES/eea.po +0 -0
  50. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/es/LC_MESSAGES/plone.mo +0 -0
  51. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/es/LC_MESSAGES/plone.po +0 -0
  52. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/et/LC_MESSAGES/eea.mo +0 -0
  53. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/et/LC_MESSAGES/eea.po +0 -0
  54. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/et/LC_MESSAGES/plone.mo +0 -0
  55. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/et/LC_MESSAGES/plone.po +0 -0
  56. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/eu/LC_MESSAGES/eea.mo +0 -0
  57. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/eu/LC_MESSAGES/eea.po +0 -0
  58. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/eu/LC_MESSAGES/plone.mo +0 -0
  59. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/eu/LC_MESSAGES/plone.po +0 -0
  60. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fi/LC_MESSAGES/eea.mo +0 -0
  61. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fi/LC_MESSAGES/eea.po +0 -0
  62. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fi/LC_MESSAGES/plone.mo +0 -0
  63. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fi/LC_MESSAGES/plone.po +0 -0
  64. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fr/LC_MESSAGES/eea.mo +0 -0
  65. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fr/LC_MESSAGES/eea.po +0 -0
  66. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fr/LC_MESSAGES/plone.mo +0 -0
  67. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/fr/LC_MESSAGES/plone.po +0 -0
  68. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hr/LC_MESSAGES/eea.mo +0 -0
  69. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hr/LC_MESSAGES/eea.po +0 -0
  70. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hr/LC_MESSAGES/plone.mo +0 -0
  71. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hr/LC_MESSAGES/plone.po +0 -0
  72. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hu/LC_MESSAGES/eea.mo +0 -0
  73. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hu/LC_MESSAGES/eea.po +0 -0
  74. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hu/LC_MESSAGES/plone.mo +0 -0
  75. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/hu/LC_MESSAGES/plone.po +0 -0
  76. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/is/LC_MESSAGES/eea.mo +0 -0
  77. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/is/LC_MESSAGES/eea.po +0 -0
  78. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/is/LC_MESSAGES/plone.mo +0 -0
  79. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/is/LC_MESSAGES/plone.po +0 -0
  80. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/it/LC_MESSAGES/eea.mo +0 -0
  81. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/it/LC_MESSAGES/eea.po +0 -0
  82. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/it/LC_MESSAGES/plone.mo +0 -0
  83. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/it/LC_MESSAGES/plone.po +0 -0
  84. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/kl/LC_MESSAGES/eea.mo +0 -0
  85. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/kl/LC_MESSAGES/eea.po +0 -0
  86. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/kl/LC_MESSAGES/plone.mo +0 -0
  87. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/kl/LC_MESSAGES/plone.po +0 -0
  88. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lt/LC_MESSAGES/eea.mo +0 -0
  89. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lt/LC_MESSAGES/eea.po +0 -0
  90. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lt/LC_MESSAGES/plone.mo +0 -0
  91. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lt/LC_MESSAGES/plone.po +0 -0
  92. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lv/LC_MESSAGES/eea.mo +0 -0
  93. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lv/LC_MESSAGES/eea.po +0 -0
  94. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lv/LC_MESSAGES/plone.mo +0 -0
  95. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/lv/LC_MESSAGES/plone.po +0 -0
  96. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/mt/LC_MESSAGES/eea.mo +0 -0
  97. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/mt/LC_MESSAGES/eea.po +0 -0
  98. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/mt/LC_MESSAGES/plone.mo +0 -0
  99. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/mt/LC_MESSAGES/plone.po +0 -0
  100. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/nl/LC_MESSAGES/eea.mo +0 -0
  101. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/nl/LC_MESSAGES/eea.po +0 -0
  102. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/nl/LC_MESSAGES/plone.mo +0 -0
  103. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/nl/LC_MESSAGES/plone.po +0 -0
  104. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/no/LC_MESSAGES/eea.mo +0 -0
  105. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/no/LC_MESSAGES/eea.po +0 -0
  106. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/no/LC_MESSAGES/plone.mo +0 -0
  107. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/no/LC_MESSAGES/plone.po +0 -0
  108. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pl/LC_MESSAGES/eea.mo +0 -0
  109. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pl/LC_MESSAGES/eea.po +0 -0
  110. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pl/LC_MESSAGES/plone.mo +0 -0
  111. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pl/LC_MESSAGES/plone.po +0 -0
  112. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/plone-manual.pot +0 -0
  113. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt/LC_MESSAGES/eea.mo +0 -0
  114. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt/LC_MESSAGES/eea.po +0 -0
  115. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt/LC_MESSAGES/plone.mo +0 -0
  116. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt/LC_MESSAGES/plone.po +0 -0
  117. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt_BR/LC_MESSAGES/eea.mo +0 -0
  118. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt_BR/LC_MESSAGES/eea.po +0 -0
  119. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt_BR/LC_MESSAGES/plone.mo +0 -0
  120. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/pt_BR/LC_MESSAGES/plone.po +0 -0
  121. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ro/LC_MESSAGES/eea.mo +0 -0
  122. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ro/LC_MESSAGES/eea.po +0 -0
  123. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ro/LC_MESSAGES/plone.mo +0 -0
  124. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ro/LC_MESSAGES/plone.po +0 -0
  125. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ru/LC_MESSAGES/eea.mo +0 -0
  126. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ru/LC_MESSAGES/eea.po +0 -0
  127. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ru/LC_MESSAGES/plone.mo +0 -0
  128. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/ru/LC_MESSAGES/plone.po +0 -0
  129. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sk/LC_MESSAGES/eea.mo +0 -0
  130. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sk/LC_MESSAGES/eea.po +0 -0
  131. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sk/LC_MESSAGES/plone.mo +0 -0
  132. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sk/LC_MESSAGES/plone.po +0 -0
  133. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sl/LC_MESSAGES/eea.mo +0 -0
  134. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sl/LC_MESSAGES/eea.po +0 -0
  135. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sl/LC_MESSAGES/plone.mo +0 -0
  136. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sl/LC_MESSAGES/plone.po +0 -0
  137. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sv/LC_MESSAGES/eea.mo +0 -0
  138. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sv/LC_MESSAGES/eea.po +0 -0
  139. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sv/LC_MESSAGES/plone.mo +0 -0
  140. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/sv/LC_MESSAGES/plone.po +0 -0
  141. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/tr/LC_MESSAGES/eea.mo +0 -0
  142. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/tr/LC_MESSAGES/eea.po +0 -0
  143. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/tr/LC_MESSAGES/plone.mo +0 -0
  144. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/tr/LC_MESSAGES/plone.po +0 -0
  145. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/update.sh +0 -0
  146. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/zh_TW/LC_MESSAGES/eea.mo +0 -0
  147. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/zh_TW/LC_MESSAGES/eea.po +0 -0
  148. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/zh_TW/LC_MESSAGES/plone.mo +0 -0
  149. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/locales/zh_TW/LC_MESSAGES/plone.po +0 -0
  150. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/profiles/default/browserlayer.xml +0 -0
  151. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/profiles/default/controlpanel.xml +0 -0
  152. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/profiles/default/metadata.xml +0 -0
  153. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/profiles/default/registry.xml +0 -0
  154. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/profiles/uninstall/browserlayer.xml +0 -0
  155. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/profiles.zcml +0 -0
  156. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/__init__.py +0 -0
  157. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/add.py +0 -0
  158. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/configure.zcml +0 -0
  159. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/controlpanel.py +0 -0
  160. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/delete.py +0 -0
  161. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/get.py +0 -0
  162. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/import_csv.py +0 -0
  163. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/restapi/statistics.py +0 -0
  164. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/setuphandlers.py +0 -0
  165. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/tests/__init__.py +0 -0
  166. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/tests/base.py +0 -0
  167. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/tests/test_doctests.py +0 -0
  168. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/upgrades/__init__.py +0 -0
  169. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/upgrades/configure.zcml +0 -0
  170. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/utilities/__init__.py +0 -0
  171. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/utilities/configure.zcml +0 -0
  172. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/utilities/errors.py +0 -0
  173. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea/api/redirector/utilities/storage.py +0 -0
  174. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea.api.redirector.egg-info/dependency_links.txt +0 -0
  175. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea.api.redirector.egg-info/entry_points.txt +0 -0
  176. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea.api.redirector.egg-info/namespace_packages.txt +0 -0
  177. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea.api.redirector.egg-info/not-zip-safe +0 -0
  178. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea.api.redirector.egg-info/requires.txt +0 -0
  179. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/eea.api.redirector.egg-info/top_level.txt +0 -0
  180. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/setup.cfg +0 -0
  181. {eea_api_redirector-0.2 → eea_api_redirector-0.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eea.api.redirector
3
- Version: 0.2
3
+ Version: 0.3
4
4
  Summary: Plone Redirector extension to get redirect URLs also from Redis
5
5
  Home-page: https://github.com/eea/eea.api.redirector
6
6
  Author: European Environment Agency: IDM2 A-Team
@@ -343,6 +343,10 @@ EEA_ - European Environment Agency (EU)
343
343
  Changelog
344
344
  =========
345
345
 
346
+ 0.3 - (2026-04-14)
347
+ ---------------------------
348
+ * Change: Add unit tests for add_redirects validation logic [avoinea]
349
+
346
350
  0.2 - (2025-12-20)
347
351
  ------------------------
348
352
  * Feature: CSV import endpoint (@redirects-import) for server-side processing
@@ -1,6 +1,10 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 0.3 - (2026-04-14)
5
+ ---------------------------
6
+ * Change: Add unit tests for add_redirects validation logic [avoinea]
7
+
4
8
  0.2 - (2025-12-20)
5
9
  ------------------------
6
10
  * Feature: CSV import endpoint (@redirects-import) for server-side processing
@@ -0,0 +1,120 @@
1
+ """Unit tests for eea.api.redirector.restapi.add module
2
+
3
+ These tests cover add_redirects validation logic with a mock storage:
4
+ - Validation of redirect items (missing path, target, self-redirect)
5
+ """
6
+
7
+ import unittest
8
+ from eea.api.redirector.restapi.add import add_redirects
9
+
10
+
11
+ class FakeStorage:
12
+ """Mock storage that always succeeds"""
13
+
14
+ def set(self, path, target):
15
+ return True
16
+
17
+
18
+ class FakeStorageFail:
19
+ """Mock storage that always fails"""
20
+
21
+ def set(self, path, target):
22
+ return None
23
+
24
+
25
+ class TestAddRedirects(unittest.TestCase):
26
+ """Tests for add_redirects function"""
27
+
28
+ def test_add_valid_redirect(self):
29
+ storage = FakeStorage()
30
+ redirects = [{"path": "/old", "redirect-to": "/new"}]
31
+ success, failed = add_redirects(storage, redirects)
32
+ self.assertEqual(success, 1)
33
+ self.assertEqual(len(failed), 0)
34
+
35
+ def test_add_multiple_valid_redirects(self):
36
+ storage = FakeStorage()
37
+ redirects = [
38
+ {"path": "/old1", "redirect-to": "/new1"},
39
+ {"path": "/old2", "redirect-to": "/new2"},
40
+ ]
41
+ success, failed = add_redirects(storage, redirects)
42
+ self.assertEqual(success, 2)
43
+ self.assertEqual(len(failed), 0)
44
+
45
+ def test_non_dict_item(self):
46
+ storage = FakeStorage()
47
+ redirects = ["not a dict"]
48
+ success, failed = add_redirects(storage, redirects)
49
+ self.assertEqual(success, 0)
50
+ self.assertEqual(len(failed), 1)
51
+ self.assertIn("must be a dictionary", failed[0]["error"])
52
+
53
+ def test_missing_path(self):
54
+ storage = FakeStorage()
55
+ redirects = [{"redirect-to": "/new"}]
56
+ success, failed = add_redirects(storage, redirects)
57
+ self.assertEqual(success, 0)
58
+ self.assertEqual(len(failed), 1)
59
+ self.assertIn("Missing 'path'", failed[0]["error"])
60
+
61
+ def test_missing_target(self):
62
+ storage = FakeStorage()
63
+ redirects = [{"path": "/old"}]
64
+ success, failed = add_redirects(storage, redirects)
65
+ self.assertEqual(success, 0)
66
+ self.assertEqual(len(failed), 1)
67
+ self.assertIn("Missing 'redirect-to'", failed[0]["error"])
68
+
69
+ def test_path_without_leading_slash(self):
70
+ storage = FakeStorage()
71
+ redirects = [{"path": "old", "redirect-to": "/new"}]
72
+ success, failed = add_redirects(storage, redirects)
73
+ self.assertEqual(success, 0)
74
+ self.assertEqual(len(failed), 1)
75
+ self.assertIn("must start with", failed[0]["error"])
76
+
77
+ def test_self_redirect(self):
78
+ storage = FakeStorage()
79
+ redirects = [{"path": "/same", "redirect-to": "/same"}]
80
+ success, failed = add_redirects(storage, redirects)
81
+ self.assertEqual(success, 0)
82
+ self.assertEqual(len(failed), 1)
83
+ self.assertIn("cannot be the same", failed[0]["error"])
84
+
85
+ def test_empty_target_allowed_for_gone(self):
86
+ storage = FakeStorage()
87
+ redirects = [{"path": "/old", "redirect-to": ""}]
88
+ success, failed = add_redirects(storage, redirects)
89
+ self.assertEqual(success, 1)
90
+ self.assertEqual(len(failed), 0)
91
+
92
+ def test_none_target_not_allowed(self):
93
+ storage = FakeStorage()
94
+ redirects = [{"path": "/old", "redirect-to": None}]
95
+ success, failed = add_redirects(storage, redirects)
96
+ self.assertEqual(success, 0)
97
+ self.assertIn("Missing 'redirect-to'", failed[0]["error"])
98
+
99
+ def test_storage_failure(self):
100
+ storage = FakeStorageFail()
101
+ redirects = [{"path": "/old", "redirect-to": "/new"}]
102
+ success, failed = add_redirects(storage, redirects)
103
+ self.assertEqual(success, 0)
104
+ self.assertEqual(len(failed), 1)
105
+ self.assertIn("Failed to set", failed[0]["error"])
106
+
107
+ def test_mixed_valid_and_invalid(self):
108
+ storage = FakeStorage()
109
+ redirects = [
110
+ {"path": "/old1", "redirect-to": "/new1"},
111
+ "not a dict",
112
+ {"path": "/old2", "redirect-to": "/new2"},
113
+ ]
114
+ success, failed = add_redirects(storage, redirects)
115
+ self.assertEqual(success, 2)
116
+ self.assertEqual(len(failed), 1)
117
+
118
+
119
+ if __name__ == "__main__":
120
+ unittest.main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eea.api.redirector
3
- Version: 0.2
3
+ Version: 0.3
4
4
  Summary: Plone Redirector extension to get redirect URLs also from Redis
5
5
  Home-page: https://github.com/eea/eea.api.redirector
6
6
  Author: European Environment Agency: IDM2 A-Team
@@ -343,6 +343,10 @@ EEA_ - European Environment Agency (EU)
343
343
  Changelog
344
344
  =========
345
345
 
346
+ 0.3 - (2026-04-14)
347
+ ---------------------------
348
+ * Change: Add unit tests for add_redirects validation logic [avoinea]
349
+
346
350
  0.2 - (2025-12-20)
347
351
  ------------------------
348
352
  * Feature: CSV import endpoint (@redirects-import) for server-side processing
@@ -168,6 +168,7 @@ eea/api/redirector/restapi/import_csv.py
168
168
  eea/api/redirector/restapi/statistics.py
169
169
  eea/api/redirector/tests/__init__.py
170
170
  eea/api/redirector/tests/base.py
171
+ eea/api/redirector/tests/test_add_redirects.py
171
172
  eea/api/redirector/tests/test_doctests.py
172
173
  eea/api/redirector/upgrades/__init__.py
173
174
  eea/api/redirector/upgrades/configure.zcml