Beispiel #1
0
def get_user_field(client: JIRA, hosting_type: str, jira_username: str,
                   user_email: str) -> dict:
    """Returns correct Jira user field based on Jira hosting type."""
    if hosting_type == "server":
        username = get_email_username(user_email)
        users = client.search_users(user=username)
        for user in users:
            if user.name == username:
                return {"name": user.name}

        # we default to the Jira user we use for managing issues
        # if we can't find the user in Jira
        return {"name": jira_username}
    if hosting_type == "cloud":
        username = get_email_username(user_email)
        user = next(
            client._fetch_pages(
                User,
                None,
                "user/search",
                startAt=0,
                maxResults=1,
                params={"query": username},
            ))
        return {"id": user.accountId}
Beispiel #2
0
def get_user(client: JIRA, username: str) -> User:
    """Helper method to fetch object from JIRA."""
    user = next(
        client._fetch_pages(
            User,
            None,
            "user/search",
            startAt=0,
            maxResults=1,
            params={"query": username},
        ))
    return user
Beispiel #3
0
def get_user_field(client: JIRA, user_email) -> dict:
    """Returns correct Jira user field based on Jira hosting type."""
    if JIRA_HOSTING_TYPE == "Server":
        user = client.search_users(user_email, maxResults=1)[0]
        return {"name": user.name}
    if JIRA_HOSTING_TYPE == "Cloud":
        username = get_email_username(user_email)
        user = next(
            client._fetch_pages(
                User,
                None,
                "user/search",
                startAt=0,
                maxResults=1,
                params={"query": username},
            ))
        return {"id": user.accountId}
Beispiel #4
0
class AsyncTests(JiraTestCase):
    def setUp(self):
        self.jira = JIRA(
            "https://jira.atlassian.com",
            logging=False,
            async_=True,
            validate=False,
            get_server_info=False,
        )

    def test_fetch_pages(self):
        """Tests that the JIRA._fetch_pages method works as expected."""
        params = {"startAt": 0}
        total = 26
        expected_results = []
        for i in range(0, total):
            result = _create_issue_result_json(i,
                                               "summary %s" % i,
                                               key="KEY-%s" % i)
            expected_results.append(result)
        result_one = _create_issue_search_results_json(expected_results[:10],
                                                       max_results=10,
                                                       total=total)
        result_two = _create_issue_search_results_json(expected_results[10:20],
                                                       max_results=10,
                                                       total=total)
        result_three = _create_issue_search_results_json(expected_results[20:],
                                                         max_results=6,
                                                         total=total)
        mock_session = mock.Mock(name="mock_session")
        responses = mock.Mock(name="responses")
        responses.content = "_filler_"
        responses.json.side_effect = [result_one, result_two, result_three]
        responses.status_code = 200
        mock_session.request.return_value = responses
        mock_session.get.return_value = responses
        self.jira._session.close()
        self.jira._session = mock_session
        items = self.jira._fetch_pages(Issue, "issues", "search", 0, False,
                                       params)
        self.assertEqual(len(items), total)
        self.assertEqual(
            set(item.key for item in items),
            set(expected_r["key"] for expected_r in expected_results),
        )