def test_4_delete_publisher(self):
        group_name = 'deletetest'
        CreateTestData.create_groups(
            [{
                'name': group_name,
                'packages': [u'cabinet-office-energy-use']
            }],
            admin_user_name='nhsadmin')

        group = model.Group.by_name(group_name)
        offset = url_for(controller=self.publisher_controller,
                         action='edit',
                         id=group_name)
        res = self.app.get(offset,
                           status=200,
                           extra_environ={'REMOTE_USER': '******'})
        main_res = self.main_div(res)
        assert 'Edit: %s' % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        # delete
        form = res.forms[0]
        form['state'] = 'deleted'
        form['category'] = 'private'  # to get it to validate
        res = form.submit('save',
                          status=302,
                          extra_environ={'REMOTE_USER': '******'})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, 'deleted')
        res = self.app.get(offset, status=401)
Exemple #2
0
    def setup(self):
        """
        Creates a harvested UKLP dataset.
        """
        _drop_sysadmin()
        self.admin = _create_sysadmin()

        CreateTestData.create_test_user()
        self.tester = 'tester'

        CreateTestData.create_groups(_EXAMPLE_GROUPS, admin_user_name=self.tester, auth_profile='publisher')
        CreateTestData.flag_for_deletion(group_names=[g['name'] for g in _EXAMPLE_GROUPS])

        context = {
            'model': ckan.model,
            'session': ckan.model.Session,
            'user': self.admin,
            'api_version': 2,
            'schema': ckan.logic.schema.default_package_schema(),
        }
        package_dict = _UKLP_DATASET.copy()

        self.uklp_dataset = get_action('package_create_rest')(context, package_dict)

        CreateTestData.flag_for_deletion(pkg_names=[self.uklp_dataset['name']])
Exemple #3
0
    def setup_class(self):
        super(TestLoaderGroups, self).setup_class()
        self.loader = ReplaceByNameLoader(self.testclient)

        assert count_pkgs() == 0, count_pkgs()
        pkg_dicts = [
            {
                'name': u'pkga'
            },
            {
                'name': u'pkgb'
            },
            {
                'name': u'pkgc'
            },
        ]
        CreateTestData.create_arbitrary(pkg_dicts)
        group_dicts = [
            {
                'name': u'g1',
                'packages': [u'pkga']
            },
            {
                'name': u'g2'
            },
            {
                'name': u'g3'
            },
        ]
        CreateTestData.create_groups(group_dicts, USER)
        self.pkgs = [model.Package.by_name(pkg_dict['name']) \
                     for pkg_dict in pkg_dicts]
        self.pkg_ids = [pkg.id for pkg in self.pkgs]
Exemple #4
0
    def test_delete(self):
        group_name = 'deletetest'
        CreateTestData.create_groups([{
            'name': group_name,
            'packages': [self.packagename]
        }],
                                     admin_user_name='russianfan')

        group = model.Group.by_name(group_name)
        offset = url_for(controller='group', action='edit', id=group_name)
        res = self.app.get(offset,
                           status=200,
                           extra_environ={'REMOTE_USER': '******'})
        main_res = self.main_div(res)
        assert 'Edit: %s' % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        # delete
        form = res.forms['group-edit']
        form['state'] = 'deleted'
        res = form.submit('save',
                          status=302,
                          extra_environ={'REMOTE_USER': '******'})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, 'deleted')
        res = self.app.get(offset, status=302)
        res = res.follow()
        assert res.request.url.startswith('/user/login'), res.request.url
Exemple #5
0
    def test_4_new_duplicate_package(self):
        prefix = ''

        # Create group
        group_name = u'testgrp4'
        CreateTestData.create_groups([{
            'name': group_name,
            'packages': [self.packagename]
        }],
                                     admin_user_name='russianfan')

        # Add same package again
        offset = url_for(controller='group', action='edit', id=group_name)
        res = self.app.get(offset,
                           status=200,
                           extra_environ={'REMOTE_USER': '******'})
        fv = res.forms['group-edit']
        fv['packages__1__name'] = self.packagename
        res = fv.submit('save',
                        status=302,
                        extra_environ={'REMOTE_USER': '******'})
        res = res.follow()
        assert group_name in res, res
        model.Session.remove()

        # check package only added to the group once
        group = model.Group.by_name(group_name)
        pkg_names = [pkg.name for pkg in group.active_packages().all()]
        assert_equal(pkg_names, [self.packagename])
