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

Commit 3344fd4

Browse files
committed
tests added and slightly refactored
1 parent 498f8e9 commit 3344fd4

File tree

1 file changed

+43
-12
lines changed

1 file changed

+43
-12
lines changed

tests/functional/test_jobs.py

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
import mock
22
from click.testing import CliRunner
33

4-
import paperspace
54
from paperspace.cli import cli
65
from paperspace.client import default_headers
76
from tests import example_responses, MockResponse
87

98

10-
class TestListJobs(object):
11-
URL = "https://api.paperspace.io/jobs/getJobs/"
9+
class TestJobs(object):
10+
EXPECTED_STDOUT_WITH_WRONG_API_TOKEN = "Invalid API token\n"
11+
RESPONSE_JSON_WITH_WRONG_API_TOKEN = {"status": 400, "message": "Invalid API token"}
12+
1213
EXPECTED_HEADERS = default_headers.copy()
14+
EXPECTED_HEADERS_WITH_CHANGED_API_KEY = default_headers.copy()
15+
EXPECTED_HEADERS_WITH_CHANGED_API_KEY["X-API-Key"] = "some_key"
16+
17+
18+
class TestListJobs(TestJobs):
19+
URL = "https://api.paperspace.io/jobs/getJobs/"
1320
BASIC_COMMAND = ["jobs", "list"]
1421
EXPECTED_RESPONSE_JSON = example_responses.LIST_JOBS_RESPONSE_JSON
1522
EXPECTED_STDOUT = """+----------------+---------------------------+-------------------+----------------+--------------+--------------------------+
@@ -30,11 +37,6 @@ class TestListJobs(object):
3037
"""
3138

3239
BASIC_COMMAND_WITH_API_KEY = ["jobs", "list", "--apiKey", "some_key"]
33-
EXPECTED_HEADERS_WITH_CHANGED_API_KEY = paperspace.client.default_headers.copy()
34-
EXPECTED_HEADERS_WITH_CHANGED_API_KEY["X-API-Key"] = "some_key"
35-
36-
RESPONSE_JSON_WITH_WRONG_API_TOKEN = {"status": 400, "message": "Invalid API token"}
37-
EXPECTED_STDOUT_WITH_WRONG_API_TOKEN = "Invalid API token\n"
3840

3941
RESPONSE_JSON_WHEN_NO_JOBS_WERE_FOUND = []
4042
EXPECTED_STDOUT_WHEN_NO_JOBS_WERE_FOUND = "No jobs found\n"
@@ -169,11 +171,8 @@ def test_should_print_proper_message_when_jobs_list_was_used_with_mutually_exclu
169171
assert result.exit_code == 0
170172

171173

172-
class TestJobLogs(object):
174+
class TestJobLogs(TestJobs):
173175
URL = "https://logs.paperspace.io/jobs/logs?jobId=some_job_id&line=0"
174-
EXPECTED_HEADERS = default_headers.copy()
175-
EXPECTED_HEADERS_WITH_CHANGED_API_KEY = default_headers.copy()
176-
EXPECTED_HEADERS_WITH_CHANGED_API_KEY["X-API-Key"] = "some_key"
177176

178177
RESPONSE_JSON_WITH_WRONG_API_TOKEN = {"status": 400, "message": "Invalid API token"}
179178
EXPECTED_RESPONSE_JSON = example_responses.LIST_OF_LOGS_FOR_JOB
@@ -257,3 +256,35 @@ def test_should_print_error_message_when_error_status_code_received_but_no_conte
257256
params=None)
258257
assert result.output == "Error while parsing response data: No JSON\n"
259258
assert result.exit_code == 0
259+
260+
261+
class TestJobArtifactsCommands(TestJobs):
262+
runner = CliRunner()
263+
URL = "https://api.paperspace.io"
264+
265+
@mock.patch("paperspace.client.requests.post")
266+
def test_should_send_valid_post_request_when_destroying_artifacts_with_files_specified(self, post_patched):
267+
post_patched.return_value = MockResponse(status_code=200)
268+
job_id = 'some_job_id'
269+
file_names = 'some_file_names'
270+
result = self.runner.invoke(cli.cli, ['jobs', 'artifactsDestroy', job_id, '--files', file_names, "--apiKey", "some_key"])
271+
272+
post_patched.assert_called_with('{}/jobs/{}/artifactsDestroy'.format(self.URL, job_id),
273+
files=None,
274+
headers=self.EXPECTED_HEADERS_WITH_CHANGED_API_KEY,
275+
json=None,
276+
params={'files': file_names})
277+
assert result.exit_code == 0
278+
279+
@mock.patch("paperspace.client.requests.post")
280+
def test_should_send_valid_post_request_when_destroying_artifacts_without_files_specified(self, post_patched):
281+
post_patched.return_value = MockResponse(status_code=200)
282+
job_id = 'some_job_id'
283+
result = self.runner.invoke(cli.cli, ['jobs', 'artifactsDestroy', job_id, "--apiKey", "some_key"])
284+
285+
post_patched.assert_called_with('{}/jobs/{}/artifactsDestroy'.format(self.URL, job_id),
286+
files=None,
287+
headers=self.EXPECTED_HEADERS_WITH_CHANGED_API_KEY,
288+
json=None,
289+
params=None)
290+
assert result.exit_code == 0

0 commit comments

Comments
 (0)