@@ -366,3 +366,86 @@ def test_should_send_valid_get_request_with_valid_param_for_a_list_of_artifacts_
366366 params = {"jobId" : job_id ,
367367 param : True })
368368 assert result .exit_code == 0
369+
370+
371+ class TestJobsCreate (object ):
372+ URL = "https://api.paperspace.io"
373+ EXPECTED_HEADERS = default_headers .copy ()
374+ EXPECTED_HEADERS_WITH_CHANGED_API_KEY = default_headers .copy ()
375+ EXPECTED_HEADERS_WITH_CHANGED_API_KEY ["X-API-Key" ] = "some_key"
376+ BASIC_OPTIONS_COMMAND = [
377+ "jobs" , "create" ,
378+ "--name" , "exp1" ,
379+ "--projectId" , "testHandle" ,
380+ "--container" , "testContainer" ,
381+ "--machineType" , "testType" ,
382+ "--command" , "testCommand" ,
383+ "--workspaceUrl" , "some-workspace" ,
384+ ]
385+ FULL_OPTIONS_COMMAND = [
386+ "jobs" , "create" ,
387+ "--name" , "exp1" ,
388+ "--ports" , 4567 ,
389+ "--workspaceUrl" , "wsp.url" ,
390+ "--workingDirectory" , "/work/dir/" ,
391+ "--artifactDirectory" , "/artifact/dir/" ,
392+ "--clusterId" , 42 ,
393+ "--experimentEnv" , '{"key":"val"}' ,
394+ "--projectId" , "testHandle" ,
395+ "--container" , "testContainer" ,
396+ "--machineType" , "testType" ,
397+ "--command" , "testCommand" ,
398+ "--containerUser" , "conUser" ,
399+ "--registryUsername" , "userName" ,
400+ "--registryPassword" , "passwd" ,
401+ "--apiKey" , "some_key" ,
402+ ]
403+ BASIC_OPTIONS_REQUEST = {
404+ "name" : u"exp1" ,
405+ "projectId" : u"testHandle" ,
406+ "container" : u"testContainer" ,
407+ "machineType" : u"testType" ,
408+ "command" : u"testCommand" ,
409+ "workspaceUrl" : u"some-workspace" ,
410+ "workspaceFileName" : u"some-workspace" ,
411+ }
412+ FULL_OPTIONS_REQUEST = {
413+ "name" : u"exp1" ,
414+ "ports" : 4567 ,
415+ "workspaceUrl" : u"wsp.url" ,
416+ "workingDirectory" : u"/work/dir/" ,
417+ "artifactDirectory" : u"/artifact/dir/" ,
418+ "clusterId" : 42 ,
419+ "experimentEnv" : {u"key" : u"val" },
420+ "projectHandle" : u"testHandle" ,
421+ "container" : u"testContainer" ,
422+ "machineType" : u"testType" ,
423+ "command" : u"testCommand" ,
424+ "containerUser" : u"conUser" ,
425+ "registryUsername" : u"userName" ,
426+ "registryPassword" : u"passwd" ,
427+ }
428+ RESPONSE_JSON_200 = {"id" : "sadkfhlskdjh" , "message" : "success" }
429+ RESPONSE_CONTENT_200 = b'{"handle":"sadkfhlskdjh","message":"success"}\n '
430+ EXPECTED_STDOUT = u'Creating job...\n Job created - ID: sadkfhlskdjh\n '
431+
432+ RESPONSE_JSON_404_PROJECT_NOT_FOUND = {"details" : {"handle" : "wrong_handle" }, "error" : "Project not found" }
433+ RESPONSE_CONTENT_404_PROJECT_NOT_FOUND = b'{"details":{"handle":"wrong_handle"},"error":"Project not found"}\n '
434+ EXPECTED_STDOUT_PROJECT_NOT_FOUND = "Project not found\n handle: wrong_handle\n "
435+
436+ @mock .patch ("paperspace.client.requests.post" )
437+ def test_should_send_proper_data_and_print_message_when_create_job_was_run_with_basic_options (self , post_patched ):
438+ post_patched .return_value = MockResponse (self .RESPONSE_JSON_200 , 200 , self .RESPONSE_CONTENT_200 )
439+
440+ runner = CliRunner ()
441+ result = runner .invoke (cli .cli , self .BASIC_OPTIONS_COMMAND )
442+
443+ post_patched .assert_called_once_with (self .URL + '/jobs/createJob/' ,
444+ headers = self .EXPECTED_HEADERS ,
445+ json = None ,
446+ params = self .BASIC_OPTIONS_REQUEST ,
447+ files = None ,
448+ data = None )
449+
450+ assert result .output == self .EXPECTED_STDOUT
451+ assert result .exit_code == 0
0 commit comments