def test_login_without_settings_params():
    with pytest.raises(google.GoogleApiError) as e, \
            patch("taiga_contrib_google_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 = google.login("*access-code*", "**client-id**", "*ient-secret*", google.HEADERS)
    assert e.value.status_code == 400
    assert "error_message" in e.value.detail
def test_login_without_settings_params():
    with pytest.raises(google.GoogleApiError) as e, \
            patch("taiga_contrib_google_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 = google.login("*access-code*", "**client-id**",
                                 "*ient-secret*", google.HEADERS)
    assert e.value.status_code == 400
    assert "error_message" in e.value.detail
def test_login_whit_errors():
    with pytest.raises(google.GoogleApiError) as e, \
            patch("taiga_contrib_google_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_google_auth.connector.CLIENT_ID") as CLIENT_ID, \
            patch("taiga_contrib_google_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 = google.login("*access-code*", "**client-id**", "*ient-secret*", google.HEADERS)
    assert e.value.status_code == 400
    assert e.value.detail["status_code"] == 200
    assert e.value.detail["error"] == "Invalid credentials"
def test_login_whit_errors():
    with pytest.raises(google.GoogleApiError) as e, \
            patch("taiga_contrib_google_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_google_auth.connector.CLIENT_ID") as CLIENT_ID, \
            patch("taiga_contrib_google_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 = google.login("*access-code*", "**client-id**",
                                 "*ient-secret*", google.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_google_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_google_auth.connector.CLIENT_ID") as CLIENT_ID, \
            patch("taiga_contrib_google_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 = google.login("*access-code*", "**client-id**", "*client-secret*", google.HEADERS)

        assert auth_info.access_token == "xxxxxxxx"
        m_requests.post.assert_called_once_with("https://google.com/login/oauth/access_token",
                                                headers=google.HEADERS,
                                                params={'code': '*access-code*',
                                                        'scope': 'user:emails',
                                                        'client_id': '**client-id**',
                                                        'client_secret': '*client-secret*'})
def test_login_success():
    with patch("taiga_contrib_google_auth.connector.requests") as m_requests, \
            patch("taiga_contrib_google_auth.connector.CLIENT_ID") as CLIENT_ID, \
            patch("taiga_contrib_google_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 = google.login("*access-code*", "**client-id**",
                                 "*client-secret*", google.HEADERS)

        assert auth_info.access_token == "xxxxxxxx"
        m_requests.post.assert_called_once_with(
            "https://google.com/login/oauth/access_token",
            headers=google.HEADERS,
            params={
                'code': '*access-code*',
                'scope': 'user:emails',
                'client_id': '**client-id**',
                'client_secret': '*client-secret*'
            })