Example #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()
Example #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()
Example #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"]
Example #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
Example #5
0
def test_package_equality(json1, json2, equality):
    package1 = Package.from_json(json1)
    package2 = Package.from_json(json2)

    assert (package1 == package2) == equality
Example #6
0
def _load_packages_from_json(packages_json):
    return [Package.from_json(package) for package in packages_json]