Exemple #6
0
    def test_4_new_duplicate_package(self):
        prefix = ''

        # Create group
        group_name = u'testgrp4'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': [self.packagename]}],
                                     admin_user_name='testsysadmin')

        # Add same package again
        offset = url_for(controller='group', action='edit', id=group_name)
        res = self.app.get(offset, status=200,
                           extra_environ={'REMOTE_USER': '******'})
        fv = res.forms['group-edit']
        fv['packages__1__name'] = self.packagename
        res = fv.submit('save', status=302,
                        extra_environ={'REMOTE_USER': '******'})
        res = res.follow()
        assert group_name in res, res
        model.Session.remove()

        # check package only added to the group once
        group = model.Group.by_name(group_name)
        pkg_names = [pkg.name for pkg in group.packages()]
        assert_equal(pkg_names, [self.packagename])
    def setup(self):
        """
        Creates a harvested UKLP dataset.
        """
        _drop_sysadmin()
        self.admin = _create_sysadmin()

        CreateTestData.create_test_user()
        self.tester = "tester"

        CreateTestData.create_groups(_EXAMPLE_GROUPS, admin_user_name=self.tester, auth_profile="publisher")
        CreateTestData.flag_for_deletion(group_names=[g["name"] for g in _EXAMPLE_GROUPS])

        context = {
            "model": ckan.model,
            "session": ckan.model.Session,
            "user": self.admin,
            "api_version": 2,
            "schema": ckan.logic.schema.default_package_schema(),
        }
        package_dict = _UKLP_DATASET.copy()

        self.uklp_dataset = get_action("package_create_rest")(context, package_dict)

        CreateTestData.flag_for_deletion(pkg_names=[self.uklp_dataset["name"]])
Exemple #8
0
    def test_delete(self):
        group_name = 'deletetest'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': [self.packagename]}],
                                     admin_user_name='testsysadmin')

        group = model.Group.by_name(group_name)
        offset = url_for(controller='group', action='edit', id=group_name)
        res = self.app.get(offset, status=200,
                           extra_environ={'REMOTE_USER': '******'})
        main_res = self.main_div(res)
        assert 'Edit: %s' % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        # delete
        form = res.forms['group-edit']
        form['state'] = 'deleted'
        res = form.submit('save', status=302,
                          extra_environ={'REMOTE_USER': '******'})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, 'deleted')
        res = self.app.get(offset, status=302)
        res = res.follow()
        assert res.request.url.startswith('/user/login'), res.request.url
Exemple #9
0
    def test_atom_feed_page_negative(self):
        group_name = "deletetest"
        CreateTestData.create_groups([{"name": group_name, "packages": []}], admin_user_name="testsysadmin")

        offset = url_for(controller="feed", action="group", id=group_name)
        offset = offset + "?page=-2"
        res = self.app.get(offset, expect_errors=True)
        assert '"page" parameter must be a positive integer' in res, res
Exemple #10
0
    def test_sorting(self):
        model.repo.rebuild_db()

        pkg1 = model.Package(name="pkg1")
        pkg2 = model.Package(name="pkg2")
        model.Session.add(pkg1)
        model.Session.add(pkg2)

        CreateTestData.create_groups([{
            'name': "alpha",
            'packages': []
        }, {
            'name': "beta",
            'packages': ["pkg1", "pkg2"]
        }, {
            'name': "delta",
            'packages': ["pkg1"]
        }, {
            'name': "gamma",
            'packages': []
        }],
                                     admin_user_name='testsysadmin')

        context = {
            'model': model,
            'session': model.Session,
            'user': '******',
            'for_view': True,
            'with_private': False
        }
        data_dict = {'all_fields': True}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'alpha', results[0]['name']
        assert results[-1]['name'] == u'gamma', results[-1]['name']

        # Test name reverse
        data_dict = {'all_fields': True, 'sort': 'name desc'}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'gamma', results[0]['name']
        assert results[-1]['name'] == u'alpha', results[-1]['name']

        # Test packages reversed
        data_dict = {'all_fields': True, 'sort': 'packages desc'}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'beta', results[0]['name']
        assert results[1]['name'] == u'delta', results[1]['name']

        # Test packages forward
        data_dict = {'all_fields': True, 'sort': 'packages asc'}
        results = get_action('group_list')(context, data_dict)
        assert results[-2]['name'] == u'delta', results[-2]['name']
        assert results[-1]['name'] == u'beta', results[-1]['name']

        # Default ordering for packages
        data_dict = {'all_fields': True, 'sort': 'packages'}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'beta', results[0]['name']
        assert results[1]['name'] == u'delta', results[1]['name']
