def test_wiki_backend_page_acl_append_page(self): """ Test if the wiki group backend works with acl code. First check acl rights of a user that is not a member of group then add user member to a page group and check acl rights """ request = self.request become_trusted(request) create_page(request, u'NewGroup', u" * ExampleUser") acl_rights = ["NewGroup:read,write"] acl = security.AccessControlList(request.cfg, acl_rights) has_rights_before = acl.may(request, u"AnotherUser", "read") # update page - add AnotherUser to a page group NewGroup append_page(request, u'NewGroup', u" * AnotherUser") has_rights_after = acl.may(request, u"AnotherUser", "read") nuke_page(request, u'NewGroup') assert not has_rights_before, 'AnotherUser has no read rights because in the beginning he is not a member of a group page NewGroup' assert has_rights_after, 'AnotherUser must have read rights because after appendage he is member of NewGroup'
def test_attachment(self): page_name = u'TestAttachment' self.pages[page_name] = 'some text' # Moin search must search this page filename = "AutoCreatedSillyAttachmentForSearching.png" data = "Test content" filecontent = StringIO.StringIO(data) result = self.search(filename) found_attachments = set([(hit.page_name, hit.attachment) for hit in result.hits]) assert not found_attachments try: create_page(self.request, page_name, self.pages[page_name]) AttachFile.add_attachment(self.request, page_name, filename, filecontent, True) append_page(self.request, page_name, '[[attachment:%s]]' % filename) self._index_update() result = self.search(filename) found_attachments = set([(hit.page_name, hit.attachment) for hit in result.hits]) assert (page_name, '') in found_attachments assert 1 <= len(found_attachments) <= 2 # Note: moin search returns (page_name, '') as only result # xapian search returns 2 results: (page_name, '') and (page_name, filename) # TODO: make behaviour the same, if possible finally: nuke_page(self.request, page_name) del self.pages[page_name] self._index_update() result = self.search(filename) found_attachments = set([(hit.page_name, hit.attachment) for hit in result.hits]) assert not found_attachments
def test_appending_group_page(self): """ Test scalability by appending a name to a large list of group members. """ request = self.request become_trusted(request) # long list of users page_content = [u" * %s" % member for member in create_random_string_list(length=15, count=1234)] test_user = create_random_string_list(length=15, count=1)[0] create_page(request, u'UserGroup', "\n".join(page_content)) append_page(request, u'UserGroup', u' * %s' % test_user) result = test_user in request.groups['UserGroup'] nuke_page(request, u'UserGroup') assert result
def test_appending_group_page(self): """ Test scalability by appending a name to a large list of group members. """ request = self.request become_trusted(request) # long list of users page_content = [ u" * %s" % member for member in create_random_string_list(length=15, count=1234) ] test_user = create_random_string_list(length=15, count=1)[0] create_page(request, u'UserGroup', "\n".join(page_content)) append_page(request, u'UserGroup', u' * %s' % test_user) result = test_user in request.groups['UserGroup'] nuke_page(request, u'UserGroup') assert result
def test_user_addition_to_group_page(self): """ Test addition of a username to a large list of group members. """ request = self.request become_trusted(request) # long list of users page_content = [u" * %s" % member for member in create_random_string_list()] create_page(request, u'UserGroup', "\n".join(page_content)) new_user = create_random_string_list(length=15, count=1)[0] append_page(request, u'UserGroup', u' * %s' % new_user) user = User(request, name=new_user) if not user.exists(): User(request, name=new_user, password=new_user).save() result = new_user in request.groups[u'UserGroup'] nuke_page(request, u'UserGroup') nuke_user(request, new_user) assert result
def test_attachment(self): page_name = u'TestAttachment' self.pages[ page_name] = 'some text' # Moin search must search this page filename = "AutoCreatedSillyAttachmentForSearching.png" data = "Test content" filecontent = StringIO.StringIO(data) result = self.search(filename) found_attachments = set([(hit.page_name, hit.attachment) for hit in result.hits]) assert not found_attachments try: create_page(self.request, page_name, self.pages[page_name]) AttachFile.add_attachment(self.request, page_name, filename, filecontent, True) append_page(self.request, page_name, '[[attachment:%s]]' % filename) self._index_update() result = self.search(filename) found_attachments = set([(hit.page_name, hit.attachment) for hit in result.hits]) assert (page_name, '') in found_attachments assert 1 <= len(found_attachments) <= 2 # Note: moin search returns (page_name, '') as only result # xapian search returns 2 results: (page_name, '') and (page_name, filename) # TODO: make behaviour the same, if possible finally: nuke_page(self.request, page_name) del self.pages[page_name] self._index_update() result = self.search(filename) found_attachments = set([(hit.page_name, hit.attachment) for hit in result.hits]) assert not found_attachments
def testAppendingGroupPage(self): """ tests scalability by appending a name to a large list of group members """ # long list of users page_content = [u" * %s" % member for member in create_random_string_list(length=15, count=30000)] request = self.request become_trusted(request) test_user = create_random_string_list(length=15, count=1)[0] page = create_page(request, u'UserGroup', "\n".join(page_content)) page = append_page(request, u'UserGroup', u' * %s' % test_user) result = request.dicts.has_member('UserGroup', test_user) nuke_page(request, u'UserGroup') assert result is True
def test_user_addition_to_group_page(self): """ Test addition of a username to a large list of group members. """ request = self.request become_trusted(request) # long list of users page_content = [ u" * %s" % member for member in create_random_string_list() ] create_page(request, u'UserGroup', "\n".join(page_content)) new_user = create_random_string_list(length=15, count=1)[0] append_page(request, u'UserGroup', u' * %s' % new_user) user = User(request, name=new_user) if not user.exists(): User(request, name=new_user, password=new_user).save() result = new_user in request.groups[u'UserGroup'] nuke_page(request, u'UserGroup') nuke_user(request, new_user) assert result
def testMemberRemovedFromGroupPage(self): """ tests appending a member to a large list of group members and recreating the page without the member """ # long list of users page_content = [u" * %s" % member for member in create_random_string_list()] page_content = "\n".join(page_content) request = self.request become_trusted(request) test_user = create_random_string_list(length=15, count=1)[0] page = create_page(request, u'UserGroup', page_content) page = append_page(request, u'UserGroup', u' * %s' % test_user) # saves the text without test_user page.saveText(page_content, 0) result = request.dicts.has_member('UserGroup', test_user) nuke_page(request, u'UserGroup') assert result is False
def testUserAppendingGroupPage(self): """ tests appending a username to a large list of group members and user creation """ # long list of users page_content = [u" * %s" % member for member in create_random_string_list()] request = self.request become_trusted(request) test_user = create_random_string_list(length=15, count=1)[0] page = create_page(request, u'UserGroup', "\n".join(page_content)) page = append_page(request, u'UserGroup', u' * %s' % test_user) # now shortly later we create a user object user = User(request, name=test_user) if not user.exists(): User(request, name=test_user, password=test_user).save() result = request.dicts.has_member('UserGroup', test_user) nuke_page(request, u'UserGroup') nuke_user(request, test_user) assert result is True
def test_member_removed_from_group_page(self): """ Tests appending a member to a large list of group members and recreating the page without the member. """ request = self.request become_trusted(request) # long list of users page_content = [u" * %s" % member for member in create_random_string_list()] page_content = "\n".join(page_content) create_page(request, u'UserGroup', page_content) test_user = create_random_string_list(length=15, count=1)[0] page = append_page(request, u'UserGroup', u' * %s' % test_user) # saves the text without test_user page.saveText(page_content, 0) result = test_user in request.groups[u'UserGroup'] nuke_page(request, u'UserGroup') assert not result
def test_member_removed_from_group_page(self): """ Tests appending a member to a large list of group members and recreating the page without the member. """ request = self.request become_trusted(request) # long list of users page_content = [ u" * %s" % member for member in create_random_string_list() ] page_content = "\n".join(page_content) create_page(request, u'UserGroup', page_content) test_user = create_random_string_list(length=15, count=1)[0] page = append_page(request, u'UserGroup', u' * %s' % test_user) # saves the text without test_user page.saveText(page_content, 0) result = test_user in request.groups[u'UserGroup'] nuke_page(request, u'UserGroup') assert not result