コード例 #1
0
ファイル: test_web.py プロジェクト: phonix2012/abilian-sbe
def test_create_thread_and_post(community1, client, app, db, req_ctx):
    community = community1
    user = community.test_user

    # activate email reply
    app.config["SBE_FORUM_REPLY_BY_MAIL"] = True
    app.config["MAIL_ADDRESS_TAG_CHAR"] = "+"

    # create a new user, add him/her to the current community as a MANAGER
    community.set_membership(user, MANAGER)
    db.session.commit()
    client_login(client, user)

    mail = app.extensions["mail"]
    with mail.record_messages() as outbox:
        title = "Brand new thread"
        content = "shiny thread message"
        url = url_for("forum.new_thread", community_id=community.slug)
        data = {"title": title, "message": content}
        data["__action"] = "create"
        data["send_by_email"] = "y"
        response = client.post(url, data=data)
        assert response.status_code == 302

        # extract the thread_id from the redirection url in response
        threadid = response.location.rsplit("/", 2)[1]

        # retrieve the new thread, make sur it has the message
        url = url_for("forum.thread",
                      thread_id=threadid,
                      community_id=community.slug,
                      title=title)
        response = client.get(url)
        assert response.status_code == 200
        assert content in response.get_data(as_text=True)

        # check the email was sent with the new thread
        assert len(outbox) == 1
        assert outbox[0].subject == "[My Community] Brand new thread"

    # reset the outbox for checking threadpost email
    with mail.record_messages() as outbox:
        content = data["message"] = "my cherished post"
        del data["title"]
        response = client.post(url, data=data)
        assert response.status_code == 302

        # retrieve the new thread, make sur it has the message
        url = url_for("forum.thread",
                      thread_id=threadid,
                      community_id=community.slug,
                      title=title)
        response = client.get(url)
        assert response.status_code == 200
        assert content in response.get_data(as_text=True)

        # check the email was sent with the new threadpost
        assert len(outbox) == 1
        expected = "[My Community] Brand new thread"
        assert text_type(outbox[0].subject) == expected
コード例 #2
0
def test_create_thread_and_post(community1, client, app, db, req_ctx):
    community = community1
    user = community.test_user

    # activate email reply
    app.config["SBE_FORUM_REPLY_BY_MAIL"] = True

    # create a new user, add him/her to the current community as a MANAGER
    community.set_membership(user, MANAGER)
    db.session.commit()
    client_login(client, user)

    mail = app.extensions["mail"]
    with mail.record_messages() as outbox:
        title = "Brand new thread"
        content = "shiny thread message"
        url = url_for("forum.new_thread", community_id=community.slug)
        data = {"title": title, "message": content}
        data["__action"] = "create"
        data["send_by_email"] = "y"
        response = client.post(url, data=data)
        assert response.status_code == 302

        # extract the thread_id from the redirection url in response
        threadid = response.location.rsplit("/", 2)[1]

        # retrieve the new thread, make sur it has the message
        url = url_for(
            "forum.thread", thread_id=threadid, community_id=community.slug, title=title
        )
        response = client.get(url)
        assert response.status_code == 200
        assert content in response.get_data(as_text=True)

        # check the email was sent with the new thread
        assert len(outbox) == 1
        assert outbox[0].subject == "[My Community] Brand new thread"

    # reset the outbox for checking threadpost email
    with mail.record_messages() as outbox:
        content = data["message"] = "my cherished post"
        del data["title"]
        response = client.post(url, data=data)
        assert response.status_code == 302

        # retrieve the new thread, make sur it has the message
        url = url_for(
            "forum.thread", thread_id=threadid, community_id=community.slug, title=title
        )
        response = client.get(url)
        assert response.status_code == 200
        assert content in response.get_data(as_text=True)

        # check the email was sent with the new threadpost
        assert len(outbox) == 1
        expected = "[My Community] Brand new thread"
        assert str(outbox[0].subject) == expected
