def taiga_api(self): us = UserService.objects.get(user=self.user, name='ServiceTaiga') if us.token: api = TaigaAPI(token=us.token, host=us.host) else: api = TaigaAPI(host=us.host) api.auth(us.username, us.password) return api
def test_auth_success(self, requests): requests.post.return_value = MockResponse( 200, create_mock_json("tests/resources/auth_app_success.json")) api = TaigaAPI(host="host") api.auth_app("valid-app-id", "valid-app-secret", "valid-auth-code", "valid-state") self.assertEqual(api.token, "f4k3")
def test_single_userstory_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/userstory_details_success.json') ) api = TaigaAPI(token='f4k3') userstory = api.user_stories.get(1) self.assertEqual(userstory.description, 'Description of the story')
def test_list_all_users(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse(200, create_mock_json('tests/resources/projects_list_success.json')) api = TaigaAPI(token='f4k3') users = api.users.list() self.assertEqual(len(users), 1) self.assertTrue(isinstance(users[0], User))
def test_auth_success(self, requests): requests.post.return_value = MockResponse( 200, create_mock_json('tests/resources/auth_app_success.json')) api = TaigaAPI(host='host') api.auth_app('valid-app-id', 'valid-app-secret', 'valid-auth-code', 'valid-state') self.assertEqual(api.token, 'f4k3')
def test_list_projects_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/projects_list_success.json')) api = TaigaAPI(token='f4k3') projects = api.projects.list() self.assertEqual(projects[0].description, 'Project example 0 description') self.assertEqual(len(projects), 1)
def _init(self, **kwargs): self.api = TaigaAPI(host=self.host) if self.token_: self.api.token = self.token_ else: if not self.username or not self.password_: raise RuntimeError("username and password are required") self.api.auth(self.username, self.password_)
def test_list_userstories_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/userstories_list_success.json') ) api = TaigaAPI(token='f4k3') userstories = api.user_stories.list() self.assertEqual(userstories[0].description, 'Description of the story') self.assertEqual(len(userstories), 1)
def test_single_milestone_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json("tests/resources/milestone_details_success.json")) api = TaigaAPI(token="f4k3") milestone = api.milestones.get(1) self.assertEqual(milestone.name, "MILESTONE 1") self.assertTrue(isinstance(milestone.user_stories[0], UserStory))
def test_get_tasks_by_ref(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/task_details_success.json')) rm = RequestMaker('/api/v1', 'fakehost', 'faketoken') project = Project(rm, id=1) api = TaigaAPI(token='f4k3') task = project.get_task_by_ref(1) self.assertEqual(task.description, "Implement API CALL")
def test_list_milestones_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/milestones_list_success.json')) api = TaigaAPI(token='f4k3') milestones = api.milestones.list() self.assertEqual(milestones[0].name, 'MILESTONE 1') self.assertTrue(isinstance(milestones[0].user_stories[0], UserStory))
def test_get_userstories_by_ref(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/userstory_details_success.json')) rm = RequestMaker('/api/v1', 'fakehost', 'faketoken') project = Project(rm, id=1) api = TaigaAPI(token='f4k3') us = project.get_userstory_by_ref(1) self.assertEqual(us.description, "Description of the story")
def test_list_epics_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/epics_list_success.json')) api = TaigaAPI(token='f4k3') epics = api.epics.list() print(epics) # TODO: check this: # self.assertEqual(epics[0].description, 'Description of the Epic') self.assertEqual(len(epics), 1)
def test_get_issues_by_ref(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json("tests/resources/issue_details_success.json")) rm = RequestMaker("/api/v1", "fakehost", "faketoken") project = Project(rm, id=1) TaigaAPI(token="f4k3") issue = project.get_issue_by_ref(31) self.assertEqual(issue.description, "Implement API CALL")
def test_wiki(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/history_success.json')) api = TaigaAPI(token='f4k3') res_id = 1 wiki = api.history.wiki.get(res_id) mock_requestmaker_get.assert_called_with('/{endpoint}/{entity}/{id}', endpoint='history', entity='wiki', id=res_id)
def test_userstory_undelete_comment(self, mock_requestmaker_post): mock_requestmaker_post.return_value = MockResponse(204, '') api = TaigaAPI(token='f4k3') res_id = 1 ent_id = '9660411e-6fea-11e4-a5b3-b499ba565108' api.history.user_story.undelete_comment(res_id, ent_id) mock_requestmaker_post.assert_called_with( '/{endpoint}/{entity}/{id}/undelete_comment?id={ent_id}', endpoint='history', entity='userstory', id=res_id, ent_id=ent_id )
def test_stats(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/milestone_details_success.json')) api = TaigaAPI(token='f4k3') milestone = api.milestones.get(1) milestone.stats() mock_requestmaker_get.assert_called_with('/{endpoint}/{id}/stats', endpoint='milestones', id=milestone.id)
def api(self): if not self._api: api = TaigaAPI(host=self.host) if self.token: api.token = self.token else: if not self.username or not self.password: raise j.exceptions.Runtime("Token or username and password are required") api.auth(self.username, self.password) self._api = api return self._api
def test_wiki(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json("tests/resources/history_success.json")) api = TaigaAPI(token="f4k3") res_id = 1 api.history.wiki.get(res_id) mock_requestmaker_get.assert_called_with("/{endpoint}/{entity}/{id}", endpoint="history", entity="wiki", id=res_id, paginate=False)
def test_auth_connection_error(self, requests_post): requests_post.side_effect = requests.RequestException() api = TaigaAPI(host="host") self.assertRaises( taiga.exceptions.TaigaRestException, api.auth_app, "valid-app-id", "valid-app-pass", "valid-auth-code", "valid-state", )
def test_auth_not_success(self, requests): requests.post.return_value = MockResponse(401, "Not allowed") api = TaigaAPI(host="host") self.assertRaises( taiga.exceptions.TaigaRestException, api.auth_app, "valid-app-id", "valid-app-secret", "valid-auth-code", "valid-state", )
def test_single_project_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/project_details_success.json')) api = TaigaAPI(token='f4k3') project = api.projects.get(1) self.assertEqual(project.description, 'Project example 0 description') self.assertEqual(len(project.members), 11) self.assertTrue(isinstance(project.members[0], User)) self.assertTrue(isinstance(project.points[0], Point)) self.assertTrue(isinstance(project.us_statuses[0], UserStoryStatus)) self.assertTrue(isinstance(project.severities[0], Severity))
def test_get_project_by_slug(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json("tests/resources/project_details_success.json")) api = TaigaAPI(token="f4k3") project = api.projects.get_by_slug("my_slug") self.assertTrue(isinstance(project, Project)) self.assertEqual(project.name, "Project Example 0") mock_requestmaker_get.assert_called_with( "/{endpoint}/by_slug?slug={slug}", endpoint="projects", slug="my_slug")
def test_get_project_by_slug(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/project_details_success.json')) api = TaigaAPI(token='f4k3') project = api.projects.get_by_slug('my_slug') self.assertTrue(isinstance(project, Project)) self.assertEqual(project.name, 'Project Example 0') mock_requestmaker_get.assert_called_with( '/{endpoint}/by_slug?slug={slug}', endpoint='projects', slug='my_slug')
def test_userstory_undelete_comment(self, mock_requestmaker_post): mock_requestmaker_post.return_value = MockResponse(204, "") api = TaigaAPI(token="f4k3") res_id = 1 comment_id = "9660411e-6fea-11e4-a5b3-b499ba565108" api.history.user_story.undelete_comment(res_id, comment_id) mock_requestmaker_post.assert_called_with( "/{endpoint}/{entity}/{id}/undelete_comment?id={comment_id}", endpoint="history", entity="userstory", id=res_id, comment_id=comment_id, )
def test_single_user_parsing(self, mock_requestmaker_get): mock_requestmaker_get.return_value = MockResponse( 200, create_mock_json('tests/resources/search_success.json')) api = TaigaAPI(token='f4k3') search_result = api.search(1, 'NEW') self.assertEqual(len(search_result.tasks), 1) self.assertEqual(len(search_result.user_stories), 1) self.assertEqual(len(search_result.issues), 1) self.assertEqual(len(search_result.wikipages), 1) self.assertTrue(isinstance(search_result.tasks[0], Task)) self.assertTrue(isinstance(search_result.issues[0], Issue)) self.assertTrue(isinstance(search_result.user_stories[0], UserStory)) self.assertTrue(isinstance(search_result.wikipages[0], WikiPage))
def test_milestone_create(self, mock_requestmaker_post): api = TaigaAPI(token="f4k3") start_time = datetime.datetime(2015, 1, 16, 0, 0) finish_time = datetime.datetime(2015, 2, 16, 0, 0) api.milestones.create(1, "Sprint Jan", start_time, finish_time) mock_requestmaker_post.assert_called_with( "milestones", payload={ "project": 1, "estimated_finish": "2015-02-16", "estimated_start": "2015-01-16", "name": "Sprint Jan", }, )
def create_issue(self, request, group, form_data, **kwargs): api = self.get_option('taiga_api', group.project) username = self.get_option('taiga_username', group.project) password = self.get_option('taiga_password', group.project) project_slug = self.get_option('taiga_project', group.project) labels = self.get_option('taiga_labels', group.project) tg = TaigaAPI(host=api) try: tg.auth(username=username, password=password) except Exception as e: raise forms.ValidationError( _('Error Communicating ' 'with Taiga: %s') % (e, )) project = tg.projects.get_by_slug(slug=project_slug) if project is None: raise forms.ValidationError( _('No project found in Taiga with slug %s') % (project_slug, )) default_issue_status = project.default_issue_status priority = project.default_priority issue_type = project.default_issue_type severity = project.default_severity if default_issue_status is None: raise forms.ValidationError( _('Project %s has no default status. ' 'Set the default issue status in Taiga') % (project.name, )) if not labels: labels = '' data = { 'subject': form_data['title'], 'status': default_issue_status, 'description': form_data['description'], 'priority': priority, 'issue_type': issue_type, 'severity': severity, 'tags': [label.strip() for label in labels.split(",") if label] } if self.is_issue(group.project): issue = project.add_issue(**data) else: issue = project.add_user_story(**data) return issue.ref
def test_milestone_create(self, mock_requestmaker_post): api = TaigaAPI(token='f4k3') start_time = datetime.datetime(2015, 1, 16, 0, 0) finish_time = datetime.datetime(2015, 2, 16, 0, 0) api.milestones.create(1, 'Sprint Jan', start_time, finish_time) mock_requestmaker_post.assert_called_with('milestones', payload={ 'project': 1, 'estimated_finish': '2015-02-16', 'estimated_start': '2015-01-16', 'name': 'Sprint Jan' })
def create_taiga_channels(self, username, password, desc, course_id): api = TaigaAPI() try: api.auth(username=username, password=password) except: return 'invalid auth' group_data = self.get_groupsdata(course_id) for key in group_data: new_project = api.projects.create(key, desc) new_project.is_private = "false" new_project.update() for member in group_data[key]: email = member + '@asu.edu' new_project.add_membership(role=new_project.roles[0].id, username=email, email=email)