Пример #1
0
def evernote_login_oauth(backend: str, oauth_port: int) -> str:
    if not is_output_to_terminal():
        raise ProgramTerminatedError("OAuth requires user input!")

    if backend.startswith("china"):
        raise ProgramTerminatedError(
            "OAuth is not supported to log in to Yinxiang!\n"
            "You will have to reset your Evernote account password"
            " and use your credentials to log in.")

    oauth_client = get_oauth_client(backend)

    oauth_handler = EvernoteOAuthCallbackHandler(oauth_client, oauth_port)

    oauth_url = oauth_handler.get_oauth_url()

    click.echo(
        f"Opening authorization page...\n"
        f"If it didn't open automatically, please copy this URL into your browser:\n"
        f"{oauth_url}")
    click.launch(oauth_url)

    try:
        return oauth_handler.wait_for_token()
    except OAuthDeclinedError:
        raise ProgramTerminatedError("Authorization declined!")
def test_get_auth_token_url(mock_oauth_client, mock_evernote_oauth_client):
    expected_url = "https://www.evernote.com/OAuth.action?oauth_token=fake_app.FFF"
    oauth_handler = EvernoteOAuthCallbackHandler(
        mock_evernote_oauth_client, FAKE_OAUTH_PORT, FAKE_OAUTH_HOST
    )

    url = oauth_handler.get_oauth_url()

    assert url == expected_url
def test_get_auth_token(mock_oauth_client, mock_evernote_oauth_client):
    oauth_handler = EvernoteOAuthCallbackHandler(
        mock_evernote_oauth_client, FAKE_OAUTH_PORT, FAKE_OAUTH_HOST
    )
    oauth_handler.get_oauth_url()

    test_token = oauth_handler.wait_for_token()

    assert test_token == mock_oauth_client.fake_token
Пример #4
0
def test_get_auth_token_url(mock_oauth_client, mock_evernote_oauth_client):
    expected_url = "https://www.evernote.com/OAuth.action?oauth_token=fake_app.FFF"
    fake_oauth_port = 10500
    oauth_handler = EvernoteOAuthCallbackHandler(mock_evernote_oauth_client,
                                                 fake_oauth_port)

    url = oauth_handler.get_oauth_url()

    assert url == expected_url
Пример #5
0
def test_get_auth_token(mock_oauth_client, mock_evernote_oauth_client):
    fake_oauth_port = 10500
    oauth_handler = EvernoteOAuthCallbackHandler(mock_evernote_oauth_client,
                                                 fake_oauth_port)
    oauth_handler.get_oauth_url()

    test_token = oauth_handler.wait_for_token()

    assert test_token == mock_oauth_client.fake_token
def test_get_auth_token_declined(mock_oauth_client, mock_evernote_oauth_client):
    del mock_oauth_client.fake_callback_response["oauth_verifier"]

    oauth_handler = EvernoteOAuthCallbackHandler(
        mock_evernote_oauth_client, FAKE_OAUTH_PORT, FAKE_OAUTH_HOST
    )
    oauth_handler.get_oauth_url()

    with pytest.raises(OAuthDeclinedError):
        oauth_handler.wait_for_token()
Пример #7
0
def test_server_no_docker(mock_oauth_client, mock_evernote_oauth_client,
                          mock_oauth_http_server, mocker):
    fake_oauth_port = 10500
    oauth_handler = EvernoteOAuthCallbackHandler(mock_evernote_oauth_client,
                                                 fake_oauth_port)
    oauth_handler.get_oauth_url()

    oauth_handler.wait_for_token()

    mock_oauth_http_server.assert_any_call(("localhost", fake_oauth_port),
                                           mocker.ANY)
def test_server_no_docker(
    mock_oauth_client, mock_evernote_oauth_client, mock_oauth_http_server, mocker
):
    oauth_handler = EvernoteOAuthCallbackHandler(
        mock_evernote_oauth_client, FAKE_OAUTH_PORT, FAKE_OAUTH_HOST
    )
    oauth_handler.get_oauth_url()

    oauth_handler.wait_for_token()

    mock_oauth_http_server.assert_any_call(
        (FAKE_OAUTH_HOST, FAKE_OAUTH_PORT), mocker.ANY
    )
def test_server_yes_docker(
    mock_oauth_client, mock_evernote_oauth_client, mock_oauth_http_server, mocker
):
    os.environ["INSIDE_DOCKER_CONTAINER"] = "1"

    oauth_handler = EvernoteOAuthCallbackHandler(
        mock_evernote_oauth_client, FAKE_OAUTH_PORT, FAKE_OAUTH_HOST
    )
    oauth_handler.get_oauth_url()

    oauth_handler.wait_for_token()

    mock_oauth_http_server.assert_any_call(("0.0.0.0", FAKE_OAUTH_PORT), mocker.ANY)

    del os.environ["INSIDE_DOCKER_CONTAINER"]
Пример #10
0
def test_server_yes_docker(mock_oauth_client, mock_evernote_oauth_client,
                           mock_oauth_http_server, mocker):
    os.environ["INSIDE_DOCKER_CONTAINER"] = "1"

    fake_oauth_port = 10500
    oauth_handler = EvernoteOAuthCallbackHandler(mock_evernote_oauth_client,
                                                 fake_oauth_port)
    oauth_handler.get_oauth_url()

    oauth_handler.wait_for_token()

    mock_oauth_http_server.assert_any_call(("0.0.0.0", fake_oauth_port),
                                           mocker.ANY)

    del os.environ["INSIDE_DOCKER_CONTAINER"]
def test_get_auth_token_interrupted(
    mock_oauth_client,
    mock_evernote_oauth_client,
    mocker,
):
    mocker.patch(
        "evernote_backup.evernote_client_oauth.StoppableHTTPServer.serve_forever"
    )
    mocker.patch("evernote_backup.evernote_client_oauth.StoppableHTTPServer.shutdown")
    mocker.patch(
        "evernote_backup.evernote_client_oauth.time.sleep",
        side_effect=KeyboardInterrupt,
    )

    oauth_handler = EvernoteOAuthCallbackHandler(
        mock_evernote_oauth_client, FAKE_OAUTH_PORT, FAKE_OAUTH_HOST
    )
    oauth_handler.get_oauth_url()

    with pytest.raises(KeyboardInterrupt):
        oauth_handler.wait_for_token()