Exemple #11
0
    def test_sorting(self):
        model.repo.rebuild_db()

        testsysadmin = model.User(name=u"testsysadmin")
        testsysadmin.sysadmin = True
        model.Session.add(testsysadmin)

        pkg1 = model.Package(name="pkg1")
        pkg2 = model.Package(name="pkg2")
        model.Session.add(pkg1)
        model.Session.add(pkg2)

        CreateTestData.create_groups(
            [
                {"name": "alpha", "packages": []},
                {"name": "beta", "packages": ["pkg1", "pkg2"]},
                {"name": "delta", "packages": ["pkg1"]},
                {"name": "gamma", "packages": []},
            ],
            admin_user_name="testsysadmin",
        )

        context = {
            "model": model,
            "session": model.Session,
            "user": "******",
            "for_view": True,
            "with_private": False,
        }
        data_dict = {"all_fields": True}
        results = get_action("group_list")(context, data_dict)
        assert results[0]["name"] == u"alpha", results[0]["name"]
        assert results[-1]["name"] == u"gamma", results[-1]["name"]

        # Test name reverse
        data_dict = {"all_fields": True, "sort": "name desc"}
        results = get_action("group_list")(context, data_dict)
        assert results[0]["name"] == u"gamma", results[0]["name"]
        assert results[-1]["name"] == u"alpha", results[-1]["name"]

        # Test packages reversed
        data_dict = {"all_fields": True, "sort": "packages desc"}
        results = get_action("group_list")(context, data_dict)
        assert results[0]["name"] == u"beta", results[0]["name"]
        assert results[1]["name"] == u"delta", results[1]["name"]

        # Test packages forward
        data_dict = {"all_fields": True, "sort": "packages asc"}
        results = get_action("group_list")(context, data_dict)
        assert results[-2]["name"] == u"delta", results[-2]["name"]
        assert results[-1]["name"] == u"beta", results[-1]["name"]

        # Default ordering for packages
        data_dict = {"all_fields": True, "sort": "packages"}
        results = get_action("group_list")(context, data_dict)
        assert results[0]["name"] == u"beta", results[0]["name"]
        assert results[1]["name"] == u"delta", results[1]["name"]
Exemple #12
0
 def setup(self):
     username = '******'
     groupname = 'test group'
     organization_name = 'test organization'
     CreateTestData.create_user('sysadmin', **{ 'sysadmin': True })
     CreateTestData.create_groups([{ 'name': groupname },
                                   { 'name': organization_name,
                                     'type': 'organization'}])
     self.sysadmin = model.User.get(username)
     self.group = model.Group.get(groupname)
Exemple #13
0
 def setup(self):
     username = '******'
     groupname = 'test group'
     organization_name = 'test organization'
     CreateTestData.create_user('sysadmin', **{ 'sysadmin': True })
     CreateTestData.create_groups([{ 'name': groupname },
                                   { 'name': organization_name,
                                     'type': 'organization'}])
     self.sysadmin = model.User.get(username)
     self.group = model.Group.get(groupname)
Exemple #14
0
    def test_atom_feed_page_zero(self):
        group_name = "deletetest"
        CreateTestData.create_groups([{"name": group_name, "packages": []}], admin_user_name="testsysadmin")

        offset = url_for(controller="feed", action="group", id=group_name)
        offset = offset + "?page=0"
        res = self.app.get(offset)
        assert "<feed" in res, res
        assert 'xmlns="http://www.w3.org/2005/Atom"' in res, res
        assert "</feed>" in res, res
Exemple #15
0
    def test_atom_feed_page_negative(self):
        group_name = 'deletetest'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': []}],
                                     admin_user_name='testsysadmin')

        offset = url_for(controller='feed', action='group',
                         id=group_name)
        offset = offset + '?page=-2'
        res = self.app.get(offset, expect_errors=True)
        assert '"page" parameter must be a positive integer' in res, res
