示例#1
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 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)
示例#3
0
    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
示例#6
0
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("")
示例#8
0
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("")
示例#10
0
 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)
示例#11
0
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&noteObjCode=OPTASK&noteText=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&noteObjCode=NCDE&noteText=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&noteObjCode=TASK&noteText=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)
示例#13
0
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&noteObjCode=OPTASK&noteText=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&noteObjCode=NCDE&noteText=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&noteObjCode=TASK&noteText=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)