コード例 #1
0
def test_manifest_v1_serializer_duplicate_dependency(user, manifest_v1_data,
                                                     package_version):
    UploaderIdentityMember.objects.create(
        user=user,
        identity=package_version.owner,
        role=UploaderIdentityMemberRole.owner,
    )
    pkg = PackageFactory.create(
        owner=package_version.owner,
        name="somepackage",
    )
    version1 = PackageVersionFactory.create(
        package=pkg,
        name="somepackage",
        version_number="1.0.0",
    )
    version2 = PackageVersionFactory.create(
        package=pkg,
        name="somepackage",
        version_number="2.0.0",
    )
    manifest_v1_data["dependencies"] = [
        str(version1.reference),
        str(version2.reference),
    ]
    serializer = ManifestV1Serializer(
        user=user,
        uploader=package_version.owner,
        data=manifest_v1_data,
    )
    assert serializer.is_valid() is False
    assert len(serializer.errors["non_field_errors"]) == 1
    assert "Cannot depend on multiple versions of the same package" in str(
        serializer.errors["non_field_errors"][0])
コード例 #2
0
def active_package():
    package = PackageFactory.create(
        is_active=True,
        is_deprecated=False,
    )
    PackageVersionFactory.create(
        name=package.name,
        package=package,
        is_active=True,
    )
    return package
コード例 #3
0
def test_manifest_v1_serializer_dependencies_valid(user, manifest_v1_data):
    reference = PackageReference.parse("actual_package-reference-1.0.0")
    PackageVersionFactory.create(
        package=PackageFactory.create(
            owner=UploaderIdentityFactory.create(name=reference.namespace, ),
            name=reference.name,
        ),
        name=reference.name,
        version_number=reference.version_str,
    )
    identity = UploaderIdentity.get_or_create_for_user(user)
    manifest_v1_data["dependencies"] = [str(reference)]
    serializer = ManifestV1Serializer(
        user=user,
        uploader=identity,
        data=manifest_v1_data,
    )
    assert serializer.is_valid() is True
コード例 #4
0
def test_fields_list_dependency_field():
    field = serializers.ListField(
        child=DependencyField(),
        max_length=100,
        allow_empty=True,
    )
    identity = UploaderIdentityFactory.create(name="tester")
    versions = [
        PackageVersionFactory.create(
            package=PackageFactory.create(owner=identity, name=f"package_{i}"),
            name=f"package_{i}",
        ) for i in range(10)
    ]
    references = [x.reference for x in versions]
    reference_strings = [str(x) for x in references]
    result = field.run_validation(reference_strings)
    assert len(result) == 10
    assert isinstance(result[0], PackageReference)
    assert result == references
コード例 #5
0
def test_package_query_count(django_assert_max_num_queries, package_count, version_count):
    for package_id in range(package_count):
        package = PackageFactory.create(
            owner=UploaderIdentityFactory.create(
                name=f"uploader_{package_id}"
            ),
            name=f"package_{package_id}",
        )
        for version_id in range(version_count):
            PackageVersionFactory.create(
                package=package,
                name=f"package_{package_id}",
                version_number=f"{version_id}.0.0",
            )

    packages = get_mod_list_queryset()
    with django_assert_max_num_queries(package_count * 5 + 3):
        serializer = PackageSerializer(packages, many=True)
        _ = serializer.data
コード例 #6
0
def test_package_query_count(django_assert_max_num_queries, package_count, version_count, community_site):
    with CaptureQueriesContext(connection) as context:
        for package_id in range(package_count):
            package = PackageFactory.create(
                owner=UploaderIdentityFactory.create(
                    name=f"uploader_{package_id}"
                ),
                name=f"package_{package_id}",
            )
            for version_id in range(version_count):
                PackageVersionFactory.create(
                    package=package,
                    name=f"package_{package_id}",
                    version_number=f"{version_id}.0.0",
                )
            PackageListing.objects.create(package=package, community=community_site.community)
        creation_queries = len(context)

    packages = get_package_listing_queryset(community_site)
    with django_assert_max_num_queries(package_count + creation_queries + 1):
        serializer = PackageListingSerializer(packages, many=True, context={"community_site": community_site})
        _ = serializer.data