Exemple #16
0
    def test_atom_feed_page_negative(self):
        group_name = 'deletetest'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': []}],
                                     admin_user_name='testsysadmin')

        offset = url_for(controller='feed', action='group',
                         id=group_name)
        offset = offset + '?page=-2'
        res = self.app.get(offset, expect_errors=True)
        assert '"page" parameter must be a positive integer' in res, res
    def setup(self):
        """
        Create standard gov3 test fixtures for this suite.

        This test class won't be editing any packages, so it's ok to only
        create these fixtures once.
        """
        CreateTestData.create_groups(_EXAMPLE_GROUPS, auth_profile="publisher")
        CreateTestData.flag_for_deletion(group_names=[g["name"] for g in _EXAMPLE_GROUPS])
        self.fixtures = Gov3Fixtures()
        self.fixtures.create()
        self.admin = _create_sysadmin()
Exemple #18
0
    def setup(self):
        """
        Create standard gov3 test fixtures for this suite.

        This test class won't be editing any packages, so it's ok to only
        create these fixtures once.
        """
        CreateTestData.create_groups(_EXAMPLE_GROUPS, auth_profile='publisher')
        CreateTestData.flag_for_deletion(group_names=[g['name'] for g in _EXAMPLE_GROUPS])
        self.fixtures = Gov3Fixtures()
        self.fixtures.create()
        self.admin = _create_sysadmin()
Exemple #19
0
    def test_atom_feed_page_zero(self):
        group_name = 'deletetest'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': []}],
                                     admin_user_name='russianfan')

        offset = url_for(controller='feed', action='group',
                         id=group_name)
        offset = offset + '?page=0'
        res = self.app.get(offset)
        assert '<feed' in res, res
        assert 'xmlns="http://www.w3.org/2005/Atom"' in res, res
        assert '</feed>' in res, res
 def initial_data(self, clean_db):
     username = "******"
     groupname = "test group"
     organization_name = "test organization"
     CreateTestData.create_user("sysadmin", **{"sysadmin": True})
     CreateTestData.create_groups(
         [
             {"name": groupname},
             {"name": organization_name, "type": "organization"},
         ]
     )
     self.sysadmin = model.User.get(username)
     self.group = model.Group.get(groupname)
Exemple #21
0
    def test_atom_feed_page_zero(self):
        group_name = 'deletetest'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': []}],
                                     admin_user_name='testsysadmin')

        offset = url_for(controller='feed', action='group',
                         id=group_name)
        offset = offset + '?page=0'
        res = self.app.get(offset)
        assert '<feed' in res, res
        assert 'xmlns="http://www.w3.org/2005/Atom"' in res, res
        assert '</feed>' in res, res
Exemple #22
0
    def test_sorting(self):
        model.repo.rebuild_db()

        testsysadmin = model.User(name=u'testsysadmin')
        testsysadmin.sysadmin = True
        model.Session.add(testsysadmin)

        pkg1 = model.Package(name="pkg1")
        pkg2 = model.Package(name="pkg2")
        model.Session.add(pkg1)
        model.Session.add(pkg2)

        CreateTestData.create_groups([{'name': "alpha", 'packages': []},
                                      {'name': "beta",
                                       'packages': ["pkg1", "pkg2"]},
                                      {'name': "delta",
                                       'packages': ["pkg1"]},
                                      {'name': "gamma", 'packages': []}],
                                     admin_user_name='testsysadmin')

        context = {'model': model, 'session': model.Session,
                   'user': '******', 'for_view': True,
                   'with_private': False}
        data_dict = {'all_fields': True}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'alpha', results[0]['name']
        assert results[-1]['name'] == u'gamma', results[-1]['name']

        # Test name reverse
        data_dict = {'all_fields': True, 'sort': 'name desc'}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'gamma', results[0]['name']
        assert results[-1]['name'] == u'alpha', results[-1]['name']

        # Test packages reversed
        data_dict = {'all_fields': True, 'sort': 'packages desc'}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'beta', results[0]['name']
        assert results[1]['name'] == u'delta', results[1]['name']

        # Test packages forward
        data_dict = {'all_fields': True, 'sort': 'packages asc'}
        results = get_action('group_list')(context, data_dict)
        assert results[-2]['name'] == u'delta', results[-2]['name']
        assert results[-1]['name'] == u'beta', results[-1]['name']

        # Default ordering for packages
        data_dict = {'all_fields': True, 'sort': 'packages'}
        results = get_action('group_list')(context, data_dict)
        assert results[0]['name'] == u'beta', results[0]['name']
        assert results[1]['name'] == u'delta', results[1]['name']
