Exemplo n.º 1
0
def test_purl_conversion_bogus_forge():
    package = {"name": "odd", "type": "npm", "version": "github:something/odd"}
    pkg = Package.from_json(package)

    msg = f"Could not convert version {pkg.version} to purl"
    with pytest.raises(ContentManifestError, match=msg):
        pkg.to_purl()
Exemplo n.º 2
0
def test_purl_conversion(package, expected_purl, defined, known_protocol):
    pkg = Package.from_json(package)
    if defined and known_protocol:
        purl = pkg.to_purl()
        assert purl == expected_purl
    else:
        msg = f"The PURL spec is not defined for {pkg.type} packages"
        if defined:
            msg = f"Unknown protocol in {pkg.type} package version: {pkg.version}"
        with pytest.raises(ContentManifestError, match=msg):
            pkg.to_purl()
Exemplo n.º 3
0
def test_package_from_json(package_json):
    package = Package.from_json(package_json)

    assert package.name == package_json.get("name")
    assert package.type == package_json.get("type")
    assert package.version == package_json.get("version")
    assert package.dev == package_json.get("dev", False)
    assert package.path == package_json.get("path")

    if "dependencies" in package_json:
        dependency = package.dependencies[0]
        dependency_json = package_json["dependencies"][0]

        assert type(dependency) == Package
        assert dependency.name == dependency_json["name"]
        assert dependency.type == dependency_json["type"]
        assert dependency.version == dependency_json["version"]
Exemplo n.º 4
0
def test_to_json_with_multiple_packages(mock_generate_icm, app, packages_json):
    request = Request()
    packages = _load_packages_from_json(packages_json)
    cm = ContentManifest(request, packages)
    image_contents = []

    for package_json in packages_json:
        package = Package.from_json(package_json)
        content = {
            "purl": package.to_purl(),
            "dependencies": [],
            "sources": []
        }
        image_contents.append(content)

    res = cm.to_json()

    mock_generate_icm.assert_called_once_with(image_contents)
    assert res == mock_generate_icm.return_value
Exemplo n.º 5
0
def test_package_equality(json1, json2, equality):
    package1 = Package.from_json(json1)
    package2 = Package.from_json(json2)

    assert (package1 == package2) == equality
Exemplo n.º 6
0
def _load_packages_from_json(packages_json):
    return [Package.from_json(package) for package in packages_json]
Exemplo n.º 7
0
def test_top_level_purl_conversion_bogus(default_request):
    pkg = Package(name="foo", version="1.0.0", type="bogus")

    msg = "'bogus' is not a valid top level package"
    with pytest.raises(ContentManifestError, match=msg):
        pkg.to_top_level_purl(default_request)
Exemplo n.º 8
0
def test_top_level_purl_conversion_generic(pkg_manager, path, expected_purl,
                                           default_request):
    """Test top-level purl conversion for package types that must use generic purls."""
    pkg = Package(name="foo", version="1.0.0", type=pkg_manager)
    purl = pkg.to_top_level_purl(default_request, subpath=path)
    assert purl == expected_purl
Exemplo n.º 9
0
def test_top_level_purl_conversion_specialized(package, path, expected_purl,
                                               default_request):
    """Test top-level purl conversion for package types that can use specialized purls."""
    pkg = Package(**package)
    purl = pkg.to_top_level_purl(default_request, subpath=path)
    assert purl == expected_purl
Exemplo n.º 10
0
def test_vcs_purl_conversion(repo_url, expected_purl):
    pkg = Package(name="foo", type="", version="")
    assert pkg.to_vcs_purl(repo_url, GIT_REF) == expected_purl