11import mock
22from click .testing import CliRunner
33
4- import paperspace
54from paperspace .cli import cli
65from paperspace .client import default_headers
76from 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