def test_bad_created():
    """from_data raises if input data has created of wrong type"""
    with pytest.raises(InvalidDataException):
        Repository.from_data({
            "id": "some-repo",
            "notes": {
                "created": "whoops"
            }
        })
def test_bad_created(caplog):
    """from_data logs and raises if input data has created of wrong type"""
    with pytest.raises(InvalidDataException):
        Repository.from_data({"id": "some-repo", "notes": {"created": "whoops"}})

    # It should have logged about the bad data. We don't verify details
    # of the failure message since it relies too heavily on implementation
    # details (e.g. stringification of class)
    assert "An error occurred while loading Pulp data!" in caplog.text
def test_attr_created():
    """from_data sets created attribute appropriately"""
    repo = Repository.from_data(
        {"id": "some-repo", "notes": {"created": "2019-06-11T12:10:00Z"}}
    )

    expected = datetime.datetime(2019, 6, 11, 12, 10, 0, tzinfo=None)
    assert repo.created == expected
Exemplo n.º 4
0
def test_from_data_gives_yum_repository():
    """Repository.from_data maps to YumRepository subclass when needed"""
    repo = Repository.from_data({
        "id": "my-repo",
        "notes": {
            "_repo-type": "rpm-repo"
        }
    })
    assert isinstance(repo, YumRepository)
def test_is_temporary():
    """from_data is_temporary is True if expected note is present"""
    repo = Repository.from_data({
        "id": "some-repo",
        "notes": {
            "pub_temp_repo": True
        }
    })
    assert repo.is_temporary
Exemplo n.º 6
0
def test_from_data_gives_container_image_repository():
    """Repository.from_data routes to ContainerImageRepository subclass when needed"""
    repo = Repository.from_data({
        "id": "my-repo",
        "notes": {
            "_repo-type": "docker-repo"
        }
    })
    assert isinstance(repo, ContainerImageRepository)
def test_distributors_last_publish_null():
    """from_data accepts a null last_publish"""
    repo = Repository.from_data(
        {
            "id": "some-repo",
            "distributors": [
                {"id": "dist1", "distributor_type_id": "type1", "last_publish": None}
            ],
        }
    )

    assert repo.distributor("dist1").last_publish is None
Exemplo n.º 8
0
def test_populate_attrs():
    """test populate attributes are correctly parsed from repo notes"""
    repo = Repository.from_data({
        "id": "my-repo",
        "notes": {
            "_repo-type": "rpm-repo",
            "population_sources": ["populate_repo1", "populate_repo2"],
            "ubi_population": True,
        },
        "distributors": [],
    })
    assert repo.population_sources == ["populate_repo1", "populate_repo2"]
    assert repo.ubi_population
def test_distributors_last_publish():
    """from_data sets distributor last publish attribute appropriately"""
    repo = Repository.from_data({
        "id":
        "some-repo",
        "distributors": [{
            "id": "dist1",
            "distributor_type_id": "type1",
            "last_publish": "2019-06-17T01:23:45Z",
        }],
    })

    assert repo.distributor("dist1").last_publish == datetime.datetime(
        2019, 6, 17, 1, 23, 45)
Exemplo n.º 10
0
def test_product_versions_unusual_attrs():
    """Odd values in product_versions are tolerated."""

    repo = Repository.from_data(
        {
            "id": "my-repo",
            "notes": {
                "_repo-type": "rpm-repo",
                "product_versions": '["1.4", 234, "1.100", "not numeric"]',
            },
            "distributors": [],
        }
    )

    assert repo.product_versions == ["1.100", "1.4", "234", "not numeric"]
Exemplo n.º 11
0
def test_default_registry_id_from_distributor(config):
    """default registry_id is used when it's not set in distributor or set to null/empty string"""
    repo = Repository.from_data({
        "id":
        "my-repo",
        "notes": {
            "_repo-type": "docker-repo"
        },
        "distributors": [{
            "id": "docker_web_distributor_name_cli",
            "distributor_type_id": "docker_distributor_web",
            "config": config,
        }],
    })

    assert repo.registry_id == "my-repo"