Exemple #23
0
    def test_children(self):
        if model.engine_is_sqlite():
            from nose import SkipTest
            raise SkipTest("Can't use CTE for sqlite")

        group_name = 'deletetest'
        CreateTestData.create_groups([{
            'name': group_name,
            'packages': []
        }, {
            'name': "parent_group",
            'packages': []
        }],
                                     admin_user_name='testsysadmin')

        parent = model.Group.by_name("parent_group")
        group = model.Group.by_name(group_name)

        rev = model.repo.new_revision()
        rev.author = "none"

        member = model.Member(group_id=parent.id,
                              table_id=group.id,
                              table_name='group',
                              capacity='member')
        model.Session.add(member)
        model.repo.commit_and_remove()

        offset = url_for(controller='group', action='edit', id=group_name)
        res = self.app.get(offset,
                           status=200,
                           extra_environ={'REMOTE_USER': '******'})
        main_res = self.main_div(res)
        assert 'Edit: %s' % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        parent = model.Group.by_name("parent_group")
        assert_equal(len(parent.get_children_groups()), 1)

        # delete
        form = res.forms['group-edit']
        form['state'] = 'deleted'
        res = form.submit('save',
                          status=302,
                          extra_environ={'REMOTE_USER': '******'})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, 'deleted')

        parent = model.Group.by_name("parent_group")
        assert_equal(len(parent.get_children_groups()), 0)
 def setup_class(cls):
     model.repo.new_revision()
     tests.setup_test_search_index()
     CreateTestData.create_arbitrary(test_data)
     CreateTestData.create_groups([{
         'name': 'publisher1',
         'packages': ['boolean1', 'boolean2', 'boolean3']
     }])
     model.Session.commit()
     for plugin in ['ecportal',
                    'ecportal_form',
                    'ecportal_publisher_form',
                    'ecportal_controller']:
         plugins.load(plugin)
Exemple #25
0
 def test_group_by_drupal_id(self):
     CreateTestData.create_groups([
         {'name': 'nhs',
          'drupal_id': '1'},
         {'name': 'mod',
          'drupal_id': '2'},
         {'name': 'london',
          'drupal_id': '3'},
         ])
     try:
         group = sync.group_by_drupal_id(2)
         assert group
         assert_equal(group.name, 'mod')
     finally:
         model.repo.rebuild_db()
Exemple #26
0
 def setup_class(self):
     CreateTestData.create_arbitrary([{'name': 'testpkg'}],
                                     extra_user_names=['brian', 'sandra'])
     CreateTestData.create_groups([
         {'name': 'grp1',
          'phone': '1234',
          }
         ])
     grp1 = model.Group.by_name(u'grp1')
     brian = model.User.by_name(u'brian')
     model.Session.add(model.Member(group=grp1,
                                    table_id=brian.id,
                                    table_name='user',
                                    capacity='admin')
                      )
     model.repo.commit_and_remove()
Exemple #27
0
 def initial_data(self, clean_db):
     CreateTestData.create_arbitrary([{
         "name": "testpkg"
     }],
                                     extra_user_names=["brian", "sandra"])
     CreateTestData.create_groups([{"name": "grp1", "phone": "1234"}])
     grp1 = model.Group.by_name(u"grp1")
     brian = model.User.by_name(u"brian")
     model.Session.add(
         model.Member(
             group=grp1,
             table_id=brian.id,
             table_name="user",
             capacity="admin",
         ))
     model.repo.commit_and_remove()
Exemple #28
0
 def setup_class(self):
     CreateTestData.create_arbitrary([{'name': 'testpkg'}],
                                     extra_user_names=['brian', 'sandra'])
     CreateTestData.create_groups([
         {'name': 'grp1',
          'phone': '1234',
          }
         ])
     model.repo.new_revision()
     grp1 = model.Group.by_name(u'grp1')
     brian = model.User.by_name(u'brian')
     model.Session.add(model.Member(group=grp1,
                                    table_id=brian.id,
                                    table_name='user',
                                    capacity='admin')
                      )
     model.repo.commit_and_remove()
