Skip to content
This repository was archived by the owner on Aug 1, 2023. It is now read-only.

Commit 1835ec3

Browse files
author
Katarina Bulkova
committed
[WIP] Test for dock-pulp with invalid user certificate
If user provides invalid certificate, dock-pulp fails with traceback. OpenSSL is not required by dockpulp per se, however one of its dependecies uses OpenSSL (if installed). This change fixes this behaviour and adds tests for such scenario. Signed-off-by: Katarina Bulkova <kbulkova@redhat.com>
1 parent 3b7e96f commit 1835ec3

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

dockpulp/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from six.moves.urllib.parse import urlparse
4242
from requests.adapters import HTTPAdapter
4343
from requests.packages.urllib3.util.retry import Retry
44+
from OpenSSL.SSL import Error as OpenSSLError
4445
from operator import itemgetter
4546
import multiprocessing
4647

@@ -158,7 +159,7 @@ def __call__(self, meth, api, **kwargs):
158159
warnings.simplefilter("ignore")
159160
answer = c(url, **kwargs)
160161

161-
except requests.exceptions.SSLError:
162+
except (OpenSSLError, requests.exceptions.SSLError):
162163
if not self.verify:
163164
raise errors.DockPulpLoginError(
164165
'Expired or bad certificate, please re-login')

tests/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ responses
55
requests
66
flexmock
77
simplejson
8+
pyOpenSSL

tests/test_pulp_instance.py

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
#!/usr/bin/python
22
# -*- coding: utf-8 -*-
33

4-
from copy import deepcopy
5-
from datetime import datetime
6-
from dockpulp import Pulp, Crane, RequestsHttpCaller, errors, log
7-
import pytest
84
import hashlib
95
import json
10-
import requests
11-
import tarfile
126
import logging
137
import subprocess
8+
import tarfile
9+
from copy import deepcopy
10+
from datetime import datetime
1411
from tempfile import NamedTemporaryFile
1512
from textwrap import dedent
13+
14+
import pytest
15+
import requests
16+
from OpenSSL.SSL import Error as OpenSSLError
1617
from flexmock import flexmock
1718
from requests.packages.urllib3.util import Retry
19+
20+
from dockpulp import Pulp, Crane, RequestsHttpCaller, errors, log
21+
1822
log.setLevel(logging.CRITICAL)
1923

2024

@@ -310,6 +314,28 @@ def test_set_certs(self, pulp, cert, key):
310314
assert pulp.certificate == cert
311315
assert pulp.key == key
312316

317+
@pytest.mark.parametrize('tid, url', [
318+
('111', '/pulp/api/v2/tasks/111/')])
319+
def test_invalid_cert(self, pulp, tid, url):
320+
flexmock(requests.Session)
321+
(requests.Session.should_receive('get').once().and_raise(OpenSSLError))
322+
with pytest.raises(errors.DockPulpLoginError):
323+
pulp.getTask(tid)
324+
325+
@pytest.mark.parametrize('tid, url', [
326+
('111', '/pulp/api/v2/tasks/111/')
327+
])
328+
def test_always_valid_cert(self, pulp, tid, url):
329+
class Answer:
330+
def __init__(self):
331+
self.ok = True
332+
self.json = (lambda: None)
333+
self.status_code = 200
334+
335+
flexmock(requests.Session)
336+
(requests.Session.should_receive('get').once().and_return(Answer()))
337+
pulp.getTask(tid)
338+
313339
@pytest.mark.parametrize('tid, url', [
314340
('111', '/pulp/api/v2/tasks/111/')
315341
])

0 commit comments

Comments
 (0)