File: config.clj

package info (click to toggle)
rbac-client-clojure 1.1.5-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 288 kB
  • sloc: sh: 61; makefile: 27; xml: 11
file content (47 lines) | stat: -rw-r--r-- 1,958 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(ns puppetlabs.rbac-client.testutils.config
  (:import [java.net ConnectException Socket]))

(defn random-port
  "Returns a random port number in the 'ephemeral port range' of 49152 - 65535.
  Attempts to return an open port, but this cannot be guaranteed because another
  process may have bound to the port after the port was checked."
  []
  (let [port (+ 49152 (rand-int (- 65536 49152)))
        open? (try
                (-> (Socket. "localhost" port) .close)
                false
                (catch ConnectException _
                  true))]
    (if open?
      port
      (recur))))

(def client-ssl-config
  "A puppetlabs.http.client SSL configuration with a client certificate,
  referencing the SSL files in the `dev-resources/ssl` directory."
  {:ssl-ca-cert "dev-resources/ssl/ca.pem"
   :ssl-cert "dev-resources/ssl/cert.pem"
   :ssl-key "dev-resources/ssl/key.pem"})

(defn jetty-ssl-config
  "Return a TK Webserver Jetty9 config that defines an SSL server running on
  `localhost` on a random port, and uses the SSL files in the
  `dev-resources/ssl` directory. Note that while an effort is made to choose an
  open port, the port cannot be guaranteed to be open."
  []
  (merge client-ssl-config
         {:ssl-host "localhost"
          :ssl-port (random-port)
          :client-auth "need"}))

(defn rbac-client-config
  "Given a Jetty SSL config map, return a config map for use with TK testutils'
  `with-app-with-config` that contains configuration for the remote
  implementation of the RBAC Consumer Service to connect to the SSL server
  specified in the Jetty config."
  [jetty-ssl-config]
  (let [{:keys [ssl-host ssl-port]} jetty-ssl-config]
    {:rbac-consumer {:api-url (format "https://%s:%s/rbac-api" ssl-host ssl-port)}
     :activity-consumer {:api-url (format "https://%s:%s/activity-api" ssl-host ssl-port)}
     :global {:certs client-ssl-config
              :logging-config "dev-resources/logback-test.xml"}}))