Пример #1
0
    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
Пример #2
0
 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")
Пример #3
0
 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')
Пример #4
0
 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))
Пример #5
0
 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')
Пример #6
0
 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)
Пример #7
0
 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_)
Пример #8
0
 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)
Пример #9
0
 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))
Пример #10
0
 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")
Пример #11
0
 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))
Пример #12
0
 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")
Пример #13
0
 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)
Пример #14
0
 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")
Пример #15
0
 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)
Пример #16
0
 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
     )
Пример #17
0
 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)
Пример #18
0
 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
Пример #19
0
 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)
Пример #20
0
 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",
     )
Пример #21
0
 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",
     )
Пример #22
0
 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))
Пример #23
0
 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")
Пример #24
0
 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')
Пример #25
0
 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,
     )
Пример #26
0
    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))
Пример #27
0
 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",
         },
     )
Пример #28
0
    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
Пример #29
0
 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'
                                               })
Пример #30
0
    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)