def test_uploader_identity_can_user_upload(user, role, expected) -> None: identity = UploaderIdentityFactory.create() if role: UploaderIdentityMemberFactory.create( user=user, identity=identity, role=role, ) assert identity.can_user_upload(user) == expected
def create_test_service_account_user(): identity_owner = ThunderstoreUserFactory() identity = UploaderIdentityFactory() UploaderIdentityMemberFactory(user=identity_owner, identity=identity, role="owner") form = CreateServiceAccountForm( user=identity_owner, data={ "identity": identity, "nickname": "Nickname" }, ) assert form.is_valid() return form.save().user
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
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
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
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
def test_uploader_identity_validation_duplicates_ignore_case() -> None: UploaderIdentityFactory.create(name="test") with pytest.raises(ValidationError) as e: UploaderIdentityFactory.create(name="Test") assert "The author name already exists" in str(e.value)