def test_login_whit_errors():
    with pytest.raises(gitlab.GitLabApiError) as e, \
            patch("taiga_contrib_gitlab_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_gitlab_auth.connector.URL", "http://localhost:4321"), \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_ID", "*CLIENT_ID*"), \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_SECRET", "*CLIENT_SECRET*"):
        m_requests.post.return_value = m_response = Mock()
        m_response.status_code = 200
        m_response.json.return_value = {"error": "Invalid credentials"}

        gitlab.login("*access-code*", "**client-id**", "*ient-secret*",
                     gitlab.HEADERS)
    assert e.value.status_code == 400
    assert e.value.detail["status_code"] == 200
    assert e.value.detail["error"] == "Invalid credentials"
def test_login_without_settings_params():
    with pytest.raises(gitlab.GitLabApiError) as e, \
            patch("taiga_contrib_gitlab_auth.connector.requests") as m_requests:
        m_requests.post.return_value = m_response = Mock()
        m_response.status_code = 200
        m_response.json.return_value = {"access_token": "xxxxxxxx"}

        auth_info = gitlab.login("*access-code*", "**client-id**", "*ient-secret*", gitlab.HEADERS)
    assert e.value.status_code == 400
    assert "error_message" in e.value.detail
def test_login_without_settings_params():
    with pytest.raises(gitlab.GitLabApiError) as e, \
            patch("taiga_contrib_gitlab_auth.connector.requests") as m_requests:
        m_requests.post.return_value = m_response = Mock()
        m_response.status_code = 200
        m_response.json.return_value = {"access_token": "xxxxxxxx"}

        auth_info = gitlab.login("*access-code*", "**client-id**",
                                 "*ient-secret*", gitlab.HEADERS)
    assert e.value.status_code == 400
    assert "error_message" in e.value.detail
def test_login_whit_errors():
    with pytest.raises(gitlab.GitLabApiError) as e, \
            patch("taiga_contrib_gitlab_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_ID") as CLIENT_ID, \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_SECRET") as CLIENT_SECRET:
        CLIENT_ID = "*CLIENT_ID*"
        CLIENT_SECRET = "*CLIENT_SECRET*"
        m_requests.post.return_value = m_response = Mock()
        m_response.status_code = 200
        m_response.json.return_value = {"error": "Invalid credentials"}

        auth_info = gitlab.login("*access-code*", "**client-id**", "*ient-secret*", gitlab.HEADERS)
    assert e.value.status_code == 400
    assert e.value.detail["status_code"] == 200
    assert e.value.detail["error"] == "Invalid credentials"
def test_login_success():
    with patch("taiga_contrib_gitlab_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_ID") as CLIENT_ID, \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_SECRET") as CLIENT_SECRET:
        CLIENT_ID = "*CLIENT_ID*"
        CLIENT_SECRET = "*CLIENT_SECRET*"
        m_requests.post.return_value = m_response = Mock()
        m_response.status_code = 200
        m_response.json.return_value = {"access_token": "xxxxxxxx"}

        auth_info = gitlab.login("*access-code*", "**client-id**", "*client-secret*", gitlab.HEADERS)

        assert auth_info.access_token == "xxxxxxxx"
        m_requests.post.assert_called_once_with("https://gitlab.test.ts/login/oauth/access_token",
                                                headers=gitilab.HEADERS,
                                                params={'code': '*access-code*',
                                                        'scope': 'user:emails',
                                                        'client_id': '**client-id**',
                                                        'client_secret': '*client-secret*'})
def test_login_success():
    with patch("taiga_contrib_gitlab_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_ID") as CLIENT_ID, \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_SECRET") as CLIENT_SECRET:
        CLIENT_ID = "*CLIENT_ID*"
        CLIENT_SECRET = "*CLIENT_SECRET*"
        m_requests.post.return_value = m_response = Mock()
        m_response.status_code = 200
        m_response.json.return_value = {"access_token": "xxxxxxxx"}

        auth_info = gitlab.login("*access-code*", "**client-id**",
                                 "*client-secret*", gitlab.HEADERS)

        assert auth_info.access_token == "xxxxxxxx"
        m_requests.post.assert_called_once_with(
            "https://gitlab.test.ts/login/oauth/access_token",
            headers=gitilab.HEADERS,
            params={
                'code': '*access-code*',
                'scope': 'user:emails',
                'client_id': '**client-id**',
                'client_secret': '*client-secret*'
            })
def test_login_success():
    with patch("taiga_contrib_gitlab_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_gitlab_auth.connector.URL", "http://localhost:4321"), \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_ID", "*CLIENT_ID*"), \
            patch("taiga_contrib_gitlab_auth.connector.CLIENT_SECRET", "*CLIENT_SECRET*"):
        m_requests.post.return_value = m_response = Mock()
        m_response.status_code = 200
        m_response.json.return_value = {"access_token": "xxxxxxxx"}

        auth_info = gitlab.login("*access-code*", "http://localhost:1234",
                                 "**client-id**", "*client-secret*",
                                 gitlab.HEADERS)

        assert auth_info.access_token == "xxxxxxxx"
        m_requests.post.assert_called_once_with(
            "http://localhost:4321/oauth/token",
            headers=gitlab.HEADERS,
            params={
                'code': '*access-code*',
                'client_id': '**client-id**',
                'client_secret': '*client-secret*',
                'grant_type': 'authorization_code',
                'redirect_uri': 'http://localhost:1234'
            })