@@ -25,7 +25,8 @@ class ParseTest extends Specification with DataTables { def is =
25
25
s2 """ This is a specification to test the parse function
26
26
usual $e1
27
27
unknown referer uri $e2
28
- false positives $e3"""
28
+ false positives $e3
29
+ no double decoding $e4"""
29
30
30
31
val resource = getClass.getResource(" /referers.json" ).getPath
31
32
val ioParser = CreateParser [IO ].create(resource).unsafeRunSync().fold(throw _, identity)
@@ -103,6 +104,14 @@ class ParseTest extends Specification with DataTables { def is =
103
104
evalParser.parse(refererUri, pageHost) must_== Some (genExpected(medium, source, term))
104
105
}
105
106
107
+ def e4 =
108
+ " SPEC NAME" || " REFERER URI" | " REFERER MEDIUM" | " REFERER SOURCE" | " REFERER TERM" |
109
+ " % encoded" !! " https://www.google.com/search?q=keyword+1%25" ! Medium .Search ! Some (" Google" ) ! Some (" keyword 1%" ) |> {
110
+ (_, refererUri, medium, source, term) =>
111
+ ioParser.parse(refererUri, pageHost) must_== Some (genExpected(medium, source, term))
112
+ evalParser.parse(refererUri, pageHost) must_== Some (genExpected(medium, source, term))
113
+ }
114
+
106
115
def genExpected (medium : Medium , source : Option [String ], term : Option [String ]) = medium match {
107
116
case UnknownMedium => UnknownReferer (UnknownMedium )
108
117
case SearchMedium => SearchReferer (SearchMedium , source.get, term)
0 commit comments