From 88c97719f6dc23943fb9cac44723e0060b23c843 Mon Sep 17 00:00:00 2001 From: amalfra Date: Sat, 18 May 2019 15:55:08 +0530 Subject: [PATCH] fix tests --- src/commands/tags.py | 22 ++++++++++++++++++---- src/libs/docker_hub_client.py | 2 +- src/libs/utils.py | 3 ++- src/tests/docker_hub_client.py | 13 ++++++++++++- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/commands/tags.py b/src/commands/tags.py index 69e09f0..f9a61dc 100644 --- a/src/commands/tags.py +++ b/src/commands/tags.py @@ -9,12 +9,26 @@ def run(docker_hub_client, args): """ The command to list tags for given repo on docker hub - >>> from ..tests.docker_hub_client import TestingDockerHubClient + >>> from ..tests.docker_hub_client import \ + NoResultsTestingDockerHubClient, WithResultsTestingDockerHubClient >>> from collections import namedtuple - >>> args = namedtuple('args', 'orgname reponame page') - >>> docker_hub_client = TestingDockerHubClient() + >>> args = namedtuple('args', 'orgname reponame page format') + >>> docker_hub_client = NoResultsTestingDockerHubClient() >>> run(docker_hub_client, - ... args(orgname='docker', reponame='docker', page='1')) + ... args(orgname='docker', reponame='docker', page='1', + ... format='json')) + This repo has no tags + >>> docker_hub_client = WithResultsTestingDockerHubClient() + >>> run(docker_hub_client, + ... args(orgname='docker', reponame='docker', page='1', + ... format='json')) + [ + { + "Last updated": "2018-12-12 14:40", + "Name": "1.4.2-alpine", + "Size": "15.09 MB" + } + ] """ config = Config() orgname = args.orgname or config.get('orgname') diff --git a/src/libs/docker_hub_client.py b/src/libs/docker_hub_client.py index 885cd1b..56dcc18 100644 --- a/src/libs/docker_hub_client.py +++ b/src/libs/docker_hub_client.py @@ -20,7 +20,7 @@ def do_request(self, url, method='GET', data={}): headers['Authorization'] = 'JWT ' + self.auth_token request_method = getattr(requests, method.lower()) if len(data) > 0: - data = json.dumps(data) + data = json.dumps(data, indent=2, sort_keys=True) resp = request_method(url, data, headers=headers) else: resp = request_method(url, headers=headers) diff --git a/src/libs/utils.py b/src/libs/utils.py index cb3fabd..34e74c4 100644 --- a/src/libs/utils.py +++ b/src/libs/utils.py @@ -59,7 +59,8 @@ def print_result(format, rows=[], header=[], count=0, page=1, heading=False, (count, page, total_pages)) print_table(header, rows) else: - json_result = json.dumps([dict(zip(header, row)) for row in rows]) + json_result = json.dumps([dict(zip(header, row)) for row in rows], + indent=2, sort_keys=True) print(json_result) diff --git a/src/tests/docker_hub_client.py b/src/tests/docker_hub_client.py index fd91edf..954ceb4 100644 --- a/src/tests/docker_hub_client.py +++ b/src/tests/docker_hub_client.py @@ -3,14 +3,25 @@ from ..libs.docker_hub_client import DockerHubClient -class TestingDockerHubClient(DockerHubClient): +class BaseTestingDockerHubClient(DockerHubClient): """ Fake wrapper to simulate communication with docker hub API """ def _fake_login(self): return {'token': 'random-token'} + +class NoResultsTestingDockerHubClient(BaseTestingDockerHubClient): def do_request(self, url, method='GET', data={}): content = {'count': 0} if 'login' in url: content = self._fake_login() return {'content': content, 'code': 200} + + +class WithResultsTestingDockerHubClient(BaseTestingDockerHubClient): + def do_request(self, url, method='GET', data={}): + content = {'count': 1, 'results': [{'last_updated': '2018-12-12 14:40', + 'name': '1.4.2-alpine', 'full_size': 15820065}]} + if 'login' in url: + content = self._fake_login() + return {'content': content, 'code': 200}