77
88
99class TestListLogs (object ):
10- URL = "https://logs.paperspace.io"
10+ URL = "https://logs.paperspace.io/jobs/logs?jobId=some_job_id&line=0 "
1111 EXPECTED_HEADERS = default_headers .copy ()
12+ EXPECTED_HEADERS_WITH_CHANGED_API_KEY = default_headers .copy ()
13+ EXPECTED_HEADERS_WITH_CHANGED_API_KEY ["X-API-Key" ] = "some_key"
14+
15+ RESPONSE_JSON_WITH_WRONG_API_TOKEN = {"status" : 400 , "message" : "Invalid API token" }
1216 EXPECTED_RESPONSE_JSON = example_responses .LIST_OF_LOGS_FOR_JOB
13- BASIC_COMMAND = ["logs" , "list" ]
14- EXPECTED_STDOUT = """+Job jztdeungdkzjv logs------------------------------------------------------------------+
17+ BASIC_COMMAND_WITHOUT_PARAMETERS = ["logs" , "list" ]
18+ BASIC_COMMAND = ["logs" , "list" , "--jobId" , "some_job_id" , "--apiKey" , "some_key" ]
19+
20+ EXPECTED_STDOUT_WITHOUT_PARAMETERS = """Usage: cli logs list [OPTIONS]
21+ Try "cli logs list --help" for help.
22+
23+ Error: Missing option "--jobId".
24+ """
25+
26+ EXPECTED_STDOUT = """+Job some_job_id logs--------------------------------------------------------------------+
1527| LINE | MESSAGE |
1628+------+---------------------------------------------------------------------------------+
1729| 1 | Traceback (most recent call last): |
@@ -28,17 +40,57 @@ class TestListLogs(object):
2840+------+---------------------------------------------------------------------------------+
2941"""
3042
43+ EXPECTED_STDOUT_WITH_WRONG_API_TOKEN = "Invalid API token\n "
44+
3145 @mock .patch ("paperspace.cli.cli.client.requests.get" )
32- def test_should_send_valid_get_request_and_print_table_with_logs (self , get_patched ):
46+ def test_command_should_not_send_request_without_required_parameters (self , get_patched ):
47+ cli_runner = CliRunner ()
48+ result = cli_runner .invoke (cli .cli , self .BASIC_COMMAND_WITHOUT_PARAMETERS )
49+ print (result )
50+
51+ get_patched .assert_not_called ()
52+ assert result .exit_code == 2
53+ assert result .output == self .EXPECTED_STDOUT_WITHOUT_PARAMETERS
54+
55+ @mock .patch ("paperspace.cli.cli.client.requests.get" )
56+ def test_should_send_valid_get_request_and_print_available_logs (self , get_patched ):
3357 get_patched .return_value = MockResponse (json_data = self .EXPECTED_RESPONSE_JSON , status_code = 200 )
3458
3559 cli_runner = CliRunner ()
3660 result = cli_runner .invoke (cli .cli , self .BASIC_COMMAND )
3761
3862 get_patched .assert_called_with (self .URL ,
39- headers = self .EXPECTED_HEADERS ,
63+ headers = self .EXPECTED_HEADERS_WITH_CHANGED_API_KEY ,
4064 json = None ,
4165 params = None )
4266
4367 assert result .output == self .EXPECTED_STDOUT
4468 assert result .exit_code == 0
69+
70+ @mock .patch ("paperspace.cli.cli.client.requests.get" )
71+ def test_should_send_valid_get_request_when_log_list_was_used_with_wrong_api_key (self , get_patched ):
72+ get_patched .return_value = MockResponse (json_data = self .RESPONSE_JSON_WITH_WRONG_API_TOKEN , status_code = 400 )
73+
74+ cli_runner = CliRunner ()
75+ result = cli_runner .invoke (cli .cli , self .BASIC_COMMAND )
76+
77+ get_patched .assert_called_with (self .URL ,
78+ headers = self .EXPECTED_HEADERS_WITH_CHANGED_API_KEY ,
79+ json = None ,
80+ params = None )
81+ assert result .output == self .EXPECTED_STDOUT_WITH_WRONG_API_TOKEN
82+ assert result .exit_code == 0
83+
84+ @mock .patch ("paperspace.cli.cli.client.requests.get" )
85+ def test_should_print_error_message_when_error_status_code_received_but_no_content_was_provided (self , get_patched ):
86+ get_patched .return_value = MockResponse (status_code = 400 )
87+
88+ cli_runner = CliRunner ()
89+ result = cli_runner .invoke (cli .cli , self .BASIC_COMMAND )
90+
91+ get_patched .assert_called_with (self .URL ,
92+ headers = self .EXPECTED_HEADERS_WITH_CHANGED_API_KEY ,
93+ json = None ,
94+ params = None )
95+ assert result .output == "Error while parsing response data: No JSON\n "
96+ assert result .exit_code == 0
0 commit comments