def test_media_view_images_without_root_access(rf): shop = factories.get_default_shop() staff_user = factories.UserFactory(is_staff=True) permission_group = factories.get_default_permission_group() staff_user.groups.add(permission_group) shop.staff_members.add(staff_user) set_permissions_for_group(permission_group, ["upload-media"]) assert not can_see_root_folder(staff_user) folder = get_or_create_folder(shop, "Root") File.objects.create(name="normalfile", folder=folder) img = Image.objects.create(name="imagefile", folder=folder, is_public=True) request = apply_request_middleware(rf.get("/", { "filter": "images", "action": "folder" }), user=staff_user) request.user = staff_user view_func = MediaBrowserView.as_view() response = view_func(request) assert isinstance(response, JsonResponse) content = json.loads(response.content.decode("utf-8")) assert len(content["folder"]["folders"]) == 0 assert len(content["folder"]["files"]) == 0
def _check_that_staff_can_see_folder(rf, shop, user, folder, expected_files_count): request = apply_request_middleware(rf.get("/", {"action": "folder", "id": folder.id}), user=user, shop=shop) view_func = MediaBrowserView.as_view() response = view_func(request) assert isinstance(response, JsonResponse) content = json.loads(response.content.decode("utf-8")) assert len(content["folder"]["files"]) == expected_files_count
def mbv_command(payload, method="post"): request = RequestFactory().generic(method, "/") if method == "post": request._body = json.dumps(payload).encode("UTF-8") else: request.GET = payload mbv = MediaBrowserView.as_view() return json.loads(mbv(request).content.decode("UTF-8"))
def mbv_upload(**extra_data): content = ("42" * 42).encode("UTF-8") imuf = InMemoryUploadedFile(BytesIO(content), "file", "424242.txt", "text/plain", len(content), "UTF-8") request = RequestFactory().post("/", dict({"action": "upload", "file": imuf}, **extra_data)) request.user = AnonymousUser() view = MediaBrowserView.as_view() response = view(request) return json.loads(response.content.decode("UTF-8"))
def mbv_upload(user, **extra_data): content = ("42" * 42).encode("UTF-8") imuf = InMemoryUploadedFile(BytesIO(content), "file", "424242.pdf", "application/pdf", len(content), "UTF-8") request = RequestFactory().post("/", dict({"action": "upload", "file": imuf}, **extra_data)) request.user = user view = MediaBrowserView.as_view() response = view(request) return json.loads(response.content.decode("UTF-8"))
def test_upload_invalid_image(rf, admin_user): assert File.objects.count() == 0 content = ("32" * 32).encode("UTF-8") imuf = InMemoryUploadedFile(BytesIO(content), "file", "424242.png", "image/png", len(content), "UTF-8") request = RequestFactory().post("/", dict({"action": "upload", "file": imuf})) request.user = admin_user view = MediaBrowserView.as_view() response = view(request) error_message = json.loads(response.content.decode("UTF-8")) assert "not an image or a corrupted image." in error_message["error"]["file"][0] assert File.objects.count() == 0
def test_upload_invalid_filetype(rf, admin_user): assert File.objects.count() == 0 content = ("42" * 42).encode("UTF-8") imuf = InMemoryUploadedFile(BytesIO(content), "file", "424242.exe", "text/plain", len(content), "UTF-8") request = RequestFactory().post("/", dict({"action": "upload", "file": imuf})) request.user = admin_user view = MediaBrowserView.as_view() response = view(request) error_message = json.loads(response.content.decode("UTF-8")) assert "extension 'exe' is not allowed" in error_message["error"]["file"][0] assert File.objects.count() == 0
def _mbv_command(shop, user, payload, method="post"): request = RequestFactory().generic(method, "/") request.user = user request.session = {} set_shop(request, shop) if method == "post": request._body = json.dumps(payload).encode("UTF-8") else: request.GET = payload mbv = MediaBrowserView.as_view() return json.loads(mbv(request).content.decode("UTF-8"))
def test_media_view_images(rf): get_default_shop() folder = Folder.objects.create(name="Root") file = File.objects.create(name="normalfile", folder=folder) img = Image.objects.create(name="imagefile", folder=folder) request = apply_request_middleware(rf.get("/", {"filter": "images", "action": "folder", "id": folder.id})) view_func = MediaBrowserView.as_view() response = view_func(request) assert isinstance(response, JsonResponse) content = json.loads(response.content.decode("utf-8")) assert len(content["folder"]["files"]) == 1 filedata = content["folder"]["files"][0] assert filedata["name"] == img.name
def test_media_view_images(rf, admin_user, is_public, expected_file_count): shop = get_default_shop() folder = get_or_create_folder(shop, "Root") File.objects.create(name="normalfile", folder=folder) img = Image.objects.create(name="imagefile", folder=folder, is_public=is_public) request = apply_request_middleware( rf.get("/", {"filter": "images", "action": "folder", "id": folder.id}), user=admin_user ) request.user = admin_user view_func = MediaBrowserView.as_view() response = view_func(request) assert isinstance(response, JsonResponse) content = json.loads(response.content.decode("utf-8")) assert len(content["folder"]["files"]) == expected_file_count if expected_file_count: filedata = content["folder"]["files"][0] assert filedata["name"] == img.name