Beispiel #1
0
def test_get_config_old_format(tmpdir):
    pypirc = os.path.join(str(tmpdir), ".pypirc")

    with open(pypirc, "w") as fp:
        fp.write(textwrap.dedent("""
            [server-login]
            username:foo
            password:bar
        """))

    try:
        settings.Settings(
            repository_name="pypi", sign=None, identity=None, username=None,
            password=None, comment=None, cert=None, client_cert=None,
            sign_with=None, config_file=pypirc, skip_existing=False,
            repository_url=None, verbose=False,
        )
    except KeyError as err:
        assert err.args[0] == (
            "Missing 'pypi' section from the configuration file\n"
            "or not a complete URL in --repository-url.\n"
            "Maybe you have a out-dated '{0}' format?\n"
            "more info: "
            "https://docs.python.org/distutils/packageindex.html#pypirc\n"
        ).format(pypirc)
Beispiel #2
0
def test_password_not_required_if_client_cert(entered_password):
    """Verify that if client_cert is provided then a password is not."""
    test_client_cert = "/random/path"
    settings_obj = settings.Settings(username="******",
                                     client_cert=test_client_cert)
    assert not settings_obj.password
    assert settings_obj.client_cert == test_client_cert
Beispiel #3
0
    def _settings(config=default_config, **settings_kwargs):
        config_file = write_config_file(config)

        settings_kwargs.setdefault("sign_with", None)
        settings_kwargs.setdefault("config_file", config_file)

        return settings.Settings(**settings_kwargs)
Beispiel #4
0
def test_deprecated_repo(tmpdir):
    with pytest.raises(exceptions.UploadToDeprecatedPyPIDetected) as err:
        pypirc = os.path.join(str(tmpdir), ".pypirc")
        dists = ["tests/fixtures/twine-1.5.0-py2.py3-none-any.whl"]

        with open(pypirc, "w") as fp:
            fp.write(textwrap.dedent("""
                [pypi]
                repository: https://pypi.python.org/pypi/
                username:foo
                password:bar
            """))

        upload_settings = settings.Settings(
            repository_name="pypi", sign=None, identity=None, username=None,
            password=None, comment=None, cert=None, client_cert=None,
            sign_with=None, config_file=pypirc, skip_existing=False,
            repository_url=None, verbose=False,
        )

        upload.upload(upload_settings, dists)

        assert err.args[0] == (
            "You're trying to upload to the legacy PyPI site "
            "'https://pypi.python.org/pypi/'. "
            "Uploading to those sites is deprecated. \n "
            "The new sites are pypi.org and test.pypi.org. Try using "
            "https://upload.pypi.org/legacy/ "
            "(or https://test.pypi.org/legacy/) "
            "to upload your packages instead. "
            "These are the default URLs for Twine now. \n "
            "More at "
            "https://packaging.python.org/guides/migrating-to-pypi-org/ ."
            )
def test_password_not_required_if_client_cert(entered_password):
    """Don't set password when only client_cert is provided."""
    test_client_cert = "/random/path"
    settings_obj = settings.Settings(username="******",
                                     client_cert=test_client_cert)
    assert not settings_obj.password
    assert settings_obj.client_cert == test_client_cert
Beispiel #6
0
def test_setup_logging(verbose, log_level):
    """Set log level based on verbose field."""
    settings.Settings(verbose=verbose)

    logger = logging.getLogger("twine")

    assert logger.level == log_level
Beispiel #7
0
    def _settings(pypirc_text=default_pypirc, **settings_kwargs):
        pypirc.write(textwrap.dedent(pypirc_text))

        settings_kwargs.setdefault("sign_with", None)
        settings_kwargs.setdefault("config_file", str(pypirc))

        return settings.Settings(**settings_kwargs)
Beispiel #8
0
def test_settings_transforms_repository_config(tmpdir):
    """Set repository config and defaults when .pypirc is provided."""
    pypirc = os.path.join(str(tmpdir), ".pypirc")

    with open(pypirc, "w") as fp:
        fp.write(
            textwrap.dedent(
                """
            [pypi]
            repository: https://upload.pypi.org/legacy/
            username:username
            password:password
        """
            )
        )
    s = settings.Settings(config_file=pypirc)
    assert s.repository_config["repository"] == "https://upload.pypi.org/legacy/"
    assert s.sign is False
    assert s.sign_with == "gpg"
    assert s.identity is None
    assert s.username == "username"
    assert s.password == "password"
    assert s.cacert is None
    assert s.client_cert is None
    assert s.disable_progress_bar is False
Beispiel #9
0
def test_no_password_prompt_if_client_cert_and_non_interactive(entered_password):
    """Don't prompt for password when client_cert is provided and non interactive."""
    client_cert = "/random/path"
    settings_obj = settings.Settings(
        username="******", client_cert=client_cert, non_interactive=True
    )
    assert not settings_obj.password
