Add integration tests for sync clients
Prior to this commit, we didn't actually have any tests that started a real web server and made a real request. This commit adds tests that do this for the clojure and Java synchronous clients, using SSL.
This commit is contained in:
parent
9020eed85f
commit
db53a75f34
6 changed files with 62 additions and 10 deletions
10
project.clj
10
project.clj
|
@ -1,3 +1,6 @@
|
||||||
|
(def ks-version "0.5.3")
|
||||||
|
(def tk-version "0.3.8")
|
||||||
|
|
||||||
(defproject puppetlabs/http-client "0.1.3-SNAPSHOT"
|
(defproject puppetlabs/http-client "0.1.3-SNAPSHOT"
|
||||||
:description "HTTP client wrapper"
|
:description "HTTP client wrapper"
|
||||||
:license {:name "Apache License, Version 2.0"
|
:license {:name "Apache License, Version 2.0"
|
||||||
|
@ -5,13 +8,18 @@
|
||||||
|
|
||||||
:dependencies [[org.clojure/clojure "1.5.1"]
|
:dependencies [[org.clojure/clojure "1.5.1"]
|
||||||
[http-kit "2.1.16"]
|
[http-kit "2.1.16"]
|
||||||
[puppetlabs/kitchensink "0.5.2"]
|
[puppetlabs/kitchensink ~ks-version]
|
||||||
[org.clojure/tools.logging "0.2.6"]
|
[org.clojure/tools.logging "0.2.6"]
|
||||||
[org.slf4j/slf4j-api "1.7.6"]]
|
[org.slf4j/slf4j-api "1.7.6"]]
|
||||||
|
|
||||||
:source-paths ["src/clj"]
|
:source-paths ["src/clj"]
|
||||||
:java-source-paths ["src/java"]
|
:java-source-paths ["src/java"]
|
||||||
|
|
||||||
|
:profiles {:dev {:dependencies [[puppetlabs/kitchensink ~ks-version :classifier "test"]
|
||||||
|
[puppetlabs/trapperkeeper ~tk-version]
|
||||||
|
[puppetlabs/trapperkeeper ~tk-version :classifier "test"]
|
||||||
|
[puppetlabs/trapperkeeper-webserver-jetty9 "0.3.5"]]}}
|
||||||
|
|
||||||
:deploy-repositories [["releases" {:url "https://clojars.org/repo"
|
:deploy-repositories [["releases" {:url "https://clojars.org/repo"
|
||||||
:username :env/clojars_jenkins_username
|
:username :env/clojars_jenkins_username
|
||||||
:password :env/clojars_jenkins_password
|
:password :env/clojars_jenkins_password
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
(deftest ssl-config-with-files
|
(deftest ssl-config-with-files
|
||||||
(let [req {:url "http://localhost"
|
(let [req {:url "http://localhost"
|
||||||
:method :get
|
:method :get
|
||||||
:ssl-cert (resource "resources/cert.pem")
|
:ssl-cert (resource "ssl/cert.pem")
|
||||||
:ssl-key (resource "resources/key.pem")
|
:ssl-key (resource "ssl/key.pem")
|
||||||
:ssl-ca-cert (resource "resources/ca.pem")}
|
:ssl-ca-cert (resource "ssl/ca.pem")}
|
||||||
configured-req (http/configure-ssl req)]
|
configured-req (http/configure-ssl req)]
|
||||||
|
|
||||||
(testing "configure-ssl sets up an SSLEngine when given cert, key, ca-cert"
|
(testing "configure-ssl sets up an SSLEngine when given cert, key, ca-cert"
|
||||||
|
@ -33,9 +33,9 @@
|
||||||
(let [req {:url "http://localhost"
|
(let [req {:url "http://localhost"
|
||||||
:method :get
|
:method :get
|
||||||
:ssl-context (ks-ssl/pems->ssl-context
|
:ssl-context (ks-ssl/pems->ssl-context
|
||||||
(resource "resources/cert.pem")
|
(resource "ssl/cert.pem")
|
||||||
(resource "resources/key.pem")
|
(resource "ssl/key.pem")
|
||||||
(resource "resources/ca.pem"))}
|
(resource "ssl/ca.pem"))}
|
||||||
configured-req (http/configure-ssl req)]
|
configured-req (http/configure-ssl req)]
|
||||||
|
|
||||||
(testing "configure-ssl uses an existing ssl context"
|
(testing "configure-ssl uses an existing ssl context"
|
||||||
|
@ -44,9 +44,9 @@
|
||||||
(deftest ssl-config-with-sslengine
|
(deftest ssl-config-with-sslengine
|
||||||
(let [req {:url "http://localhost"
|
(let [req {:url "http://localhost"
|
||||||
:method :get
|
:method :get
|
||||||
:ssl-cert (resource "resources/cert.pem")
|
:ssl-cert (resource "ssl/cert.pem")
|
||||||
:ssl-key (resource "resources/key.pem")
|
:ssl-key (resource "ssl/key.pem")
|
||||||
:ssl-ca-cert (resource "resources/ca.pem")
|
:ssl-ca-cert (resource "ssl/ca.pem")
|
||||||
:sslengine "thing"}
|
:sslengine "thing"}
|
||||||
configured-req (http/configure-ssl req)]
|
configured-req (http/configure-ssl req)]
|
||||||
(testing "configure-ssl does nothing when :sslengine is given"
|
(testing "configure-ssl does nothing when :sslengine is given"
|
||||||
|
|
44
test/puppetlabs/http/client/sync_test.clj
Normal file
44
test/puppetlabs/http/client/sync_test.clj
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
(ns puppetlabs.http.client.sync-test
|
||||||
|
(:import (com.puppetlabs.http.client SyncHttpClient RequestOptions))
|
||||||
|
(:require [clojure.test :refer :all]
|
||||||
|
[puppetlabs.trapperkeeper.core :as tk]
|
||||||
|
[puppetlabs.trapperkeeper.testutils.bootstrap :as testutils]
|
||||||
|
[puppetlabs.trapperkeeper.testutils.logging :as testlogging]
|
||||||
|
[puppetlabs.trapperkeeper.services.webserver.jetty9-service :as jetty9]
|
||||||
|
[puppetlabs.http.client.sync :as sync]))
|
||||||
|
|
||||||
|
(defn app
|
||||||
|
[req]
|
||||||
|
{:status 200
|
||||||
|
:body "Hello, World!"})
|
||||||
|
|
||||||
|
(tk/defservice test-web-service
|
||||||
|
[[:WebserverService add-ring-handler]]
|
||||||
|
(init [this context]
|
||||||
|
(add-ring-handler app "/hello")
|
||||||
|
context))
|
||||||
|
|
||||||
|
(deftest sync-client-test
|
||||||
|
(testlogging/with-test-logging
|
||||||
|
(testutils/with-app-with-config app
|
||||||
|
[jetty9/jetty9-service test-web-service]
|
||||||
|
{:webserver {:ssl-host "0.0.0.0"
|
||||||
|
:ssl-port 10080
|
||||||
|
:ssl-ca-cert "./dev-resources/ssl/ca.pem"
|
||||||
|
:ssl-cert "./dev-resources/ssl/cert.pem"
|
||||||
|
:ssl-key "./dev-resources/ssl/key.pem"}}
|
||||||
|
(testing "java sync client"
|
||||||
|
(let [options (.. (RequestOptions. "https://localhost:10080/hello/")
|
||||||
|
(setSslCert "./dev-resources/ssl/cert.pem")
|
||||||
|
(setSslKey "./dev-resources/ssl/key.pem")
|
||||||
|
(setSslCaCert "./dev-resources/ssl/ca.pem"))
|
||||||
|
response (SyncHttpClient/get options)]
|
||||||
|
(is (= 200 (.getStatus response)))
|
||||||
|
(is (= "Hello, World!" (slurp (.getBody response))))))
|
||||||
|
(testing "clojure sync client"
|
||||||
|
(let [response (sync/get "https://localhost:10080/hello/"
|
||||||
|
{:ssl-cert "./dev-resources/ssl/cert.pem"
|
||||||
|
:ssl-key "./dev-resources/ssl/key.pem"
|
||||||
|
:ssl-ca-cert "./dev-resources/ssl/ca.pem"})]
|
||||||
|
(is (= 200 (:status response)))
|
||||||
|
(is (= "Hello, World!" (slurp (:body response)))))))))
|
Loading…
Reference in a new issue