Exemple #29
0
    def test_member_new_invites_user_if_received_email(self, mail_user):
        user = CreateTestData.create_user("a_user", sysadmin=True)
        group_name = "a_group"
        CreateTestData.create_groups([{"name": group_name}], user.name)
        group = model.Group.get(group_name)
        url = url_for(controller="group", action="member_new", id=group.id)
        email = "*****@*****.**"
        role = "member"

        params = {"email": email, "role": role}
        res = self.app.post(url, params, extra_environ={"REMOTE_USER": str(user.name)})

        users = model.User.by_email(email)
        assert len(users) == 1, users
        user = users[0]
        assert user.email == email, user
        assert group.id in user.get_group_ids(capacity=role)
Exemple #30
0
def test_member_new_invites_user_if_received_email(_mail_user, app):
    user = CreateTestData.create_user("a_user", sysadmin=True)
    group_name = "a_group"
    CreateTestData.create_groups([{"name": group_name}], user.name)
    group = model.Group.get(group_name)
    url = url_for(controller="group", action="member_new", id=group.id)
    email = "*****@*****.**"
    role = "member"

    params = {"email": email, "role": role}
    app.post(url, data=params, extra_environ={"REMOTE_USER": str(user.name)})

    users = model.User.by_email(email)
    assert len(users) == 1, users
    user = users[0]
    assert user.email == email, user
    assert group.id in user.get_group_ids(capacity=role)
Exemple #31
0
    def test_member_new_invites_user_if_received_email(self, mail_user):
        user = CreateTestData.create_user('a_user', sysadmin=True)
        group_name = 'a_group'
        CreateTestData.create_groups([{'name': group_name}], user.name)
        group = model.Group.get(group_name)
        url = url_for(controller='group', action='member_new', id=group.id)
        email = '*****@*****.**'
        role = 'member'

        params = {'email': email, 'role': role}
        res = self.app.post(url, params,
                            extra_environ={'REMOTE_USER': str(user.name)})

        users = model.User.by_email(email)
        assert len(users) == 1, users
        user = users[0]
        assert user.email == email, user
        assert group.id in user.get_group_ids(capacity=role)
Exemple #32
0
    def test_member_new_invites_user_if_received_email(self, mail_user):
        user = CreateTestData.create_user('a_user', sysadmin=True)
        group_name = 'a_group'
        CreateTestData.create_groups([{'name': group_name}], user.name)
        group = model.Group.get(group_name)
        url = url_for(controller='group', action='member_new', id=group.id)
        email = '*****@*****.**'
        role = 'member'

        params = {'email': email, 'role': role}
        res = self.app.post(url, params,
                            extra_environ={'REMOTE_USER': str(user.name)})

        users = model.User.by_email(email)
        assert len(users) == 1, users
        user = users[0]
        assert user.email == email, user
        assert group.id in user.get_group_ids(capacity=role)
Exemple #33
0
    def test_children(self):
        if model.engine_is_sqlite():
            from nose import SkipTest
            raise SkipTest("Can't use CTE for sqlite")

        group_name = 'deletetest'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': []},
                                      {'name': "parent_group",
                                       'packages': []}],
                                     admin_user_name='testsysadmin')

        parent = model.Group.by_name("parent_group")
        group = model.Group.by_name(group_name)

        rev = model.repo.new_revision()
        rev.author = "none"

        member = model.Member(group_id=group.id, table_id=parent.id,
                              table_name='group', capacity='member')
        model.Session.add(member)
        model.repo.commit_and_remove()

        offset = url_for(controller='group', action='edit', id=group_name)
        res = self.app.get(offset, status=200,
                           extra_environ={'REMOTE_USER': '******'})
        main_res = self.main_div(res)
        assert 'Edit: %s' % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        parent = model.Group.by_name("parent_group")
        assert_equal(len(parent.get_children_groups()), 1)

        # delete
        form = res.forms['group-edit']
        form['state'] = 'deleted'
        res = form.submit('save', status=302,
                          extra_environ={'REMOTE_USER': '******'})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, 'deleted')

        parent = model.Group.by_name("parent_group")
        assert_equal(len(parent.get_children_groups()), 0)
