Exemplo n.º 1
0
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
Exemplo n.º 2
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 _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
Exemplo n.º 4
0
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"))
Exemplo n.º 5
0
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"))
Exemplo n.º 6
0
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"))
Exemplo n.º 7
0
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
Exemplo n.º 8
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"))
Exemplo n.º 10
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"))
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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