def test_distributors_created():
    """from_data sets distributors attribute appropriately"""
    repo = Repository.from_data(
        {
            "id": "some-repo",
            "distributors": [
                {"id": "dist1", "distributor_type_id": "type1"},
                {"id": "dist2", "distributor_type_id": "type1"},
            ],
        }
    )

    assert repo.distributors == (
        Distributor(id="dist1", type_id="type1"),
        Distributor(id="dist2", type_id="type1"),
    )
Exemplo n.º 13
0
def test_from_data_skip_rsync_repodata():
    """skip_rsync_repodata is initialized from distributors when possible"""
    repo = Repository.from_data(
        {
            "id": "my-repo",
            "notes": {"_repo-type": "rpm-repo"},
            "distributors": [
                {
                    "id": "cdn_distributor",
                    "distributor_type_id": "rpm_rsync_distributor",
                    "config": {"skip_repodata": True},
                }
            ],
        }
    )
    assert repo.skip_rsync_repodata
Exemplo n.º 14
0
def test_from_data_relative_url():
    """relative_url is initialized from distributors when possible"""
    repo = Repository.from_data(
        {
            "id": "my-repo",
            "notes": {"_repo-type": "rpm-repo"},
            "distributors": [
                {
                    "id": "yum_distributor",
                    "distributor_type_id": "yum_distributor",
                    "config": {"relative_url": "some/publish/path"},
                }
            ],
        }
    )

    assert repo.relative_url == "some/publish/path"
Exemplo n.º 15
0
def test_registry_id_from_distributor():
    """registry_id is loaded from distributor when possible"""
    repo = Repository.from_data({
        "id":
        "my-repo",
        "notes": {
            "_repo-type": "docker-repo"
        },
        "distributors": [{
            "id": "docker_web_distributor_name_cli",
            "distributor_type_id": "docker_distributor_web",
            "config": {
                "repo-registry-id": "some/repo"
            },
        }],
    })

    assert repo.registry_id == "some/repo"
Exemplo n.º 16
0
def test_populate_attrs():
    """test populate attributes are correctly parsed from repo notes"""
    repo = Repository.from_data(
        {
            "id": "my-repo",
            "notes": {
                "_repo-type": "rpm-repo",
                "content_set": "fake_content_set",
                "population_sources": ["populate_repo1", "populate_repo2"],
                "ubi_population": True,
                "ubi_config_version": "fake_ubi_config_version",
            },
            "distributors": [],
        }
    )
    assert repo.population_sources == ["populate_repo1", "populate_repo2"]
    assert repo.ubi_population
    assert repo.content_set == "fake_content_set"
    assert repo.ubi_config_version == "fake_ubi_config_version"
Exemplo n.º 17
0
def test_productid_attrs():
    """All attributes relating to productid are correctly parsed from repo notes."""

    repo = Repository.from_data(
        {
            "id": "my-repo",
            "notes": {
                "_repo-type": "rpm-repo",
                "arch": "x86_64",
                "product_versions": '["1.4", "1.100", "1.2"]',
                "platform_full_version": "whatever",
                "eng_product": "123",
            },
            "distributors": [],
        }
    )

    assert repo.arch == "x86_64"
    assert repo.eng_product_id == 123
    assert repo.platform_full_version == "whatever"

    # Note the version-aware sorting: 1.100 is larger than 1.4
    assert repo.product_versions == ["1.2", "1.4", "1.100"]
def test_missing_props():
    """from_data raises if input data misses necessary data"""
    with pytest.raises(InvalidDataException):
        Repository.from_data({"missing": "necessary props"})
def test_is_not_temporary():
    """from_data is_temporary is False by default"""
    repo = Repository.from_data({"id": "some-repo"})
    assert not repo.is_temporary
def test_default_created():
    """from_data results in None created by default"""
    repo = Repository.from_data({"id": "some-repo"})
    assert repo.created is None
def test_attr_id():
    """from_data sets id attribute appropriately"""
    repo = Repository.from_data({"id": "some-repo"})
    assert repo.id == "some-repo"
def test_bad_id():
    """from_data raises if input data has id of wrong type"""
    with pytest.raises(InvalidDataException):
        Repository.from_data({"id": ["foo", "bar", "baz"]})