コード例 #3
0
def test_community_settings(app, client, community1, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    url = url_for("communities.settings", community_id=community1.slug)
    user = community1.test_user

    with client_login(client, user):
        response = client.get(url)
        assert response.status_code == 403

        app.services["security"].grant_role(user, Admin)
        response = client.get(url)
        assert response.status_code == 200

        data = {
            "__action": "edit",
            "name": "edited community",
            "description": "my community",
            "linked_group": "",
            "type": "participative",
        }
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200
        assert "edited community" in response.get_data(as_text=True)
コード例 #4
0
def test_util_create(app, client, db, community, req_ctx):
    folder = community.folder
    user = community.test_user

    with client_login(client, user):
        g.community = CommunityPresenter(community)
        name = "document"
        fs = FileStorage(BytesIO(b"content"),
                         filename=name,
                         content_type="text/plain")

        doc = view_util.create_document(folder, fs)
        db.session.flush()
        assert doc.parent == folder
        assert doc.name == name

        # test upload with same name: should be renamed
        fs = FileStorage(BytesIO(b"content"),
                         filename=name,
                         content_type="text/plain")
        doc2 = view_util.create_document(folder, fs)
        db.session.flush()
        assert doc2.parent == folder
        assert len(folder.children) == 2
        assert doc2.name == name + "-1"

        messages = get_flashed_messages()
        assert len(messages) == 1
コード例 #5
0
def test_zip(community, client, req_ctx):
    user = community.test_user
    with client_login(client, user):
        title = "onepage.pdf"
        content_type = "application/pdf"
        data = {
            "file": (open_file(title), title, content_type),
            "action": "upload"
        }
        folder = community.folder
        url = url_for("documents.folder_post",
                      community_id=community.slug,
                      folder_id=folder.id)
        response = client.post(url, data=data)
        assert response.status_code == 302

        doc = folder.children[0]
        data = {
            "action": "download",
            "object-selected": ["cmis:document:%d" % doc.id]
        }
        url = url_for("documents.folder_post",
                      community_id=community.slug,
                      folder_id=folder.id)
        response = client.post(url, data=data)
        assert response.status_code == 200
        assert response.content_type == "application/zip"

        zipfile = ZipFile(BytesIO(response.data))
        assert [zipfile.namelist()[0]] == [title]
コード例 #6
0
def test_community_settings(app, client, community1, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    url = url_for("communities.settings", community_id=community1.slug)
    user = community1.test_user

    with client_login(client, user):
        response = client.get(url)
        assert response.status_code == 403

        app.services["security"].grant_role(user, Admin)
        response = client.get(url)
        assert response.status_code == 200

        data = {
            "__action": "edit",
            "name": "edited community",
            "description": "my community",
            "linked_group": "",
            "type": "participative",
        }
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200
        assert "edited community" in response.get_data(as_text=True)
コード例 #7
0
def test_recursive_zip(community, client, req_ctx):
    user = community.test_user
    with client_login(client, user):
        data = {"action": "new", "title": "my folder"}
        folder = community.folder
        url = url_for(
            "documents.folder_post", community_id=community.slug, folder_id=folder.id
        )
        response = client.post(url, data=data)
        assert response.status_code == 302

        my_folder = folder.children[0]

        title = "onepage.pdf"
        content_type = "application/pdf"
        data = {"file": (open_file(title), title, content_type), "action": "upload"}
        url = url_for(
            "documents.folder_post", community_id=community.slug, folder_id=my_folder.id
        )
        response = client.post(url, data=data)
        assert response.status_code == 302

        data = {
            "action": "download",
            "object-selected": ["cmis:folder:%d" % my_folder.id],
        }
        url = url_for(
            "documents.folder_post", community_id=community.slug, folder_id=folder.id
        )
        response = client.post(url, data=data)
        assert response.status_code == 200
        assert response.content_type == "application/zip"

        zipfile = ZipFile(BytesIO(response.data))
        assert zipfile.namelist() == ["my folder/" + title]
コード例 #8
0
def test_index(community1, app, db, client, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    user = community1.test_user
    with client_login(client, user):
        response = client.get(url_for("communities.index"))
        assert response.status_code == 200
コード例 #9
0
ファイル: test_web.py プロジェクト: abilian/abilian-sbe
def test_create_page_initial_form(client, community1, user1, req_ctx):
    with client:
        with client_login(client, user1):
            g.community = community1
            view = views.PageCreate()
            view.prepare_args([], {})
            form = view.form
            assert form["last_revision_id"].data is None
コード例 #10
0
def test_index(community1, app, db, client, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    user = community1.test_user
    with client_login(client, user):
        response = client.get(url_for("communities.index"))
        assert response.status_code == 200
コード例 #11
0
def test_new(community1, app, client, db, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    # security_service.use_cache = False
    security_service.start()

    user = community1.test_user

    with client_login(client, user):
        response = client.get(url_for("communities.new"))
        assert response.status_code == 403

    security_service.grant_role(user, Admin)
    db.session.flush()

    with client_login(client, user):
        response = client.get(url_for("communities.new"))
        assert response.status_code == 200
コード例 #12
0
ファイル: test_web.py プロジェクト: phonix2012/abilian-sbe
def test_create_page_initial_form(client, community1, user1, req_ctx):
    with client:
        with client_login(client, user1):
            g.community = community1
            view = views.PageCreate()
            view.prepare_args([], {})
            form = view.form
            assert form["last_revision_id"].data is None
コード例 #13
0
def test_new(community1, app, client, db, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    # security_service.use_cache = False
    security_service.start()

    user = community1.test_user

    with client_login(client, user):
        response = client.get(url_for("communities.new"))
        assert response.status_code == 403

    security_service.grant_role(user, Admin)
    db.session.flush()

    with client_login(client, user):
        response = client.get(url_for("communities.new"))
        assert response.status_code == 200
コード例 #14
0
ファイル: test_web.py プロジェクト: abilian/abilian-sbe
def test_home(client, community1, user1, req_ctx):
    with client_login(client, user1):
        response = client.get(url_for("wiki.index", community_id=community1.slug))
        assert response.status_code == 302

        response = client.get(
            url_for("wiki.page", title="Home", community_id=community1.slug)
        )
        assert response.status_code == 200
コード例 #15
0
ファイル: test_web.py プロジェクト: phonix2012/abilian-sbe
def test_home(client, community1, user1, req_ctx):
    with client_login(client, user1):
        response = client.get(url_for("wiki.index", community_id=community1.slug))
        assert response.status_code == 302

        response = client.get(
            url_for("wiki.page", title="Home", community_id=community1.slug)
        )
        assert response.status_code == 200
コード例 #16
0
ファイル: test_models.py プロジェクト: abilian/abilian-sbe
def test_create_revision(user, client, req_ctx):
    with client:
        with client_login(client, user):
            page = WikiPage("abc")
            page.create_revision("def", "page updated")

            assert len(page.revisions) == 2
            last_revision = page.revisions[1]
            assert last_revision.number == 1
            assert last_revision.author == user
コード例 #17
0
ファイル: test_models.py プロジェクト: phonix2012/abilian-sbe
def test_create_revision(user, client, req_ctx):
    with client:
        with client_login(client, user):
            page = WikiPage("abc")
            page.create_revision("def", "page updated")

            assert len(page.revisions) == 2
            last_revision = page.revisions[1]
            assert last_revision.number == 1
            assert last_revision.author == user
コード例 #18
0
def test_home(app, client, db, community, req_ctx):
    folder = community.folder
    user = community.test_user

    with client_login(client, user):
        response = client.get(url_for("documents.index", community_id=community.slug))
        assert response.status_code == 302
        path = path_from_url(response.location)
        expected = f"/communities/{community.slug}/docs/folder/{folder.id}"
        assert path == expected
コード例 #19
0
def test_community_home(community1, community2, app, client, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    url = app.default_view.url_for(community1)

    user1 = community1.test_user

    with client_login(client, user1):
        response = client.get(url)
        assert response.status_code == 302
        expected_url = url_for("wall.index",
                               community_id=community1.slug,
                               _external=True)
        assert response.location == expected_url

    user2 = community2.test_user
    with client_login(client, user2):
        response = client.get(url)
        assert response.status_code == 403
コード例 #20
0
def test_binary_upload(client, community, req_ctx):
    name = "random.bin"
    user = community.test_user
    with client_login(client, user):
        _test_upload(
            community,
            client,
            name,
            "application/octet-stream",
            assert_preview_available=False,
        )
コード例 #21
0
def test_community_home(community1, community2, app, client, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    url = app.default_view.url_for(community1)

    user1 = community1.test_user

    with client_login(client, user1):
        response = client.get(url)
        assert response.status_code == 302
        expected_url = url_for(
            "wall.index", community_id=community1.slug, _external=True
        )
        assert response.location == expected_url

    user2 = community2.test_user
    with client_login(client, user2):
        response = client.get(url)
        assert response.status_code == 403
コード例 #22
0
def test_binary_upload(client, community, req_ctx):
    name = "random.bin"
    user = community.test_user
    with client_login(client, user):
        _test_upload(
            community,
            client,
            name,
            "application/octet-stream",
            assert_preview_available=False,
        )
コード例 #23
0
def test_home(app, client, db, community, req_ctx):
    folder = community.folder
    user = community.test_user

    with client_login(client, user):
        response = client.get(
            url_for("documents.index", community_id=community.slug))
        assert response.status_code == 302
        path = path_from_url(response.location)
        expected = "/communities/{}/docs/folder/{}".format(
            community.slug, folder.id)
        assert path == expected
コード例 #24
0
ファイル: test_web.py プロジェクト: phonix2012/abilian-sbe
def test_wiki_indexed(
    community1, community2, admin_user, user1, user2, user3, app, db, client, req_ctx
):
    SERVICES = ("security", "indexing")
    for svc in SERVICES:
        svc = app.services[svc]
        if not svc.running:
            svc.start()

    svc = app.services["indexing"]

    with client:
        with client_login(client, admin_user):
            page1 = WikiPage(title="Community 1", community=community1)
            db.session.add(page1)

            page2 = WikiPage(title="Community 2: other", community=community2)
            db.session.add(page2)

            db.session.commit()

        obj_types = (WikiPage.entity_type,)
        with client_login(client, user3):
            res = svc.search("community", object_types=obj_types)
            assert len(res) == 0

        with client_login(client, user1):
            res = svc.search("community", object_types=obj_types)
            assert len(res) == 1

            hit = res[0]
            assert hit["object_key"] == page1.object_key

        with client_login(client, user2):
            res = svc.search("community", object_types=obj_types)
            assert len(res) == 1

            hit = res[0]
            assert hit["object_key"] == page2.object_key
コード例 #25
0
ファイル: test_web.py プロジェクト: abilian/abilian-sbe
def test_wiki_indexed(
    community1, community2, admin_user, user1, user2, user3, app, db, client, req_ctx
):
    SERVICES = ("security", "indexing")
    for svc in SERVICES:
        svc = app.services[svc]
        if not svc.running:
            svc.start()

    svc = app.services["indexing"]

    with client:
        with client_login(client, admin_user):
            page1 = WikiPage(title="Community 1", community=community1)
            db.session.add(page1)

            page2 = WikiPage(title="Community 2: other", community=community2)
            db.session.add(page2)

            db.session.commit()

        obj_types = (WikiPage.entity_type,)
        with client_login(client, user3):
            res = svc.search("community", object_types=obj_types)
            assert len(res) == 0

        with client_login(client, user1):
            res = svc.search("community", object_types=obj_types)
            assert len(res) == 1

            hit = res[0]
            assert hit["object_key"] == page1.object_key

        with client_login(client, user2):
            res = svc.search("community", object_types=obj_types)
            assert len(res) == 1

            hit = res[0]
            assert hit["object_key"] == page2.object_key
コード例 #26
0
def test_members(app, client, db, community1, community2, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    user1 = community1.test_user
    user2 = community2.test_user

    with client_login(client, user1):
        url = url_for("communities.members", community_id=community1.slug)
        response = client.get(url)
        assert response.status_code == 200

        # test add user
        data = {"action": "add-user-role", "user": user2.id}
        response = client.post(url, data=data)
        assert response.status_code == 403

        security_service.grant_role(user1, Admin)

        data = {"action": "add-user-role", "user": user2.id, "role": "member"}
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200

        membership = [m for m in community1.memberships if m.user == user2][0]
        assert membership.role == "member"

        data["action"] = "set-user-role"
        data["role"] = "manager"
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200

        db.session.expire(membership)
        assert membership.role == "manager"

        # Community.query.session is not self.db.session, but web app
        # session.
        community = Community.query.get(community1.id)
        assert user2 in community.members

        # test delete
        data = {
            "action":
            "delete",
            "user":
            user2.id,
            "membership":
            [m.id for m in community1.memberships if m.user == user2][0],
        }
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200
        assert user2 not in community.members
コード例 #27
0
ファイル: test_models.py プロジェクト: phonix2012/abilian-sbe
def test_new_page(user, client, req_ctx):
    with client:
        with client_login(client, user):
            print(current_user)
            page = WikiPage(title="Some page", body_src="abc")
            assert page.title == "Some page"
            assert page.name == "Some page"
            assert page.body_src == "abc"
            assert page.body_html == "<p>abc</p>"
            assert len(page.revisions) == 1

            revision = page.revisions[0]
            assert revision.number == 0
            assert revision.author == user
コード例 #28
0
ファイル: test_models.py プロジェクト: abilian/abilian-sbe
def test_new_page(user, client, req_ctx):
    with client:
        with client_login(client, user):
            print(current_user)
            page = WikiPage(title="Some page", body_src="abc")
            assert page.title == "Some page"
            assert page.name == "Some page"
            assert page.body_src == "abc"
            assert page.body_html == "<p>abc</p>"
            assert len(page.revisions) == 1

            revision = page.revisions[0]
            assert revision.number == 0
            assert revision.author == user
コード例 #29
0
def test_members(app, client, db, community1, community2, req_ctx):
    security_service = app.services["security"]  # type: SecurityService
    security_service.start()

    user1 = community1.test_user
    user2 = community2.test_user

    with client_login(client, user1):
        url = url_for("communities.members", community_id=community1.slug)
        response = client.get(url)
        assert response.status_code == 200

        # test add user
        data = {"action": "add-user-role", "user": user2.id}
        response = client.post(url, data=data)
        assert response.status_code == 403

        security_service.grant_role(user1, Admin)

        data = {"action": "add-user-role", "user": user2.id, "role": "member"}
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200

        membership = [m for m in community1.memberships if m.user == user2][0]
        assert membership.role == "member"

        data["action"] = "set-user-role"
        data["role"] = "manager"
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200

        db.session.expire(membership)
        assert membership.role == "manager"

        # Community.query.session is not self.db.session, but web app
        # session.
        community = Community.query.get(community1.id)
        assert user2 in community.members

        # test delete
        data = {
            "action": "delete",
            "user": user2.id,
            "membership": [m.id for m in community1.memberships if m.user == user2][0],
        }
        response = client.post(url, data=data, follow_redirects=True)
        assert response.status_code == 200
        assert user2 not in community.members
コード例 #30
0
def test_zip_upload_uncompress(community, db, client, req_ctx):
    subfolder = Folder(title="folder 1", parent=community.folder)
    db.session.add(subfolder)
    db.session.flush()

    folder = community.folder
    files = []
    files.append((BytesIO(b"A document"), "existing-doc", "text/plain"))
    files.append((open_file("content.zip"), "content.zip", "application/zip"))
    data = {"file": files, "action": "upload", "uncompress_files": True}
    url = url_for(
        "documents.folder_post", community_id=community.slug, folder_id=folder.id
    )
    user = community.test_user
    with client_login(client, user):
        response = client.post(url, data=data)

    assert response.status_code == 302
    expected = {"existing-doc", "folder 1", "existing-doc-1"}
    assert expected == {f.title for f in folder.children}
    expected = {"folder 1", "existing-doc-1"}
    assert expected == {f.title for f in folder.subfolders}
コード例 #31
0
def test_create_thread_informative(app, db, client, community1, req_ctx):
    """Test with 'informative' community.

    No mail sent, unless user is MANAGER
    """
    user = community1.test_user
    assert community1.type == "informative"
    community1.set_membership(user, MEMBER)
    db.session.commit()

    title = "Brand new thread"
    content = "shiny thread message"
    url = url_for("forum.new_thread", community_id=community1.slug)
    data = {"title": title, "message": content}
    data["__action"] = "create"

    mail = app.extensions["mail"]
    with client_login(client, user):
        with mail.record_messages() as outbox:
            data["send_by_email"] = "y"  # actually should not be in html form
            response = client.post(url, data=data)
            assert response.status_code == 302
            # FIXME: this doesn't pass
            # assert len(outbox) == 0

        community1.set_membership(user, MANAGER)
        db.session.commit()

        with mail.record_messages() as outbox:
            data["send_by_email"] = "y"  # should be in html form
            response = client.post(url, data=data)
            assert response.status_code == 302
            assert len(outbox) == 1

        with mail.record_messages() as outbox:
            del data["send_by_email"]
            response = client.post(url, data=data)
            assert response.status_code == 302
            assert len(outbox) == 0
コード例 #32
0
def test_zip_upload_uncompress(community, db, client, req_ctx):
    subfolder = Folder(title="folder 1", parent=community.folder)
    db.session.add(subfolder)
    db.session.flush()

    folder = community.folder
    files = []
    files.append((BytesIO(b"A document"), "existing-doc", "text/plain"))
    files.append((open_file("content.zip"), "content.zip", "application/zip"))
    data = {"file": files, "action": "upload", "uncompress_files": True}
    url = url_for("documents.folder_post",
                  community_id=community.slug,
                  folder_id=folder.id)
    user = community.test_user
    with client_login(client, user):
        response = client.post(url, data=data)

    assert response.status_code == 302
    expected = {"existing-doc", "folder 1", "existing-doc-1"}
    assert expected == {f.title for f in folder.children}
    expected = {"folder 1", "existing-doc-1"}
    assert expected == {f.title for f in folder.subfolders}
コード例 #33
0
ファイル: test_web.py プロジェクト: phonix2012/abilian-sbe
def test_create_thread_informative(app, db, client, community1, req_ctx):
    """Test with 'informative' community.

    No mail sent, unless user is MANAGER
    """
    user = community1.test_user
    assert community1.type == "informative"
    community1.set_membership(user, MEMBER)
    db.session.commit()

    title = "Brand new thread"
    content = "shiny thread message"
    url = url_for("forum.new_thread", community_id=community1.slug)
    data = {"title": title, "message": content}
    data["__action"] = "create"

    mail = app.extensions["mail"]
    with client_login(client, user):
        with mail.record_messages() as outbox:
            data["send_by_email"] = "y"  # actually should not be in html form
            response = client.post(url, data=data)
            assert response.status_code == 302
            assert len(outbox) == 0

        community1.set_membership(user, MANAGER)
        db.session.commit()

        with mail.record_messages() as outbox:
            data["send_by_email"] = "y"  # should be in html form
            response = client.post(url, data=data)
            assert response.status_code == 302
            assert len(outbox) == 1

        with mail.record_messages() as outbox:
            del data["send_by_email"]
            response = client.post(url, data=data)
            assert response.status_code == 302
            assert len(outbox) == 0
コード例 #34
0
def test_util_create(app, client, db, community, req_ctx):
    folder = community.folder
    user = community.test_user

    with client_login(client, user):
        g.community = CommunityPresenter(community)
        name = "document"
        fs = FileStorage(BytesIO(b"content"), filename=name, content_type="text/plain")

        doc = view_util.create_document(folder, fs)
        db.session.flush()
        assert doc.parent == folder
        assert doc.name == name

        # test upload with same name: should be renamed
        fs = FileStorage(BytesIO(b"content"), filename=name, content_type="text/plain")
        doc2 = view_util.create_document(folder, fs)
        db.session.flush()
        assert doc2.parent == folder
        assert len(folder.children) == 2
        assert doc2.name == name + "-1"

        messages = get_flashed_messages()
        assert len(messages) == 1
コード例 #35
0
def test_image_upload(client, community, req_ctx):
    name = "picture.jpg"
    user = community.test_user
    with client_login(client, user):
        _test_upload(community, client, name, "image/jpeg")
コード例 #36
0
def test_document_send_by_mail(app, community, client, req_ctx):
    mail = app.extensions["mail"]
    folder = community.folder
    user = community.test_user
    with client_login(client, user):
        # upload files
        for filename in ("ascii title.txt", "utf-8 est arrivé!.txt"):
            content_type = "text/plain"
            data = {
                "file": (BytesIO(b"file content"), filename, content_type),
                "action": "upload",
            }
            url = url_for(
                "documents.folder_post",
                community_id=community.slug,
                folder_id=folder.id,
            )
            client.post(url, data=data)

        ascii_doc = folder.children[0]
        unicode_doc = folder.children[1]

        def get_send_url(doc_id):
            return url_for("documents.document_send",
                           community_id=community.slug,
                           doc_id=doc_id)

        # mail ascii filename
        with mail.record_messages() as outbox:
            url = get_send_url(ascii_doc.id)
            response = client.post(
                url,
                data={
                    "recipient": "*****@*****.**",
                    "message": "Voilà un fichier"
                },
            )
            assert response.status_code == 302
            assert len(outbox) == 1

            msg = outbox[0]
            assert msg.subject == "[Abilian Test] Unknown sent you a file"
            assert msg.recipients == ["*****@*****.**"]

            assert len(msg.attachments) == 1

            attachment = first(msg.attachments)
            assert isinstance(attachment, flask_mail.Attachment)
            assert attachment.filename == "ascii title.txt"

        # mail unicode filename
        with mail.record_messages() as outbox:
            url = get_send_url(unicode_doc.id)
            response = client.post(
                url,
                data={
                    "recipient": "*****@*****.**",
                    "message": "Voilà un fichier"
                },
            )
            assert response.status_code == 302
            assert len(outbox) == 1

            msg = outbox[0]
            assert isinstance(msg, flask_mail.Message)
            assert msg.subject == "[Abilian Test] Unknown sent you a file"
            assert msg.recipients == ["*****@*****.**"]
            assert len(msg.attachments) == 1

            attachment = first(msg.attachments)
            assert isinstance(attachment, flask_mail.Attachment)
            assert attachment.filename == "utf-8 est arrivé!.txt"
コード例 #37
0
ファイル: test_web.py プロジェクト: abilian/abilian-sbe
def test_create_page(community1, app, admin_user, client, req_ctx):
    community = community1

    with client:
        with client_login(client, admin_user):
            url = url_for("wiki.page_new", community_id=community.slug)
            url += "?title=Some+page+name"
            response = client.get(url)
            assert response.status_code == 200
            # make sure the title is filled when comming from wikilink
            assert 'value="Some page name"' in response.get_data(as_text=True)

            title = "Some page"
            body = "LuuP3jai"
            url = url_for("wiki.page_new", community_id=community.slug)
            data = {"title": title, "body_src": body, "__action": "create"}
            response = client.post(url, data=data)
            assert response.status_code == 302

            url = url_for("wiki.page", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200
            assert body in response.get_data(as_text=True)

            # edit
            url = url_for("wiki.page_edit", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200

            # Slightly hackish way to get the page_id
            line = first(
                l
                for l in response.get_data(as_text=True).split("\n")
                if 'name="page_id"' in l
            )
            m = re.search('value="(.*?)"', line)
            page_id = int(m.group(1))

            url = url_for("wiki.page_changes", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200

            url = url_for("wiki.page_source", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200

            url = url_for("wiki.page_edit", community_id=community.slug)
            data = {"title": title, "page_id": page_id, "body_src": "abc def"}
            data["__action"] = "edit"
            response = client.post(url, data=data)
            assert response.status_code == 302

            url = url_for(
                "wiki.page_compare",
                rev0="on",
                rev1="on",
                community_id=community.slug,
                title=title,
            )
            response = client.get(url)
            assert response.status_code == 200
コード例 #38
0
def test_pdf_upload(client, community, req_ctx):
    name = "onepage.pdf"
    user = community.test_user
    with client_login(client, user):
        _test_upload(community, client, name, "application/pdf")
コード例 #39
0
def test_text_upload(client, community, req_ctx):
    name = "wikipedia-fr.txt"
    user = community.test_user
    with client_login(client, user):
        _test_upload(community, client, name, "text/plain", test_preview=False)
コード例 #40
0
def test_document_send_by_mail(app, community, client, req_ctx):
    mail = app.extensions["mail"]
    folder = community.folder
    user = community.test_user
    with client_login(client, user):
        # upload files
        for filename in ("ascii title.txt", "utf-8 est arrivé!.txt"):
            content_type = "text/plain"
            data = {
                "file": (BytesIO(b"file content"), filename, content_type),
                "action": "upload",
            }
            url = url_for(
                "documents.folder_post",
                community_id=community.slug,
                folder_id=folder.id,
            )
            client.post(url, data=data)

        ascii_doc = folder.children[0]
        unicode_doc = folder.children[1]

        def get_send_url(doc_id):
            return url_for(
                "documents.document_send", community_id=community.slug, doc_id=doc_id
            )

        # mail ascii filename
        with mail.record_messages() as outbox:
            url = get_send_url(ascii_doc.id)
            response = client.post(
                url,
                data={"recipient": "*****@*****.**", "message": "Voilà un fichier"},
            )
            assert response.status_code == 302
            assert len(outbox) == 1

            msg = outbox[0]
            assert msg.subject == "[Abilian Test] Unknown sent you a file"
            assert msg.recipients == ["*****@*****.**"]

            assert len(msg.attachments) == 1

            attachment = first(msg.attachments)
            assert isinstance(attachment, flask_mail.Attachment)
            assert attachment.filename == "ascii title.txt"

        # mail unicode filename
        with mail.record_messages() as outbox:
            url = get_send_url(unicode_doc.id)
            response = client.post(
                url,
                data={"recipient": "*****@*****.**", "message": "Voilà un fichier"},
            )
            assert response.status_code == 302
            assert len(outbox) == 1

            msg = outbox[0]
            assert isinstance(msg, flask_mail.Message)
            assert msg.subject == "[Abilian Test] Unknown sent you a file"
            assert msg.recipients == ["*****@*****.**"]
            assert len(msg.attachments) == 1

            attachment = first(msg.attachments)
            assert isinstance(attachment, flask_mail.Attachment)
            assert attachment.filename == "utf-8 est arrivé!.txt"
コード例 #41
0
def test_pdf_upload(client, community, req_ctx):
    name = "onepage.pdf"
    user = community.test_user
    with client_login(client, user):
        _test_upload(community, client, name, "application/pdf")
コード例 #42
0
def test_image_upload(client, community, req_ctx):
    name = "picture.jpg"
    user = community.test_user
    with client_login(client, user):
        _test_upload(community, client, name, "image/jpeg")
コード例 #43
0
ファイル: test_web.py プロジェクト: phonix2012/abilian-sbe
def test_create_page(community1, app, admin_user, client, req_ctx):
    community = community1

    with client:
        with client_login(client, admin_user):
            url = url_for("wiki.page_new", community_id=community.slug)
            url += "?title=Some+page+name"
            response = client.get(url)
            assert response.status_code == 200
            # make sure the title is filled when comming from wikilink
            assert 'value="Some page name"' in response.get_data(as_text=True)

            title = "Some page"
            body = "LuuP3jai"
            url = url_for("wiki.page_new", community_id=community.slug)
            data = {"title": title, "body_src": body, "__action": "create"}
            response = client.post(url, data=data)
            assert response.status_code == 302

            url = url_for("wiki.page", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200
            assert body in response.get_data(as_text=True)

            # edit
            url = url_for("wiki.page_edit", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200

            # Slightly hackish way to get the page_id
            line = first(
                l
                for l in response.get_data(as_text=True).split("\n")
                if 'name="page_id"' in l
            )
            m = re.search('value="(.*?)"', line)
            page_id = int(m.group(1))

            url = url_for("wiki.page_changes", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200

            url = url_for("wiki.page_source", community_id=community.slug, title=title)
            response = client.get(url)
            assert response.status_code == 200

            url = url_for("wiki.page_edit", community_id=community.slug)
            data = {"title": title, "page_id": page_id, "body_src": "abc def"}
            data["__action"] = "edit"
            response = client.post(url, data=data)
            assert response.status_code == 302

            url = url_for(
                "wiki.page_compare",
                rev0="on",
                rev1="on",
                community_id=community.slug,
                title=title,
            )
            response = client.get(url)
            assert response.status_code == 200
コード例 #44
0
def test_text_upload(client, community, req_ctx):
    name = "wikipedia-fr.txt"
    user = community.test_user
    with client_login(client, user):
        _test_upload(community, client, name, "text/plain", test_preview=False)