Skip to content

Commit

Permalink
added conn-mgr tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Paul Schorfheide committed Jun 7, 2012
1 parent 64e7f26 commit d5eaec4
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 0 deletions.
Binary file added test-resources/client-keystore
Binary file not shown.
Binary file modified test-resources/keystore
Binary file not shown.
48 changes: 48 additions & 0 deletions test/clj_http/test/conn_mgr.clj
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,48 @@
(ns clj-http.test.conn-mgr
(:use [clojure.test])
(:require [clj-http.conn-mgr :as conn-mgr]
[clj-http.core :as core]
[ring.adapter.jetty :as ring])
(:import (java.security KeyStore)
(org.apache.http.conn.ssl SSLSocketFactory)))

(def client-ks "test-resources/client-keystore")
(def client-ks-pass "keykey")
(def secure-request {:request-method :get :uri "/"
:server-port 18084 :scheme :https
:keystore client-ks :keystore-pass client-ks-pass
:trust-store client-ks :trust-store-pass client-ks-pass
:server-name "localhost" :insecure? true})

(defn secure-handler [req]
(if (nil? (:ssl-client-cert req))
{:status 403}
{:status 200}))

(deftest load-keystore
(let [ks (conn-mgr/get-keystore "test-resources/keystore" "keykey")]
(is (instance? KeyStore ks))
(is (> (.size ks) 0))))

(deftest keystore-scheme-factory
(let [sr (conn-mgr/get-keystore-scheme-registry {:keystore client-ks
:keystore-pass client-ks-pass
:trust-store client-ks
:trust-store-pass client-ks-pass})
socket-factory (.getSchemeSocketFactory (.get sr "https"))]
(is (instance? SSLSocketFactory socket-factory))))

(deftest ^{:integration true} ssl-client-cert-get
(let [t (doto (Thread. #(ring/run-jetty secure-handler
{:port 18083 :ssl-port 18084 :ssl? true
:keystore "test-resources/keystore"
:key-password "keykey"
:client-auth :want})) .start)]
(try
(let [resp (core/request {:request-method :get :uri "/get" :server-port 18084
:scheme :https :insecure? true :server-name "localhost"})]
(is (= 403 (:status resp))))
(let [resp (core/request secure-request)]
(is (= 200 (:status resp))))
(finally
(.stop t)))))

0 comments on commit d5eaec4

Please sign in to comment.