4 changed files with 128 additions and 55 deletions
@ -0,0 +1,11 @@ |
|||||||
|
(ns NoteHub.api) |
||||||
|
|
||||||
|
(def api-version "1.0") |
||||||
|
|
||||||
|
(defn get-signature [& args]) |
||||||
|
(defn post-note [& args]) |
||||||
|
(defn get-note [& args]) |
||||||
|
(defn update-note [& args]) |
||||||
|
(defn register-publisher [& args]) |
||||||
|
(defn revoke-publisher [& args]) |
||||||
|
(defn valid-publisher? [& args]) |
||||||
@ -0,0 +1,62 @@ |
|||||||
|
(ns NoteHub.test.api |
||||||
|
(:use [NoteHub.api] [clojure.test])) |
||||||
|
|
||||||
|
(def note "Hello world, this is a test note!") |
||||||
|
(def note2 "Another test note") |
||||||
|
(def pid "somePlugin") |
||||||
|
(def pid2 "somePlugin2") |
||||||
|
(def ver api-version) |
||||||
|
|
||||||
|
(defmacro isnt [arg] `(is (not ~arg))) |
||||||
|
|
||||||
|
(defn register-publisher-fixture [f] |
||||||
|
(def psk (register-publisher pid)) |
||||||
|
(f) |
||||||
|
(revoke-publisher pid)) |
||||||
|
|
||||||
|
(deftest api |
||||||
|
(testing "API" |
||||||
|
(testing "signature implementation" |
||||||
|
(is (= 3577853521 (get-signature "Lorem ipsum dolor sit amet" "abcdef"))) |
||||||
|
(is (= -180217198 (get-signature "Notehub is a free pastebin for markdown" "12345678"))) |
||||||
|
(is (= 6887137804 (get-signature "abcd !§$%& параграф" "A VERY LONG KEY")))) |
||||||
|
(testing "publisher registration" |
||||||
|
(let [psk2 (register-publisher pid2)] |
||||||
|
(is (valid-publisher? pid)) |
||||||
|
(is (valid-publisher? pid2)) |
||||||
|
(is (revoke-publisher pid2)) |
||||||
|
(isnt (revoke-publisher "anyPID")) |
||||||
|
(isnt (valid-publisher? "any_PID")) |
||||||
|
(isnt (valid-publisher? pid2)))) |
||||||
|
(testing "note publishing & retrieval" |
||||||
|
(let [post-response (post-note note pid (get-signature note psk) ver) |
||||||
|
get-response (get-note ver (:noteID post-response))] |
||||||
|
(is (:success (:status post-response))) |
||||||
|
(is (:success (:status get-response))) |
||||||
|
(is (= note (:note get-response))) |
||||||
|
(is (= (:longURL post-response) (:longURL get-response))) |
||||||
|
(is (= (:shortURL post-response) (:shortURL get-response)))) |
||||||
|
(isnt (:success (:status (post-note note pid (get-signature note2 psk) ver)))) |
||||||
|
(isnt (:success (:status (post-note note pid (get-signature note "random_psk") ver)))) |
||||||
|
(is (:success (:status (post-note note pid (get-signature note psk) ver)))) |
||||||
|
(let [psk2 (register-publisher "randomPID")] |
||||||
|
(is (:success (:status (post-note note "randomPID" (get-signature note psk2) ver)))) |
||||||
|
(is (revoke-publisher pid2)) |
||||||
|
(isnt (:success (:status (post-note note "randomPID" (get-signature note psk2) ver)))))) |
||||||
|
(testing "note update" |
||||||
|
(let [post-response (post-note note pid (get-signature note psk) ver "passwd") |
||||||
|
note-id (:noteID post-response) |
||||||
|
get-response (get-note ver note-id) |
||||||
|
new-note "a new note!" |
||||||
|
update-response (update-note note-id new-note pid (get-signature new-note psk) ver "passwd") |
||||||
|
get-response-new (get-note ver note-id) |
||||||
|
update-response-false (update-note note-id new-note pid (get-signature new-note psk) ver "pass") |
||||||
|
] |
||||||
|
(is (:success (:status post-response))) |
||||||
|
(is (:success (:status get-response))) |
||||||
|
(is (:success (:status get-response-new))) |
||||||
|
(is (:success (:status update-response))) |
||||||
|
(isnt (:success (:status update-response-false))) |
||||||
|
(is (= note (:note get-response))) |
||||||
|
(is (= new-note (:note get-response-new))) |
||||||
|
(is (= new-note (:note (get-note note-id)))))))) |
||||||
Loading…
Reference in new issue