Exemple #34
0
    def setup_class(self):
        super(TestLoaderGroups, self).setup_class()
        self.loader = ReplaceByNameLoader(self.testclient)

        assert count_pkgs() == 0, count_pkgs()
        pkg_dicts = [{'name':u'pkga'},
                     {'name':u'pkgb'},
                     {'name':u'pkgc'},
                     ]
        CreateTestData.create_arbitrary(pkg_dicts)
        group_dicts = [
            {'name':u'g1', 'packages':[u'pkga']},
            {'name':u'g2'},
            {'name':u'g3'},
            ]
        CreateTestData.create_groups(group_dicts, USER)
        self.pkgs = [model.Package.by_name(pkg_dict['name']) \
                     for pkg_dict in pkg_dicts]
        self.pkg_ids = [pkg.id for pkg in self.pkgs]
Exemple #35
0
    def test_children(self):
        if model.engine_is_sqlite():
            from nose import SkipTest

            raise SkipTest("Can't use CTE for sqlite")

        group_name = "deletetest"
        CreateTestData.create_groups(
            [{"name": group_name, "packages": []}, {"name": "parent_group", "packages": []}],
            admin_user_name="testsysadmin",
        )

        parent = model.Group.by_name("parent_group")
        group = model.Group.by_name(group_name)

        rev = model.repo.new_revision()
        rev.author = "none"

        member = model.Member(group_id=parent.id, table_id=group.id, table_name="group", capacity="member")
        model.Session.add(member)
        model.repo.commit_and_remove()

        offset = url_for(controller="group", action="edit", id=group_name)
        res = self.app.get(offset, status=200, extra_environ={"REMOTE_USER": "******"})
        main_res = self.main_div(res)
        assert "Edit: %s" % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        parent = model.Group.by_name("parent_group")
        assert_equal(len(parent.get_children_groups()), 1)

        # delete
        form = res.forms["group-edit"]
        form["state"] = "deleted"
        res = form.submit("save", status=302, extra_environ={"REMOTE_USER": "******"})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, "deleted")

        parent = model.Group.by_name("parent_group")
        assert_equal(len(parent.get_children_groups()), 0)
Exemple #36
0
 def test_group_by_drupal_id(self):
     CreateTestData.create_groups([
         {
             'name': 'nhs',
             'drupal_id': '1'
         },
         {
             'name': 'mod',
             'drupal_id': '2'
         },
         {
             'name': 'london',
             'drupal_id': '3'
         },
     ])
     try:
         group = sync.group_by_drupal_id(2)
         assert group
         assert_equal(group.name, 'mod')
     finally:
         model.repo.rebuild_db()
    def test_4_delete_publisher(self):
        group_name = 'deletetest'
        CreateTestData.create_groups([{'name': group_name,
                                       'packages': [u'cabinet-office-energy-use']}],
                                     admin_user_name='nhsadmin')

        group = model.Group.by_name(group_name)
        offset = url_for(controller=self.publisher_controller, action='edit', id=group_name)
        res = self.app.get(offset, status=200, extra_environ={'REMOTE_USER': '******'})
        main_res = self.main_div(res)
        assert 'Edit: %s' % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        # delete
        form = res.forms['publisher-edit']
        form['state'] = 'deleted'
        form['category'] = 'private' # to get it to validate
        res = form.submit('save', status=302, extra_environ={'REMOTE_USER': '******'})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, 'deleted')
        res = self.app.get(offset, status=401)
Exemple #38
0
    def test_4_new_duplicate_package(self):
        prefix = ""

        # Create group
        group_name = u"testgrp4"
        CreateTestData.create_groups(
            [{"name": group_name, "packages": [self.packagename]}], admin_user_name="testsysadmin"
        )

        # Add same package again
        offset = url_for(controller="group", action="edit", id=group_name)
        res = self.app.get(offset, status=200, extra_environ={"REMOTE_USER": "******"})
        fv = res.forms["group-edit"]
        fv["packages__1__name"] = self.packagename
        res = fv.submit("save", status=302, extra_environ={"REMOTE_USER": "******"})
        res = res.follow()
        assert group_name in res, res
        model.Session.remove()

        # check package only added to the group once
        group = model.Group.by_name(group_name)
        pkg_names = [pkg.name for pkg in group.packages()]
        assert_equal(pkg_names, [self.packagename])
