def setUp(self): self.replace = Replacer() self.addCleanup(self.replace.restore) self.server = MockOpen('https://test.attask-ondemand.com/attask/api/' + self.api_version) self.replace('workfront.six.moves.urllib.request.urlopen', self.server) self.session = Session('test', api_version=self.api_version) self.api = self.session.api
def setUp(self): r = Replacer() self.addCleanup(r.restore) self.mock = Mock() self.mock.input.return_value = 'u' self.mock.getpass.return_value = 'p' r.replace('workfront.get_api_key.input', self.mock.input) r.replace('getpass.getpass', self.mock.getpass) r.replace('logging.basicConfig', self.mock.logging) r.replace('sys.argv', ['x']) self.server = MockOpen( 'https://api-cl01.attask-ondemand.com/attask/api/unsupported') r.replace('workfront.six.moves.urllib.request.urlopen', self.server)
def test_generated_methods(self): for api_version, type_, name in self.methods_to_test(): session = Session('test', api_version=api_version) obj = type_(session, ID='xxx') method = getattr(obj, name) workfront_name = re.search('``(.+?)``', method.__doc__).group(1) server = MockOpen('https://test.attask-ondemand.com/attask/api/' + api_version) server.add(url='/{}/xxx/{}'.format(type_.code, workfront_name), params='method=PUT', response='{"data": {"result": null}}') with Replace('workfront.six.moves.urllib.request.urlopen', server): method()
def test_generated_methods(self): for api_version, type_, name in self.methods_to_test(): session = Session('test', api_version=api_version) obj = type_(session, ID='xxx') method = getattr(obj, name) workfront_name = re.search('``(.+?)``', method.__doc__).group(1) server = MockOpen( 'https://test.attask-ondemand.com/attask/api/'+api_version ) server.add( url='/{}/xxx/{}'.format(type_.code, workfront_name), params='method=PUT', response='{"data": {"result": null}}' ) with Replace('workfront.six.moves.urllib.request.urlopen', server): method()
def setUp(self): self.replace = Replacer() self.addCleanup(self.replace.restore) self.server = MockOpen( 'https://test.attask-ondemand.com/attask/api/'+self.api_version ) self.replace('workfront.six.moves.urllib.request.urlopen', self.server) self.session = Session('test', api_version=self.api_version) self.api = self.session.api
def test_load_data(): with mock.patch("builtins.open", MockOpen(string_data)) as open_mock: points = ukpolice.load("filename", {"Burglary"}) assert( open_mock.calls[0][0] == ("filename",) ) assert( len(points.timestamps) == 2 ) assert( points.timestamps[0] == np.datetime64("2016-03") ) assert( points.timestamps[1] == np.datetime64("2017-01") ) np.testing.assert_allclose( points.coords[:,0], np.array([123, 456]) ) np.testing.assert_allclose( points.coords[:,1], np.array([789, 1012]) )
class TestGetApiKey(TestCase): def setUp(self): r = Replacer() self.addCleanup(r.restore) self.mock = Mock() self.mock.input.return_value = 'u' self.mock.getpass.return_value = 'p' r.replace('workfront.get_api_key.input', self.mock.input) r.replace('getpass.getpass', self.mock.getpass) r.replace('logging.basicConfig', self.mock.logging) r.replace('sys.argv', ['x']) self.server = MockOpen( 'https://api-cl01.attask-ondemand.com/attask/api/unsupported' ) r.replace('workfront.six.moves.urllib.request.urlopen', self.server) def test_functional(self): self.server.add( url='/user', params='action=getApiKey&method=PUT&username=u&password=p', response='{"data": {"result": "xyz"}}' ) with OutputCapture() as output: main() if PY2: expected="Your API key is: u'xyz'" else: expected="Your API key is: 'xyz'" output.compare(expected) def test_api_error(self): self.server.add( url='/user', params='action=getApiKey&method=PUT&username=u&password=p', response='{"error": "your foo went bar"}' ) with ShouldRaise(WorkfrontAPIError(u'your foo went bar', 200)): with OutputCapture() as output: main() output.compare("")
def set_up(test): test.replace = Replacer() test.addCleanup(test.replace.restore) test.server = MockOpen( 'https://test.attask-ondemand.com/attask/api/unsupported') test.replace('workfront.six.moves.urllib.request.urlopen', test.server) filename = os.path.split(str(test))[-1] key = os.path.splitext(filename)[0] for response in RESPONSES.get(key, ()): test.server.add(**response)
class TestGetApiKey(TestCase): def setUp(self): r = Replacer() self.addCleanup(r.restore) self.mock = Mock() self.mock.input.return_value = 'u' self.mock.getpass.return_value = 'p' r.replace('workfront.get_api_key.input', self.mock.input) r.replace('getpass.getpass', self.mock.getpass) r.replace('logging.basicConfig', self.mock.logging) r.replace('sys.argv', ['x']) self.server = MockOpen( 'https://api-cl01.attask-ondemand.com/attask/api/unsupported') r.replace('workfront.six.moves.urllib.request.urlopen', self.server) def test_functional(self): self.server.add( url='/user', params='action=getApiKey&method=PUT&username=u&password=p', response='{"data": {"result": "xyz"}}') with OutputCapture() as output: main() if PY2: expected = "Your API key is: u'xyz'" else: expected = "Your API key is: 'xyz'" output.compare(expected) def test_api_error(self): self.server.add( url='/user', params='action=getApiKey&method=PUT&username=u&password=p', response='{"error": "your foo went bar"}') with ShouldRaise(WorkfrontAPIError(u'your foo went bar', 200)): with OutputCapture() as output: main() output.compare("")
def setUp(self): r = Replacer() self.addCleanup(r.restore) self.mock = Mock() self.mock.input.return_value = 'u' self.mock.getpass.return_value = 'p' r.replace('workfront.get_api_key.input', self.mock.input) r.replace('getpass.getpass', self.mock.getpass) r.replace('logging.basicConfig', self.mock.logging) r.replace('sys.argv', ['x']) self.server = MockOpen( 'https://api-cl01.attask-ondemand.com/attask/api/unsupported' ) r.replace('workfront.six.moves.urllib.request.urlopen', self.server)
def test_load_default_filename(): with mock.patch("builtins.open", MockOpen(None)) as open_mock: assert( ukpolice.default_burglary_data() == None ) filename = open_mock.calls[0][0][0] assert( os.path.split(filename)[1] == "uk_police.csv" )
class TestV40Specials(TestCase): api_version = 'v4.0' def setUp(self): self.replace = Replacer() self.addCleanup(self.replace.restore) self.server = MockOpen( 'https://test.attask-ondemand.com/attask/api/'+self.api_version ) self.replace('workfront.six.moves.urllib.request.urlopen', self.server) self.session = Session('test', api_version=self.api_version) self.api = self.session.api def test_issue_add_comment(self): obj = self.api.Issue(self.session, ID='xxx') self.server.add( url='/NOTE', params='method=POST¬eObjCode=OPTASK¬eText=some text&objID=xxx', response='{"data": {"objCode": "NOTE", "ID":"yyy"}}' ) comment = obj.add_comment('some text') compare(comment, expected=C( self.api.Note, fields={ u'objCode': u'NOTE', u'ID': u'yyy', 'noteText': 'some text', 'noteObjCode': 'OPTASK', 'objID': 'xxx', }, strict=False)) def test_note_add_comment(self): obj = self.api.Note(self.session, ID='xxx', noteObjCode='NCDE', objID='zzz') self.server.add( url='/NOTE', params='method=POST¬eObjCode=NCDE¬eText=some text' '&objID=zzz&parentNoteID=xxx', response='{"data": {"objCode": "NOTE", "ID":"yyy"}}' ) comment = obj.add_comment('some text') compare(comment, expected=C( self.api.Note, fields={ u'objCode': u'NOTE', u'ID': u'yyy', 'noteText': 'some text', 'noteObjCode': 'NCDE', 'objID': 'zzz', 'parentNoteID': 'xxx', }, strict=False)) def test_task_add_comment(self): obj = self.api.Task(self.session, ID='xxx') self.server.add( url='/NOTE', params='method=POST¬eObjCode=TASK¬eText=some text&objID=xxx', response='{"data": {"objCode": "NOTE", "ID":"yyy"}}' ) comment = obj.add_comment('some text') compare(comment, expected=C( self.api.Note, fields={ u'objCode': u'NOTE', u'ID': u'yyy', 'noteText': 'some text', 'noteObjCode': 'TASK', 'objID': 'xxx', }, strict=False)) def test_issue_convert_to_task(self): obj = self.api.Issue(self.session, ID='xxx', name='test issue', description='a test', entered_by_id='zzz') self.server.add( url='/OPTASK/xxx/convertToTask', params='method=PUT&updates={"task": {"description": "a test", ' '"enteredByID": "zzz", "name": "test issue"}, "options": ' '["preserveIssue", "preservePrimaryContact", ' '"preserveUpdates"]}', response='{"data": {"result": "yyy"}}' ) task = obj.convert_to_task() compare(task, expected=C( self.api.Task, fields={u'ID': u'yyy'}, strict=False)) def test_update_obj(self): obj = self.api.Update(self.session, ID='xxx', update_obj_id='zzz', update_obj_code='TASK') task = obj.update_obj compare(task, expected=C( self.api.Task, fields={u'ID': u'zzz', u"objCode": u"TASK"}, strict=False)) def test_action_full(self): obj = self.api.Schedule(self.session, ID='xxx') self.server.add( url='/SCHED/xxx/getNextCompletionDate', params='method=PUT&date=2001-01-01&costInMinutes=24', response='{"data": {"result": "yyy"}}' ) result = obj.get_next_completion_date('2001-01-01', 24) compare(result, expected='yyy') def test_action_default_args(self): obj = self.api.Schedule(self.session, ID='xxx') self.server.add( url='/SCHED/xxx/getNextCompletionDate', params='method=PUT', response='{"data": {"result": "yyy"}}' ) result = obj.get_next_completion_date() compare(result, expected='yyy') def test_action_no_args_or_return(self): obj = self.api.Project(self.session, ID='xxx') self.server.add( url='/PROJ/xxx/recallApproval', params='method=PUT', response='{"data": {}}' ) result = obj.recall_approval() compare(result, expected=None)
class TestV40Specials(TestCase): api_version = 'v4.0' def setUp(self): self.replace = Replacer() self.addCleanup(self.replace.restore) self.server = MockOpen('https://test.attask-ondemand.com/attask/api/' + self.api_version) self.replace('workfront.six.moves.urllib.request.urlopen', self.server) self.session = Session('test', api_version=self.api_version) self.api = self.session.api def test_issue_add_comment(self): obj = self.api.Issue(self.session, ID='xxx') self.server.add( url='/NOTE', params= 'method=POST¬eObjCode=OPTASK¬eText=some text&objID=xxx', response='{"data": {"objCode": "NOTE", "ID":"yyy"}}') comment = obj.add_comment('some text') compare(comment, expected=C(self.api.Note, fields={ u'objCode': u'NOTE', u'ID': u'yyy', 'noteText': 'some text', 'noteObjCode': 'OPTASK', 'objID': 'xxx', }, strict=False)) def test_note_add_comment(self): obj = self.api.Note(self.session, ID='xxx', noteObjCode='NCDE', objID='zzz') self.server.add( url='/NOTE', params='method=POST¬eObjCode=NCDE¬eText=some text' '&objID=zzz&parentNoteID=xxx', response='{"data": {"objCode": "NOTE", "ID":"yyy"}}') comment = obj.add_comment('some text') compare(comment, expected=C(self.api.Note, fields={ u'objCode': u'NOTE', u'ID': u'yyy', 'noteText': 'some text', 'noteObjCode': 'NCDE', 'objID': 'zzz', 'parentNoteID': 'xxx', }, strict=False)) def test_task_add_comment(self): obj = self.api.Task(self.session, ID='xxx') self.server.add( url='/NOTE', params='method=POST¬eObjCode=TASK¬eText=some text&objID=xxx', response='{"data": {"objCode": "NOTE", "ID":"yyy"}}') comment = obj.add_comment('some text') compare(comment, expected=C(self.api.Note, fields={ u'objCode': u'NOTE', u'ID': u'yyy', 'noteText': 'some text', 'noteObjCode': 'TASK', 'objID': 'xxx', }, strict=False)) def test_issue_convert_to_task(self): obj = self.api.Issue(self.session, ID='xxx', name='test issue', description='a test', entered_by_id='zzz') self.server.add( url='/OPTASK/xxx/convertToTask', params='method=PUT&updates={"task": {"description": "a test", ' '"enteredByID": "zzz", "name": "test issue"}, "options": ' '["preserveIssue", "preservePrimaryContact", ' '"preserveUpdates"]}', response='{"data": {"result": "yyy"}}') task = obj.convert_to_task() compare(task, expected=C(self.api.Task, fields={u'ID': u'yyy'}, strict=False)) def test_update_obj(self): obj = self.api.Update(self.session, ID='xxx', update_obj_id='zzz', update_obj_code='TASK') task = obj.update_obj compare(task, expected=C(self.api.Task, fields={ u'ID': u'zzz', u"objCode": u"TASK" }, strict=False)) def test_action_full(self): obj = self.api.Schedule(self.session, ID='xxx') self.server.add(url='/SCHED/xxx/getNextCompletionDate', params='method=PUT&date=2001-01-01&costInMinutes=24', response='{"data": {"result": "yyy"}}') result = obj.get_next_completion_date('2001-01-01', 24) compare(result, expected='yyy') def test_action_default_args(self): obj = self.api.Schedule(self.session, ID='xxx') self.server.add(url='/SCHED/xxx/getNextCompletionDate', params='method=PUT', response='{"data": {"result": "yyy"}}') result = obj.get_next_completion_date() compare(result, expected='yyy') def test_action_no_args_or_return(self): obj = self.api.Project(self.session, ID='xxx') self.server.add(url='/PROJ/xxx/recallApproval', params='method=PUT', response='{"data": {}}') result = obj.recall_approval() compare(result, expected=None)