@@ -342,3 +342,85 @@ def test_should_send_valid_get_request_with_valid_param_for_a_list_of_artifacts_
342342 params = {"jobId" : job_id ,
343343 param : True })
344344 assert result .exit_code == 0
345+
346+
347+ class TestJobsCreate (object ):
348+ URL = "https://api.paperspace.io"
349+ EXPECTED_HEADERS = default_headers .copy ()
350+ EXPECTED_HEADERS_WITH_CHANGED_API_KEY = default_headers .copy ()
351+ EXPECTED_HEADERS_WITH_CHANGED_API_KEY ["X-API-Key" ] = "some_key"
352+ BASIC_OPTIONS_COMMAND = [
353+ "jobs" , "create" ,
354+ "--name" , "exp1" ,
355+ "--projectId" , "testHandle" ,
356+ "--container" , "testContainer" ,
357+ "--machineType" , "testType" ,
358+ "--command" , "testCommand" ,
359+ "--workspaceUrl" , "some-workspace" ,
360+ ]
361+ FULL_OPTIONS_COMMAND = [
362+ "jobs" , "create" ,
363+ "--name" , "exp1" ,
364+ "--ports" , 4567 ,
365+ "--workspaceUrl" , "wsp.url" ,
366+ "--workingDirectory" , "/work/dir/" ,
367+ "--artifactDirectory" , "/artifact/dir/" ,
368+ "--clusterId" , 42 ,
369+ "--experimentEnv" , '{"key":"val"}' ,
370+ "--projectId" , "testHandle" ,
371+ "--container" , "testContainer" ,
372+ "--machineType" , "testType" ,
373+ "--command" , "testCommand" ,
374+ "--containerUser" , "conUser" ,
375+ "--registryUsername" , "userName" ,
376+ "--registryPassword" , "passwd" ,
377+ "--apiKey" , "some_key" ,
378+ ]
379+ BASIC_OPTIONS_REQUEST = {
380+ "name" : u"exp1" ,
381+ "projectId" : u"testHandle" ,
382+ "container" : u"testContainer" ,
383+ "machineType" : u"testType" ,
384+ "command" : u"testCommand" ,
385+ "workspaceUrl" : u"some-workspace" ,
386+ }
387+ FULL_OPTIONS_REQUEST = {
388+ "name" : u"exp1" ,
389+ "ports" : 4567 ,
390+ "workspaceUrl" : u"wsp.url" ,
391+ "workingDirectory" : u"/work/dir/" ,
392+ "artifactDirectory" : u"/artifact/dir/" ,
393+ "clusterId" : 42 ,
394+ "experimentEnv" : {u"key" : u"val" },
395+ "projectHandle" : u"testHandle" ,
396+ "container" : u"testContainer" ,
397+ "machineType" : u"testType" ,
398+ "command" : u"testCommand" ,
399+ "containerUser" : u"conUser" ,
400+ "registryUsername" : u"userName" ,
401+ "registryPassword" : u"passwd" ,
402+ }
403+ RESPONSE_JSON_200 = {"id" : "sadkfhlskdjh" , "message" : "success" }
404+ RESPONSE_CONTENT_200 = b'{"handle":"sadkfhlskdjh","message":"success"}\n '
405+ EXPECTED_STDOUT = u'Creating job...\n Job created - ID: sadkfhlskdjh\n '
406+
407+ RESPONSE_JSON_404_PROJECT_NOT_FOUND = {"details" : {"handle" : "wrong_handle" }, "error" : "Project not found" }
408+ RESPONSE_CONTENT_404_PROJECT_NOT_FOUND = b'{"details":{"handle":"wrong_handle"},"error":"Project not found"}\n '
409+ EXPECTED_STDOUT_PROJECT_NOT_FOUND = "Project not found\n handle: wrong_handle\n "
410+
411+ @mock .patch ("paperspace.client.requests.post" )
412+ def test_should_send_proper_data_and_print_message_when_create_job_was_run_with_basic_options (self , post_patched ):
413+ post_patched .return_value = MockResponse (self .RESPONSE_JSON_200 , 200 , self .RESPONSE_CONTENT_200 )
414+
415+ runner = CliRunner ()
416+ result = runner .invoke (cli .cli , self .BASIC_OPTIONS_COMMAND )
417+
418+ post_patched .assert_called_once_with (self .URL + '/jobs/createJob/' ,
419+ headers = self .EXPECTED_HEADERS ,
420+ json = None ,
421+ params = self .BASIC_OPTIONS_REQUEST ,
422+ files = None ,
423+ data = None )
424+
425+ assert result .output == self .EXPECTED_STDOUT
426+ assert result .exit_code == 0
0 commit comments