forked from ring-clojure/ring
/
codec.clj
27 lines (23 loc) · 920 Bytes
/
codec.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(ns ring.util.test.codec
(:use clojure.test
ring.util.codec)
(:import java.util.Arrays))
(deftest test-url-encode
(is (= "foo%2Fbar" (url-encode "foo/bar")))
(is (= "foo%FE%FF%00%2Fbar") (url-encode "foo/bar" "UTF-16")))
(deftest test-url-decode
(testing "standard behavior"
(is (= "foo/bar" (url-decode "foo%2Fbar")))
(is (= "foo/bar" (url-decode "foo%FE%FF%00%2Fbar" "UTF-16"))))
(testing "returns nil when underlying Java methods throw an exception"
(is (nil? (url-decode "%")))))
(deftest test-base64-encoding
(let [str-bytes (.getBytes "foo?/+" "UTF-8")]
(is (Arrays/equals str-bytes (base64-decode (base64-encode str-bytes))))))
(deftest form-encoding
(let [encoded-params "p%2F1=v%2F1&p%2F2=v%2F21&p%2F2=v%2F22"]
(is (= (form-decode encoded-params)
(-> encoded-params
form-decode
form-encode
form-decode)))))