|
1 |
| -(ns clj-http.lite.core-test |
2 |
| - (:require [clj-http.lite.core :as core] |
| 1 | +(ns clj-http.lite.integration-test |
| 2 | + (:require [clj-http.lite.client :as client] |
| 3 | + [clj-http.lite.core :as core] |
3 | 4 | [clj-http.lite.util :as util]
|
4 | 5 | [clojure.test :refer [deftest is use-fixtures]]
|
5 | 6 | [clojure.string :as str]
|
|
91 | 92 | (defn slurp-body [req]
|
92 | 93 | (slurp (:body req)))
|
93 | 94 |
|
94 |
| -(deftest ^{:integration true} makes-get-request |
| 95 | +;; |
| 96 | +;; Lower level internal unwrapped core requests |
| 97 | +;; |
| 98 | +(deftest makes-get-request |
95 | 99 | (let [resp (request {:request-method :get :uri "/get"})]
|
96 | 100 | (is (= 200 (:status resp)))
|
97 | 101 | (is (= "get" (slurp-body resp)))))
|
98 | 102 |
|
99 |
| -(deftest ^{:integration true} makes-head-request |
| 103 | +(deftest makes-head-request |
100 | 104 | (let [resp (request {:request-method :head :uri "/head"})]
|
101 | 105 | (is (= 200 (:status resp)))
|
102 | 106 | (is (nil? (:body resp)))))
|
103 | 107 |
|
104 |
| -(deftest ^{:integration true} sets-content-type-with-charset |
| 108 | +(deftest sets-content-type-with-charset |
105 | 109 | (let [resp (request {:request-method :get :uri "/content-type"
|
106 | 110 | :content-type "text/plain" :character-encoding "UTF-8"})]
|
107 | 111 | (is (= "text/plain; charset=UTF-8" (slurp-body resp)))))
|
108 | 112 |
|
109 |
| -(deftest ^{:integration true} sets-content-type-without-charset |
| 113 | +(deftest sets-content-type-without-charset |
110 | 114 | (let [resp (request {:request-method :get :uri "/content-type"
|
111 | 115 | :content-type "text/plain"})]
|
112 | 116 | (is (= "text/plain" (slurp-body resp)))))
|
113 | 117 |
|
114 |
| -(deftest ^{:integration true} sets-arbitrary-headers |
| 118 | +(deftest sets-arbitrary-headers |
115 | 119 | (let [resp (request {:request-method :get :uri "/header"
|
116 | 120 | :headers {"X-My-Header" "header-val"}})]
|
117 | 121 | (is (= "header-val" (slurp-body resp)))))
|
118 | 122 |
|
119 |
| -(deftest ^{:integration true} sends-and-returns-byte-array-body |
| 123 | +(deftest sends-and-returns-byte-array-body |
120 | 124 | (let [resp (request {:request-method :post :uri "/post"
|
121 | 125 | :body (util/utf8-bytes "contents")})]
|
122 | 126 | (is (= 200 (:status resp)))
|
123 | 127 | (is (= "contents" (slurp-body resp)))))
|
124 | 128 |
|
125 |
| -(deftest ^{:integration true} returns-arbitrary-headers |
| 129 | +(deftest returns-arbitrary-headers |
126 | 130 | (let [resp (request {:request-method :get :uri "/get"})]
|
127 | 131 | (is (string? (get-in resp [:headers "date"])))))
|
128 | 132 |
|
129 |
| -(deftest ^{:integration true} returns-status-on-exceptional-responses |
| 133 | +(deftest returns-status-on-exceptional-responses |
130 | 134 | (let [resp (request {:request-method :get :uri "/error"})]
|
131 | 135 | (is (= 500 (:status resp)))))
|
132 | 136 |
|
133 |
| -(deftest ^{:integration true} returns-status-on-redirect |
| 137 | +(deftest returns-status-on-redirect |
134 | 138 | (let [resp (request {:request-method :get :uri "/redirect" :follow-redirects false})]
|
135 | 139 | (is (= 302 (:status resp)))))
|
136 | 140 |
|
137 |
| -(deftest ^{:integration true} auto-follows-on-redirect |
| 141 | +(deftest auto-follows-on-redirect |
138 | 142 | (let [resp (request {:request-method :get :uri "/redirect"})]
|
139 | 143 | (is (= 200 (:status resp)))
|
140 | 144 | (is (= "get" (slurp-body resp)))))
|
141 | 145 |
|
142 |
| -(deftest ^{:integration true} sets-conn-timeout |
| 146 | +(deftest sets-conn-timeout |
143 | 147 | ;; indirect way of testing if a connection timeout will fail by passing in an
|
144 | 148 | ;; invalid argument
|
145 | 149 | (try
|
|
148 | 152 | (catch Exception e
|
149 | 153 | (is (= IllegalArgumentException (class e))))))
|
150 | 154 |
|
151 |
| -(deftest ^{:integration true} sets-socket-timeout |
| 155 | +(deftest sets-socket-timeout |
152 | 156 | (try
|
153 | 157 | (request {:request-method :get :uri "/timeout" :socket-timeout 1})
|
154 | 158 | (throw (Exception. "Shouldn't get here."))
|
155 | 159 | (catch Exception e
|
156 | 160 | (is (or (= java.net.SocketTimeoutException (class e))
|
157 | 161 | (= java.net.SocketTimeoutException (class (.getCause e))))))))
|
158 | 162 |
|
159 |
| -(deftest ^{:integration true} delete-with-body |
| 163 | +(deftest delete-with-body |
160 | 164 | (let [resp (request {:request-method :delete :uri "/delete-with-body"
|
161 | 165 | :body (.getBytes "foo bar")})]
|
162 | 166 | (is (= 200 (:status resp)))
|
163 | 167 | (is (= "delete-with-body" (slurp-body resp)))))
|
164 | 168 |
|
165 |
| -(deftest ^{:integration true} self-signed-ssl-get |
| 169 | +(deftest self-signed-ssl-get |
166 | 170 | (let [client-opts {:request-method :get
|
167 | 171 | :uri "/get"
|
168 | 172 | :scheme :https
|
|
177 | 181 | (request client-opts))
|
178 | 182 | "subsequent bad cert fetch throws")))
|
179 | 183 |
|
180 |
| -(deftest ^{:integration true} t-save-request-obj |
| 184 | +(deftest t-save-request-obj |
181 | 185 | (let [resp (request {:request-method :post :uri "/post"
|
182 | 186 | :body (.getBytes "foo bar" "UTF-8")
|
183 | 187 | :save-request? true})]
|
|
192 | 196 | :request
|
193 | 197 | (dissoc :body))))))
|
194 | 198 |
|
195 |
| -(deftest ^{:integration true} t-streaming-response |
| 199 | +(deftest t-streaming-response |
196 | 200 | (let [stream (:body (request {:request-method :get :uri "/get" :as :stream}))
|
197 | 201 | body (slurp stream)]
|
198 | 202 | (is (= "get" body))))
|
| 203 | + |
| 204 | +;; |
| 205 | +;; API level client wrapped requests |
| 206 | +;; |
| 207 | +(deftest roundtrip |
| 208 | + ;; roundtrip with scheme as a keyword |
| 209 | + (let [resp (client/request (merge (base-req) {:uri "/get" :method :get}))] |
| 210 | + (is (= 200 (:status resp))) |
| 211 | + (is (= "get" (:body resp)))) |
| 212 | + ;; roundtrip with scheme as a string |
| 213 | + (let [resp (client/request (merge (base-req) {:uri "/get" |
| 214 | + :method :get |
| 215 | + :scheme "http"}))] |
| 216 | + (is (= 200 (:status resp))) |
| 217 | + (is (= "get" (:body resp))))) |
| 218 | + |
| 219 | +(deftest basic-auth-no-creds |
| 220 | + (let [resp (client/request (merge (base-req) {:method :get |
| 221 | + :uri "/basic-auth" |
| 222 | + :throw-exceptions false}))] |
| 223 | + (is (= 401 (:status resp))) |
| 224 | + (is (= "denied" (:body resp))))) |
| 225 | + |
| 226 | +(deftest basic-auth-bad-creds |
| 227 | + (let [resp (client/request (merge (base-req) {:method :get |
| 228 | + :uri "/basic-auth" |
| 229 | + :throw-exceptions false |
| 230 | + :basic-auth "username:nope"}))] |
| 231 | + (is (= 401 (:status resp))) |
| 232 | + (is (= "denied" (:body resp))))) |
| 233 | + |
| 234 | +(deftest basic-auth-creds-as-basic-auth |
| 235 | + (let [resp (client/request (merge (base-req) {:method :get |
| 236 | + :uri "/basic-auth" |
| 237 | + :basic-auth "username:password"}))] |
| 238 | + (is (= 200 (:status resp))) |
| 239 | + (is (= "welcome" (:body resp))))) |
| 240 | + |
| 241 | +(deftest basic-auth-creds-as-user-info |
| 242 | + (let [resp (client/request (merge (base-req) {:method :get |
| 243 | + :uri "/basic-auth" |
| 244 | + :user-info "username:password"}))] |
| 245 | + (is (= 200 (:status resp))) |
| 246 | + (is (= "welcome" (:body resp))))) |
| 247 | + |
| 248 | +(deftest basic-auth-creds-from-url |
| 249 | + (let [resp (client/request {:method :get |
| 250 | + :url (format "http://username:password@localhost:%d/basic-auth" (current-port))})] |
| 251 | + (is (= 200 (:status resp))) |
| 252 | + (is (= "welcome" (:body resp))))) |
0 commit comments