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"
|
||||
:description "HTTP client wrapper"
|
||||
:license {:name "Apache License, Version 2.0"
|
||||
|
@ -5,13 +8,18 @@
|
|||
|
||||
:dependencies [[org.clojure/clojure "1.5.1"]
|
||||
[http-kit "2.1.16"]
|
||||
[puppetlabs/kitchensink "0.5.2"]
|
||||
[puppetlabs/kitchensink ~ks-version]
|
||||
[org.clojure/tools.logging "0.2.6"]
|
||||
[org.slf4j/slf4j-api "1.7.6"]]
|
||||
|
||||
:source-paths ["src/clj"]
|
||||
: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"
|
||||
:username :env/clojars_jenkins_username
|
||||
:password :env/clojars_jenkins_password
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
(deftest ssl-config-with-files
|
||||
(let [req {:url "http://localhost"
|
||||
:method :get
|
||||
:ssl-cert (resource "resources/cert.pem")
|
||||
:ssl-key (resource "resources/key.pem")
|
||||
:ssl-ca-cert (resource "resources/ca.pem")}
|
||||
:ssl-cert (resource "ssl/cert.pem")
|
||||
:ssl-key (resource "ssl/key.pem")
|
||||
:ssl-ca-cert (resource "ssl/ca.pem")}
|
||||
configured-req (http/configure-ssl req)]
|
||||
|
||||
(testing "configure-ssl sets up an SSLEngine when given cert, key, ca-cert"
|
||||
|
@ -33,9 +33,9 @@
|
|||
(let [req {:url "http://localhost"
|
||||
:method :get
|
||||
:ssl-context (ks-ssl/pems->ssl-context
|
||||
(resource "resources/cert.pem")
|
||||
(resource "resources/key.pem")
|
||||
(resource "resources/ca.pem"))}
|
||||
(resource "ssl/cert.pem")
|
||||
(resource "ssl/key.pem")
|
||||
(resource "ssl/ca.pem"))}
|
||||
configured-req (http/configure-ssl req)]
|
||||
|
||||
(testing "configure-ssl uses an existing ssl context"
|
||||
|
@ -44,9 +44,9 @@
|
|||
(deftest ssl-config-with-sslengine
|
||||
(let [req {:url "http://localhost"
|
||||
:method :get
|
||||
:ssl-cert (resource "resources/cert.pem")
|
||||
:ssl-key (resource "resources/key.pem")
|
||||
:ssl-ca-cert (resource "resources/ca.pem")
|
||||
:ssl-cert (resource "ssl/cert.pem")
|
||||
:ssl-key (resource "ssl/key.pem")
|
||||
:ssl-ca-cert (resource "ssl/ca.pem")
|
||||
:sslengine "thing"}
|
||||
configured-req (http/configure-ssl req)]
|
||||
(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