Beispiel #10
0
def test_successful_upload(tmpdir):
    pypirc = os.path.join(str(tmpdir), ".pypirc")
    dists = ["tests/fixtures/twine-1.5.0-py2.py3-none-any.whl"]

    with open(pypirc, "w") as fp:
        fp.write(textwrap.dedent("""
            [pypi]
            username:foo
            password:bar
        """))

    upload_settings = settings.Settings(
        repository_name="pypi", sign=None, identity=None, username=None,
        password=None, comment=None, cert=None, client_cert=None,
        sign_with=None, config_file=pypirc, skip_existing=False,
        repository_url=None, verbose=False,
    )

    stub_response = pretend.stub(
        is_redirect=False, status_code=201, raise_for_status=lambda: None
    )
    stub_repository = pretend.stub(
        upload=lambda package: stub_response, close=lambda: None
    )

    upload_settings.create_repository = lambda: stub_repository

    result = upload.upload(upload_settings, dists)

    # Raising an exception or returning anything truthy would mean that the
    # upload has failed
    assert result is None
Beispiel #11
0
def test_client_cert_is_set_and_password_not_if_both_given(entered_password):
    """Verify that if both password and client_cert are given they are set"""
    client_cert = "/random/path"
    settings_obj = settings.Settings(username="******",
                                     password="******",
                                     client_cert=client_cert)
    assert not settings_obj.password
    assert settings_obj.client_cert == client_cert
Beispiel #12
0
def test_client_cert_and_password_both_set_if_given():
    """Set password and client_cert when both are provided."""
    client_cert = "/random/path"
    settings_obj = settings.Settings(username="******",
                                     password="******",
                                     client_cert=client_cert)
    assert settings_obj.password == "anything"
    assert settings_obj.client_cert == client_cert
Beispiel #13
0
def test_settings_transforms_repository_config(write_config_file):
    """Set repository config and defaults when .pypirc is provided."""
    config_file = write_config_file("""
        [pypi]
        repository: https://upload.pypi.org/legacy/
        username:username
        password:password
        """)

    s = settings.Settings(config_file=config_file)
    assert s.repository_config[
        "repository"] == "https://upload.pypi.org/legacy/"
    assert s.sign is False
    assert s.sign_with == "gpg"
    assert s.identity is None
    assert s.username == "username"
    assert s.password == "password"
    assert s.cacert is None
    assert s.client_cert is None
    assert s.disable_progress_bar is False
Beispiel #14
0
def test_settings_transforms_config(tmpdir):
    """Verify that the settings object transforms the passed in options."""
    pypirc = os.path.join(str(tmpdir), ".pypirc")

    with open(pypirc, "w") as fp:
        fp.write(
            textwrap.dedent("""
            [pypi]
            repository: https://upload.pypi.org/legacy/
            username:username
            password:password
        """))
    s = settings.Settings(config_file=pypirc)
    assert (
        s.repository_config['repository'] == 'https://upload.pypi.org/legacy/')
    assert s.sign is False
    assert s.sign_with == 'gpg'
    assert s.identity is None
    assert s.username == 'username'
    assert s.password == 'password'
    assert s.cacert is None
    assert s.client_cert is None
Beispiel #15
0
def test_settings_takes_no_positional_arguments():
    """Verify that the Settings initialization is kw-only."""
    with pytest.raises(TypeError):
        settings.Settings('a', 'b', 'c')
Beispiel #16
0
def test_password_is_required_if_no_client_cert(client_cert, entered_password):
    """Set password when client_cert is not provided."""
    settings_obj = settings.Settings(username="******",
                                     client_cert=client_cert)
    assert settings_obj.password == "entered pw"
Beispiel #17
0
def test_identity_requires_sign():
    """Raise an exception when user provides identity but doesn't require sigining."""
    with pytest.raises(exceptions.InvalidSigningConfiguration):
        settings.Settings(sign=False, identity="fakeid")
Beispiel #18
0
def test_settings_takes_no_positional_arguments():
    """Raise an exception when Settings is initialized without keyword arguments."""
    with pytest.raises(TypeError):
        settings.Settings("a", "b", "c")
Beispiel #19
0
def test_password_required_if_no_client_cert_and_non_interactive():
    """Raise exception if no password or client_cert when non interactive."""
    settings_obj = settings.Settings(username="******", non_interactive=True)
    with pytest.raises(exceptions.NonInteractive):
        settings_obj.password
Beispiel #20
0
def test_password_is_required_if_no_client_cert(client_cert, entered_password):
    """Verify that if client_cert is not provided then a password must be."""
    settings_obj = settings.Settings(username="******",
                                     client_cert=client_cert)
    assert settings_obj.password == "entered pw"
Beispiel #21
0
def test_identity_requires_sign():
    """Verify that if a user passes identity, we require sign=True."""
    with pytest.raises(exceptions.InvalidSigningConfiguration):
        settings.Settings(sign=False, identity='fakeid')