Merge lp:~nicopace/charms/trusty/squid-reverseproxy/all-tests into lp:charms/trusty/squid-reverseproxy
- Trusty Tahr (14.04)
- all-tests
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 53 |
Proposed branch: | lp:~nicopace/charms/trusty/squid-reverseproxy/all-tests |
Merge into: | lp:charms/trusty/squid-reverseproxy |
Diff against target: |
481 lines (+432/-0) 10 files modified
tests/00-setup (+16/-0) tests/12-nagios.py (+46/-0) tests/13-squid-apache.py (+44/-0) tests/14-listening-port.py (+50/-0) tests/15-port-options.py (+71/-0) tests/16-https.py (+59/-0) tests/17-via.py (+52/-0) tests/19-snmp.py (+45/-0) tests/cert.cert (+21/-0) tests/cert.key (+28/-0) |
To merge this branch: | bzr merge lp:~nicopace/charms/trusty/squid-reverseproxy/all-tests |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Whit Morriss (community) | Disapprove | ||
charmers | Pending | ||
Review via email: mp+251999@code.launchpad.net |
Commit message
Description of the change
Battery of tests for squid-reverseproxy.
They will all fail, as there is an open bug on this charm: https:/
Whit Morriss (whitmo) wrote : | # |
Whit Morriss (whitmo) wrote : | # |
https:/
Package install and python compatibility issue.
-1 needs fixing
nicopace (nicopace) wrote : | # |
The test implementation doesn't have to fix existing issues.
This charm already fails to install without this patch.
On Tuesday, March 10, 2015, Whit Morriss <email address hidden> wrote:
> Review: Disapprove
>
> https:/
>
> Package install and python compatibility issue.
>
> -1 needs fixing
> --
>
> https:/
> You are the owner of
> lp:~nicopace/charms/trusty/squid-reverseproxy/all-tests.
>
--
Ing. Nicolás Pace
nicopace (nicopace) wrote : | # |
The test implementation doesn't have to fix existing issues.
This charm already fails to install without this patch.
Whit Morriss (whitmo) wrote : | # |
while true, I can't recommend merging and pushing to the store while there
is this issue.
-w
On Tue, Mar 10, 2015 at 10:42 AM, nicopace <email address hidden> wrote:
> The test implementation doesn't have to fix existing issues.
> This charm already fails to install without this patch.
> --
>
> https:/
> You are reviewing the proposed merge of
> lp:~nicopace/charms/trusty/squid-reverseproxy/all-tests into
> lp:charms/trusty/squid-reverseproxy.
>
--
---------------
D. Whit Morriss
Developer, Juju Ecosystem
Canonical USA
Whit Morriss (whitmo) wrote : | # |
nico, I'm attempting to contact the maintainers to get the base issues fixed.
Preview Diff
1 | === added file 'tests/00-setup' | |||
2 | --- tests/00-setup 1970-01-01 00:00:00 +0000 | |||
3 | +++ tests/00-setup 2015-03-05 18:48:27 +0000 | |||
4 | @@ -0,0 +1,16 @@ | |||
5 | 1 | #!/bin/bash | ||
6 | 2 | |||
7 | 3 | # This script sets up the requirements for amulet tests. | ||
8 | 4 | |||
9 | 5 | set -x | ||
10 | 6 | |||
11 | 7 | # Check if amulet is installed before adding the stable repository and updating apt-get. | ||
12 | 8 | dpkg -s amulet | ||
13 | 9 | if [ $? -ne 0 ]; then | ||
14 | 10 | sudo add-apt-repository -y ppa:juju/stable | ||
15 | 11 | sudo apt-get update -qq | ||
16 | 12 | sudo apt-get install -y amulet | ||
17 | 13 | fi | ||
18 | 14 | |||
19 | 15 | # Install any additional python packages and other required software. | ||
20 | 16 | sudo apt-get install -y python3-requests squidclient | ||
21 | 0 | 17 | ||
22 | === added file 'tests/12-nagios.py' | |||
23 | --- tests/12-nagios.py 1970-01-01 00:00:00 +0000 | |||
24 | +++ tests/12-nagios.py 2015-03-05 18:48:27 +0000 | |||
25 | @@ -0,0 +1,46 @@ | |||
26 | 1 | #!/usr/bin/python3 | ||
27 | 2 | import amulet | ||
28 | 3 | import requests | ||
29 | 4 | |||
30 | 5 | seconds = 20000 | ||
31 | 6 | |||
32 | 7 | d = amulet.Deployment(series='trusty') | ||
33 | 8 | |||
34 | 9 | d.add('squid-reverseproxy') | ||
35 | 10 | d.add('nagios') | ||
36 | 11 | d.add('nrpe-external-master') | ||
37 | 12 | |||
38 | 13 | d.relate('nagios:monitors', 'squid-reverseproxy:monitors') | ||
39 | 14 | d.relate('nrpe-external-master:general-info', 'squid-reverseproxy:juju-info') | ||
40 | 15 | d.relate('nrpe-external-master:monitors', 'nagios:monitors') | ||
41 | 16 | |||
42 | 17 | d.expose('nagios') | ||
43 | 18 | |||
44 | 19 | try: | ||
45 | 20 | d.setup(timeout=seconds) | ||
46 | 21 | except amulet.helpers.TimeoutError: | ||
47 | 22 | amulet.raise_status(amulet.SKIP, msg="Environment wasn't stood up in time") | ||
48 | 23 | except: | ||
49 | 24 | raise | ||
50 | 25 | |||
51 | 26 | |||
52 | 27 | ## | ||
53 | 28 | # Set relationship aliases | ||
54 | 29 | ## | ||
55 | 30 | squid_unit = d.sentry.unit['squid/0'] | ||
56 | 31 | nagios_unit = d.sentry.unit['nagios/0'] | ||
57 | 32 | |||
58 | 33 | |||
59 | 34 | def test_hosts_being_monitored(): | ||
60 | 35 | nagpwd = nagios_unit.file_contents('/var/lib/juju/nagios.passwd').strip() | ||
61 | 36 | host_url = ("http://%s/cgi-bin/nagios3/status.cgi?" | ||
62 | 37 | "hostgroup=all&style=hostdetail") | ||
63 | 38 | r = requests.get(host_url % nagios_unit.info['public-address'], | ||
64 | 39 | auth=('nagiosadmin', nagpwd)) | ||
65 | 40 | if not r.text.find('squid'): | ||
66 | 41 | amulet.raise_status(amulet.ERROR, | ||
67 | 42 | msg='Nagios is not monitoring the' + | ||
68 | 43 | ' host it supposed to.') | ||
69 | 44 | |||
70 | 45 | |||
71 | 46 | test_hosts_being_monitored() | ||
72 | 0 | 47 | ||
73 | === added file 'tests/13-squid-apache.py' | |||
74 | --- tests/13-squid-apache.py 1970-01-01 00:00:00 +0000 | |||
75 | +++ tests/13-squid-apache.py 2015-03-05 18:48:27 +0000 | |||
76 | @@ -0,0 +1,44 @@ | |||
77 | 1 | #!/usr/bin/python3 | ||
78 | 2 | import amulet | ||
79 | 3 | import requests | ||
80 | 4 | |||
81 | 5 | seconds = 20000 | ||
82 | 6 | |||
83 | 7 | d = amulet.Deployment(series='trusty') | ||
84 | 8 | |||
85 | 9 | d.add('apache2') | ||
86 | 10 | d.add('squid-reverseproxy') | ||
87 | 11 | |||
88 | 12 | d.relate('apache2:website-cache', 'squid-reverseproxy:cached-website') | ||
89 | 13 | |||
90 | 14 | d.expose('apache2') | ||
91 | 15 | d.expose('squid-reverseproxy') | ||
92 | 16 | |||
93 | 17 | try: | ||
94 | 18 | d.setup(timeout=seconds) | ||
95 | 19 | except amulet.helpers.TimeoutError: | ||
96 | 20 | amulet.raise_status(amulet.SKIP, msg="Environment wasn't stood up in time") | ||
97 | 21 | except: | ||
98 | 22 | raise | ||
99 | 23 | |||
100 | 24 | |||
101 | 25 | ## | ||
102 | 26 | # Set relationship aliases | ||
103 | 27 | ## | ||
104 | 28 | squid_unit = d.sentry.unit['squid-reverseproxy/0'] | ||
105 | 29 | apache_unit = d.sentry.unit['apache2/0'] | ||
106 | 30 | |||
107 | 31 | |||
108 | 32 | def test_web_proxy(): | ||
109 | 33 | url = 'http://%s/' | ||
110 | 34 | squid_request = requests.get(url % squid_unit.info['public-address']) | ||
111 | 35 | apache_request = requests.get(url % apache_unit.info['public-address']) | ||
112 | 36 | if not squid_request.ok or not apache_request.ok: | ||
113 | 37 | amulet.raise_status(amulet.FAIL, | ||
114 | 38 | msg="Error connecting.") | ||
115 | 39 | if squid_request.text != apache_request.text: | ||
116 | 40 | amulet.raise_status(amulet.FAIL, | ||
117 | 41 | msg="Squid response different from apache.") | ||
118 | 42 | |||
119 | 43 | |||
120 | 44 | test_web_proxy() | ||
121 | 0 | 45 | ||
122 | === added file 'tests/14-listening-port.py' | |||
123 | --- tests/14-listening-port.py 1970-01-01 00:00:00 +0000 | |||
124 | +++ tests/14-listening-port.py 2015-03-05 18:48:27 +0000 | |||
125 | @@ -0,0 +1,50 @@ | |||
126 | 1 | #!/usr/bin/python3 | ||
127 | 2 | import amulet | ||
128 | 3 | import requests | ||
129 | 4 | |||
130 | 5 | seconds = 20000 | ||
131 | 6 | PORT = 9999 | ||
132 | 7 | |||
133 | 8 | d = amulet.Deployment(series='trusty') | ||
134 | 9 | |||
135 | 10 | d.add('apache2') | ||
136 | 11 | d.add('squid-reverseproxy') | ||
137 | 12 | |||
138 | 13 | d.configure('squid-reverseproxy', { | ||
139 | 14 | 'port': PORT | ||
140 | 15 | }) | ||
141 | 16 | |||
142 | 17 | d.relate('apache2:website-cache', 'squid-reverseproxy:cached-website') | ||
143 | 18 | |||
144 | 19 | d.expose('apache2') | ||
145 | 20 | d.expose('squid-reverseproxy') | ||
146 | 21 | |||
147 | 22 | try: | ||
148 | 23 | d.setup(timeout=seconds) | ||
149 | 24 | except amulet.helpers.TimeoutError: | ||
150 | 25 | amulet.raise_status(amulet.SKIP, msg="Environment wasn't stood up in time") | ||
151 | 26 | except: | ||
152 | 27 | raise | ||
153 | 28 | |||
154 | 29 | |||
155 | 30 | ## | ||
156 | 31 | # Set relationship aliases | ||
157 | 32 | ## | ||
158 | 33 | squid_unit = d.sentry.unit['squid-reverseproxy/0'] | ||
159 | 34 | apache_unit = d.sentry.unit['apache2/0'] | ||
160 | 35 | |||
161 | 36 | |||
162 | 37 | def test_web_proxy(): | ||
163 | 38 | squid_request = requests.get( | ||
164 | 39 | 'http://%s:%s/' % (squid_unit.info['public-address'], PORT)) | ||
165 | 40 | apache_request = requests.get( | ||
166 | 41 | 'http://%s/' % apache_unit.info['public-address']) | ||
167 | 42 | if not squid_request.ok or not apache_request.ok: | ||
168 | 43 | amulet.raise_status(amulet.FAIL, | ||
169 | 44 | msg="Error connecting.") | ||
170 | 45 | if squid_request.text != apache_request.text: | ||
171 | 46 | amulet.raise_status(amulet.FAIL, | ||
172 | 47 | msg="Squid response different from apache.") | ||
173 | 48 | |||
174 | 49 | |||
175 | 50 | test_web_proxy() | ||
176 | 0 | 51 | ||
177 | === added file 'tests/15-port-options.py' | |||
178 | --- tests/15-port-options.py 1970-01-01 00:00:00 +0000 | |||
179 | +++ tests/15-port-options.py 2015-03-05 18:48:27 +0000 | |||
180 | @@ -0,0 +1,71 @@ | |||
181 | 1 | #!/usr/bin/python3 | ||
182 | 2 | import sys | ||
183 | 3 | import time | ||
184 | 4 | import json | ||
185 | 5 | |||
186 | 6 | import amulet | ||
187 | 7 | import requests | ||
188 | 8 | |||
189 | 9 | seconds = 20000 | ||
190 | 10 | |||
191 | 11 | d = amulet.Deployment(series='trusty') | ||
192 | 12 | |||
193 | 13 | d.add('kibana') | ||
194 | 14 | d.add('elasticsearch') | ||
195 | 15 | d.add('logstash-indexer', charm='cs:precise/logstash-indexer') | ||
196 | 16 | |||
197 | 17 | d.add_unit('elasticsearch', 2) | ||
198 | 18 | |||
199 | 19 | d.relate('logstash-indexer:cluster', 'elasticsearch:client') | ||
200 | 20 | d.relate('kibana:rest', 'elasticsearch:client') | ||
201 | 21 | |||
202 | 22 | d.expose('kibana') | ||
203 | 23 | |||
204 | 24 | try: | ||
205 | 25 | d.setup(timeout=seconds) | ||
206 | 26 | except amulet.helpers.TimeoutError: | ||
207 | 27 | amulet.raise_status(amulet.SKIP, msg="Environment wasn't stood up in time") | ||
208 | 28 | except: | ||
209 | 29 | raise | ||
210 | 30 | |||
211 | 31 | |||
212 | 32 | ## | ||
213 | 33 | # Set relationship aliases | ||
214 | 34 | ## | ||
215 | 35 | kibana_unit = d.sentry.unit['kibana/0'] | ||
216 | 36 | elasticsearch_unit = d.sentry.unit['elasticsearch/1'] | ||
217 | 37 | |||
218 | 38 | |||
219 | 39 | def test_web_interface(): | ||
220 | 40 | |||
221 | 41 | elasticsearch_unit.run(""" | ||
222 | 42 | curl -X POST 'http://127.0.0.1:9200/person/1' -d '{ | ||
223 | 43 | "info" : { | ||
224 | 44 | "height" : 2, | ||
225 | 45 | "width" : 20 | ||
226 | 46 | } | ||
227 | 47 | }' | ||
228 | 48 | """) | ||
229 | 49 | |||
230 | 50 | time.sleep(3) | ||
231 | 51 | |||
232 | 52 | url = 'http://%s/_all/_search' % kibana_unit.info['public-address'] | ||
233 | 53 | r = requests.get(url, | ||
234 | 54 | data=json.load(open('11-scale-elastic-query.json'))) | ||
235 | 55 | if not r.ok: | ||
236 | 56 | amulet.raise_status(amulet.FAIL, | ||
237 | 57 | msg="Error connecting.") | ||
238 | 58 | try: | ||
239 | 59 | result = r.json() | ||
240 | 60 | if result['hits']['total'] != 1: | ||
241 | 61 | amulet.raise_status(amulet.FAIL, | ||
242 | 62 | msg="Error inserting value in elasticsearch.") | ||
243 | 63 | except ValueError: | ||
244 | 64 | exc_type, value, traceback = sys.exc_info() | ||
245 | 65 | exc_text = "Exception: (%s) %s. %s" % (value, exc_type, traceback) | ||
246 | 66 | amulet.raise_status(amulet.FAIL, | ||
247 | 67 | msg="Value returned not a valid json." + r.text + | ||
248 | 68 | exc_text) | ||
249 | 69 | |||
250 | 70 | |||
251 | 71 | test_web_interface() | ||
252 | 0 | 72 | ||
253 | === added file 'tests/16-https.py' | |||
254 | --- tests/16-https.py 1970-01-01 00:00:00 +0000 | |||
255 | +++ tests/16-https.py 2015-03-05 18:48:27 +0000 | |||
256 | @@ -0,0 +1,59 @@ | |||
257 | 1 | #!/usr/bin/python3 | ||
258 | 2 | from base64 import b64encode | ||
259 | 3 | |||
260 | 4 | import amulet | ||
261 | 5 | import requests | ||
262 | 6 | |||
263 | 7 | seconds = 20000 | ||
264 | 8 | |||
265 | 9 | d = amulet.Deployment(series='trusty') | ||
266 | 10 | |||
267 | 11 | d.add('apache2') | ||
268 | 12 | d.add('squid-reverseproxy') | ||
269 | 13 | |||
270 | 14 | d.configure('squid-reverseproxy', { | ||
271 | 15 | 'enable_https': True, | ||
272 | 16 | 'ssl_key': b64encode(open('cert.key').read()), | ||
273 | 17 | 'ssl_cert': b64encode(open('cert.cert').read()) | ||
274 | 18 | }) | ||
275 | 19 | |||
276 | 20 | d.relate('apache2:website-cache', 'squid-reverseproxy:cached-website') | ||
277 | 21 | |||
278 | 22 | d.expose('apache2') | ||
279 | 23 | d.expose('squid-reverseproxy') | ||
280 | 24 | |||
281 | 25 | try: | ||
282 | 26 | d.setup(timeout=seconds) | ||
283 | 27 | except amulet.helpers.TimeoutError: | ||
284 | 28 | amulet.raise_status(amulet.SKIP, msg="Environment wasn't stood up in time") | ||
285 | 29 | except: | ||
286 | 30 | raise | ||
287 | 31 | |||
288 | 32 | |||
289 | 33 | ## | ||
290 | 34 | # Set relationship aliases | ||
291 | 35 | ## | ||
292 | 36 | squid_unit = d.sentry.unit['squid-reverseproxy/0'] | ||
293 | 37 | apache_unit = d.sentry.unit['apache2/0'] | ||
294 | 38 | |||
295 | 39 | |||
296 | 40 | def test_web_proxy(): | ||
297 | 41 | try: | ||
298 | 42 | squid_request = requests.get( | ||
299 | 43 | 'https://%s/' % squid_unit.info['public-address'], | ||
300 | 44 | cert=('cert.cert', 'cert.key') | ||
301 | 45 | ) | ||
302 | 46 | apache_request = requests.get( | ||
303 | 47 | 'http://%s/' % apache_unit.info['public-address']) | ||
304 | 48 | if not squid_request.ok or not apache_request.ok: | ||
305 | 49 | amulet.raise_status(amulet.FAIL, | ||
306 | 50 | msg="Error connecting.") | ||
307 | 51 | if squid_request.text != apache_request.text: | ||
308 | 52 | amulet.raise_status(amulet.FAIL, | ||
309 | 53 | msg="Squid response different from apache.") | ||
310 | 54 | except requests.exceptions.SSLError: | ||
311 | 55 | amulet.raise_status(amulet.FAIL, | ||
312 | 56 | msg="SSL wrongly configured.") | ||
313 | 57 | |||
314 | 58 | |||
315 | 59 | test_web_proxy() | ||
316 | 0 | 60 | ||
317 | === added file 'tests/17-via.py' | |||
318 | --- tests/17-via.py 1970-01-01 00:00:00 +0000 | |||
319 | +++ tests/17-via.py 2015-03-05 18:48:27 +0000 | |||
320 | @@ -0,0 +1,52 @@ | |||
321 | 1 | #!/usr/bin/python3 | ||
322 | 2 | import amulet | ||
323 | 3 | import requests | ||
324 | 4 | |||
325 | 5 | seconds = 20000 | ||
326 | 6 | |||
327 | 7 | d = amulet.Deployment(series='trusty') | ||
328 | 8 | |||
329 | 9 | d.add('apache2') | ||
330 | 10 | d.add('squid-reverseproxy') | ||
331 | 11 | |||
332 | 12 | d.relate('apache2:website-cache', 'squid-reverseproxy:cached-website') | ||
333 | 13 | |||
334 | 14 | d.expose('apache2') | ||
335 | 15 | d.expose('squid-reverseproxy') | ||
336 | 16 | |||
337 | 17 | try: | ||
338 | 18 | d.setup(timeout=seconds) | ||
339 | 19 | except amulet.helpers.TimeoutError: | ||
340 | 20 | amulet.raise_status(amulet.SKIP, msg="Environment wasn't stood up in time") | ||
341 | 21 | except: | ||
342 | 22 | raise | ||
343 | 23 | |||
344 | 24 | |||
345 | 25 | ## | ||
346 | 26 | # Set relationship aliases | ||
347 | 27 | ## | ||
348 | 28 | squid_unit = d.sentry.unit['squid-reverseproxy/0'] | ||
349 | 29 | apache_unit = d.sentry.unit['apache2/0'] | ||
350 | 30 | |||
351 | 31 | |||
352 | 32 | def test_via_header(): | ||
353 | 33 | url = 'http://%s/' | ||
354 | 34 | squid_request = requests.get(url % squid_unit.info['public-address']) | ||
355 | 35 | # check headers | ||
356 | 36 | if 'Via' not in squid_request.headers: | ||
357 | 37 | amulet.raise_status(amulet.FAIL, | ||
358 | 38 | msg="Environment wasn't stood up in time") | ||
359 | 39 | |||
360 | 40 | # config via off | ||
361 | 41 | d.configure('squid-reverseproxy', { | ||
362 | 42 | 'via': 'off' | ||
363 | 43 | }) | ||
364 | 44 | d.sentry.wait() | ||
365 | 45 | |||
366 | 46 | # check headers again | ||
367 | 47 | if 'Via' in squid_request.headers: | ||
368 | 48 | amulet.raise_status(amulet.FAIL, | ||
369 | 49 | msg="Environment wasn't stood up in time") | ||
370 | 50 | |||
371 | 51 | |||
372 | 52 | test_via_header() | ||
373 | 0 | 53 | ||
374 | === added file 'tests/19-snmp.py' | |||
375 | --- tests/19-snmp.py 1970-01-01 00:00:00 +0000 | |||
376 | +++ tests/19-snmp.py 2015-03-05 18:48:27 +0000 | |||
377 | @@ -0,0 +1,45 @@ | |||
378 | 1 | #!/usr/bin/python3 | ||
379 | 2 | import subprocess | ||
380 | 3 | |||
381 | 4 | import amulet | ||
382 | 5 | |||
383 | 6 | seconds = 20000 | ||
384 | 7 | |||
385 | 8 | d = amulet.Deployment(series='trusty') | ||
386 | 9 | |||
387 | 10 | d.add('apache2') | ||
388 | 11 | d.add('squid-reverseproxy') | ||
389 | 12 | |||
390 | 13 | d.configure('squid-reverseproxy', { | ||
391 | 14 | 'snmp_community': 'juju', | ||
392 | 15 | 'snmp_allowed_ips': '0.0.0.0/0' | ||
393 | 16 | }) | ||
394 | 17 | |||
395 | 18 | d.relate('apache2:website-cache', 'squid-reverseproxy:cached-website') | ||
396 | 19 | |||
397 | 20 | d.expose('squid-reverseproxy') | ||
398 | 21 | |||
399 | 22 | try: | ||
400 | 23 | d.setup(timeout=seconds) | ||
401 | 24 | except amulet.helpers.TimeoutError: | ||
402 | 25 | amulet.raise_status(amulet.SKIP, msg="Environment wasn't stood up in time") | ||
403 | 26 | except: | ||
404 | 27 | raise | ||
405 | 28 | |||
406 | 29 | |||
407 | 30 | ## | ||
408 | 31 | # Set relationship aliases | ||
409 | 32 | ## | ||
410 | 33 | squid_unit = d.sentry.unit['squid-reverseproxy/0'] | ||
411 | 34 | |||
412 | 35 | |||
413 | 36 | def test_snmp(): | ||
414 | 37 | try: | ||
415 | 38 | subprocess.check_output( | ||
416 | 39 | "squidclient -h %s mgr:info" % squid_unit.info['public-address']) | ||
417 | 40 | except subprocess.CalledProcessError: | ||
418 | 41 | amulet.raise_status(amulet.FAIL, | ||
419 | 42 | msg="Wasn't able to connect via SNMP.") | ||
420 | 43 | |||
421 | 44 | |||
422 | 45 | test_snmp() | ||
423 | 0 | 46 | ||
424 | === added file 'tests/cert.cert' | |||
425 | --- tests/cert.cert 1970-01-01 00:00:00 +0000 | |||
426 | +++ tests/cert.cert 2015-03-05 18:48:27 +0000 | |||
427 | @@ -0,0 +1,21 @@ | |||
428 | 1 | -----BEGIN CERTIFICATE----- | ||
429 | 2 | MIIDXTCCAkWgAwIBAgIJAP8/lbMbA1l3MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV | ||
430 | 3 | BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX | ||
431 | 4 | aWRnaXRzIFB0eSBMdGQwHhcNMTUwMjI2MTkyMzQ0WhcNMTUwMzI4MTkyMzQ0WjBF | ||
432 | 5 | MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 | ||
433 | 6 | ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB | ||
434 | 7 | CgKCAQEA784hdl+HE5Ud8SHfTtaQj2H9QFpBdFb8iNbtJ1v1GG31wiV0fgV6Gkk1 | ||
435 | 8 | fyxaaZk4BqJyw59m2nFaF9IqPcXArJ8ZRrz29ZNrL+m7mLJDKBSA4rlpR7ieJew/ | ||
436 | 9 | qzyj4cGWWqGtQZQW7KaF+qVrHCZV3WWtyGhe+u8TG72AW02utucwlHmtHz5W6jKk | ||
437 | 10 | VTVfGv0kMvoWCbsdS0YWm6J3Zg25zNEzg+38fOTuZPJ21lM8z5KfvJ5Ee/hmM9qO | ||
438 | 11 | GPJhzAoXRY9OXTCnESrJFg3GY8hkzog7eoQcDh05u7ymkmLnuYJAMOOyZky4lPdk | ||
439 | 12 | L2U78o9XoXpf0FhjsOJZ/Rxex8q/xQIDAQABo1AwTjAdBgNVHQ4EFgQUR/QwCSZo | ||
440 | 13 | j+OSEop1WSLQ0qZe0cEwHwYDVR0jBBgwFoAUR/QwCSZoj+OSEop1WSLQ0qZe0cEw | ||
441 | 14 | DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAPbp7oHahP3h4Yz9oZwYJ | ||
442 | 15 | gMIZUizqs8ifOTTBmpYFCeaG53sGpTsKBRR9NWPkvvMTwLQFlia/qDBrule51+1t | ||
443 | 16 | HOFIMUg9SE8pzwhmhX4+ASav6ylew8ZTBdmsyUq+04srLW3IK4FEfYFJkUl739QG | ||
444 | 17 | 7Xe1WtWp4BQ0wnhXTq+XayENup07M4eEtM2RRRI0tsyEgzsp2IXTskIZaKGkm/mj | ||
445 | 18 | FbSOITNFnjrAC4ojs+usC3+3k6ZYZif2xEDnyHjPg4CxH16vJguerR2HH1qPQ+Up | ||
446 | 19 | yBNAMRkkPLv3d90wGVrknvEGn/Pjde+mZN/9tXs3zMZVOOl+KU11tEoyOFbTxU64 | ||
447 | 20 | SA== | ||
448 | 21 | -----END CERTIFICATE----- | ||
449 | 0 | 22 | ||
450 | === added file 'tests/cert.key' | |||
451 | --- tests/cert.key 1970-01-01 00:00:00 +0000 | |||
452 | +++ tests/cert.key 2015-03-05 18:48:27 +0000 | |||
453 | @@ -0,0 +1,28 @@ | |||
454 | 1 | -----BEGIN PRIVATE KEY----- | ||
455 | 2 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvziF2X4cTlR3x | ||
456 | 3 | Id9O1pCPYf1AWkF0VvyI1u0nW/UYbfXCJXR+BXoaSTV/LFppmTgGonLDn2bacVoX | ||
457 | 4 | 0io9xcCsnxlGvPb1k2sv6buYskMoFIDiuWlHuJ4l7D+rPKPhwZZaoa1BlBbspoX6 | ||
458 | 5 | pWscJlXdZa3IaF767xMbvYBbTa625zCUea0fPlbqMqRVNV8a/SQy+hYJux1LRhab | ||
459 | 6 | ondmDbnM0TOD7fx85O5k8nbWUzzPkp+8nkR7+GYz2o4Y8mHMChdFj05dMKcRKskW | ||
460 | 7 | DcZjyGTOiDt6hBwOHTm7vKaSYue5gkAw47JmTLiU92QvZTvyj1ehel/QWGOw4ln9 | ||
461 | 8 | HF7Hyr/FAgMBAAECggEBAJ4a8LMD7qH5mcEmzP1EuBDg0UFBgJA83ck2sytVFLZj | ||
462 | 9 | oTm8yh5gbA2yoOPVEVM4Itk096eEjCKPw4+bECCkJhFp4BdkdQqahHwVhYr6VQ6y | ||
463 | 10 | 3fsdtY0E6rgkGCJFG+O3Z/MfT4TCJ48lh4Ym1AS+PbR32mkcbyrQv291tI/+GqgZ | ||
464 | 11 | ZGw1EWcILqVaH1VCfV0ApbIdiWK5jT571mqTcp6I55RQC3gzFGU6jNnGY7A8Rp4X | ||
465 | 12 | Nouhwta+eAU6bTNRzFi9skB9YGrsCYz9pWK6BMKbRMZHUiNcshAg8qH+HMVj9U+z | ||
466 | 13 | ufLid4XmTdA4JsAWkUT39v3F4hjudGDaE7Q9OGY/BKECgYEA/6h98O/aQv8C+NWT | ||
467 | 14 | Nr0G/PdXtI5Ka1Je+HCPn4vHQf/g0Y0xwIgSgKXexhSgJm/aqvZvP4KsptjGDTdW | ||
468 | 15 | oQ9kxDfc27zXlb5zaJAHSzm7KQud9K97lm1a4kImfEtyVNx99dNHp6K7jxYfa6XP | ||
469 | 16 | fch9A0U5jD8227yLGzbOMkmc5u0CgYEA8CA2Z1lPgloObCM9KWUf2l+SdUr1dji3 | ||
470 | 17 | mLNFbtZrzgDmmKvEVGlg9uatFv7Omj/bSYihVujILeN8z583YPSD8FdTTb5Ob5vF | ||
471 | 18 | xBFoP1tSPfNFm+7Ls9dzLWj1HZttbS2rW2VBf51M7FZ0iXQ39vYQMmbOTAdicjJ5 | ||
472 | 19 | 7NEGCXIRCTkCgYAjqKewVHQYBiOu+3MmHmV8IS+9gl9E6t9OPbz6nu9y+DKuZ8g5 | ||
473 | 20 | t4EFKp2Q+U2BLvbMA8VukVZtiyzMqRxPKKuAZt5KU+OqAj9spTIvPuUpC3LDrzpI | ||
474 | 21 | uAYGKv3dNlTDG2ICSK7k5eDNS2OkiyMOw0kUjLJDKooHShwI9rL59qSI3QKBgC9Y | ||
475 | 22 | iqGSEIVJMHLN9+9DiyZJld0erItk335ySoxyJst1jgIoTAvAw2erUBGqqB3t3VUA | ||
476 | 23 | ZZ93QpEZu7BMWmT5kVJARaKclWaYNkRUklN7tBmW7/CxAuUw4/reKQZvcQIH8TOS | ||
477 | 24 | IXoCD/rBiTTY/3foSIVHlAGVqymNHlE9XY1bOlSxAoGBAMB5I+aa7r8e9R3b7hT4 | ||
478 | 25 | dBGg/mlF0GVQFYJWrye3UWmxzM92pRH1FpIJgm1V0jGO3EAYWnxVcvaPsWmh2S01 | ||
479 | 26 | ZlYNnSkRMtAynTHDQktW78/xgNWthqMG3HRLMfZM+WkQfWz3lygLViB2l+JSsSS8 | ||
480 | 27 | MVvnClZPQ386RtYBxVlPQL2A | ||
481 | 28 | -----END PRIVATE KEY----- |
Merges cleanly