Exemple #39
0
    def test_delete(self):
        group_name = "deletetest"
        CreateTestData.create_groups(
            [{"name": group_name, "packages": [self.packagename]}], admin_user_name="testsysadmin"
        )

        group = model.Group.by_name(group_name)
        offset = url_for(controller="group", action="edit", id=group_name)
        res = self.app.get(offset, status=200, extra_environ={"REMOTE_USER": "******"})
        main_res = self.main_div(res)
        assert "Edit: %s" % group.title in main_res, main_res
        assert 'value="active" selected' in main_res, main_res

        # delete
        form = res.forms["group-edit"]
        form["state"] = "deleted"
        res = form.submit("save", status=302, extra_environ={"REMOTE_USER": "******"})

        group = model.Group.by_name(group_name)
        assert_equal(group.state, "deleted")
        res = self.app.get(offset, status=302)
        res = res.follow()
        assert res.request.url.startswith("/user/login"), res.request.url
Exemple #40
0
def test_sorting():
    testsysadmin = factories.Sysadmin(name=u"testsysadmin")

    pkg1 = model.Package(name="pkg1")
    pkg2 = model.Package(name="pkg2")
    model.Session.add(pkg1)
    model.Session.add(pkg2)

    CreateTestData.create_groups(
        [
            {
                "name": "alpha",
                "title": "Alpha",
                "packages": []
            },
            {
                "name": "beta",
                "title": "Beta",
                "packages": ["pkg1", "pkg2"]
            },
            {
                "name": "delta",
                "title": "Delta",
                "packages": ["pkg1"]
            },
            {
                "name": "gamma",
                "title": "Gamma",
                "packages": []
            },
        ],
        admin_user_name="testsysadmin",
    )

    context = {
        "model": model,
        "session": model.Session,
        "user": "******",
        "for_view": True,
        "with_private": False,
    }
    data_dict = {"all_fields": True}
    results = get_action("group_list")(context, data_dict)
    assert results[0]["name"] == u"alpha", results[0]["name"]
    assert results[-1]["name"] == u"gamma", results[-1]["name"]

    # Test title forward
    data_dict = {"all_fields": True, "sort": "title asc"}
    results = get_action("group_list")(context, data_dict)
    assert results[0]["name"] == u"alpha", results[0]["name"]
    assert results[-1]["name"] == u"gamma", results[-1]["name"]

    # Test title reverse
    data_dict = {"all_fields": True, "sort": "title desc"}
    results = get_action("group_list")(context, data_dict)
    assert results[0]["name"] == u"gamma", results[0]["name"]
    assert results[-1]["name"] == u"alpha", results[-1]["name"]

    # Test name reverse
    data_dict = {"all_fields": True, "sort": "name desc"}
    results = get_action("group_list")(context, data_dict)
    assert results[0]["name"] == u"gamma", results[0]["name"]
    assert results[-1]["name"] == u"alpha", results[-1]["name"]

    # Test packages reversed
    data_dict = {"all_fields": True, "sort": "package_count desc"}
    results = get_action("group_list")(context, data_dict)
    assert results[0]["name"] == u"beta", results[0]["name"]
    assert results[1]["name"] == u"delta", results[1]["name"]

    # Test packages forward
    data_dict = {"all_fields": True, "sort": "package_count asc"}
    results = get_action("group_list")(context, data_dict)
    assert results[-2]["name"] == u"delta", results[-2]["name"]
    assert results[-1]["name"] == u"beta", results[-1]["name"]

    # Default ordering for packages
    data_dict = {"all_fields": True, "sort": "package_count"}
    results = get_action("group_list")(context, data_dict)
    assert results[0]["name"] == u"beta", results[0]["name"]
    assert results[1]["name"] == u"delta", results[1]["name"]
Exemple #41
0
 def setup(self):
     self._form_client = _PackageFormClient()
     CreateTestData.create_groups(_EXAMPLE_GROUPS, auth_profile='publisher')
     CreateTestData.flag_for_deletion(group_names=[g['name'] for g in _EXAMPLE_GROUPS])
 def setup(self):
     self._form_client = _PackageFormClient()
     CreateTestData.create_groups(_EXAMPLE_GROUPS, auth_profile="publisher")
     CreateTestData.flag_for_deletion(group_names=[g["name"] for g in _EXAMPLE_GROUPS])