def setup_class(cls):
     model.repo.rebuild_db()
     DguCreateTestData.create_dgu_test_data()
     cls.publisher_controller = 'ckanext.dgu.controllers.publisher:PublisherController'
     import ckanext.dgu.model.publisher_request as pr_model
     pr_model.init_tables(model.meta.engine)
     SmtpServerHarness.setup_class()
示例#2
0
 def assert_create_or_edit(self, create_or_edit, user_name, allowed=True):
     if create_or_edit == 'create':
         package_data = _EXAMPLE_TIMESERIES_DATA.copy()
         package_data['name'] = 'tstcreate' + user_name
         package_data['groups__0__name'] = 'national-health-service'
         package_name = package_data['name']
         package_id = None
     else:
         package_data = {}
         package_id = DguCreateTestData.form_package().id
         package_name = DguCreateTestData.form_package().name
     response = self._form_client.post_form(package_data, id=package_id, user_name=user_name, use_sysadmin_to_get_form=True, abort_on_bad_status=False)
     redirect = response.header_dict.get('Location', '')
     dataset_read_path = '/dataset/%s' % package_name
     if allowed:
         # 200 means there are form errors
         assert response.status != 200, response.body
         # 302 is what is wanted - a redirect to the package read page
         assert_equal(response.status, 302)
         assert dataset_read_path in redirect, redirect
     else:
         assert_equal(response.status, 401)
         assert dataset_read_path not in redirect, redirect
         # also assert that you couldn't get the form in the first place
         assert_raises(paste.fixture.AppError, self._form_client.post_form, package_data, user_name=user_name, use_sysadmin_to_get_form=False, abort_on_bad_status=False)
    def command(self):
        self._load_config()
        self._setup_app()

        # Now we can import
        from ckan import plugins
        from ckanext.dgu.testtools.create_test_data import DguCreateTestData
        
        try:
            plugins.load('synchronous_search') # so packages get indexed
        except:
            pass

        self.log = logging.getLogger(__name__)

        if self.args:
            cmd = self.args[0]
        else:
            cmd = 'basic'
        if cmd == 'basic':
            DguCreateTestData.create_dgu_test_data()
        elif cmd == 'users':
            DguCreateTestData.create_dgu_test_users()
        else:
            print 'Command %s not recognized' % cmd
            raise NotImplementedError
        
        self.log.info('Created DGU test data successfully')
示例#4
0
    def test_basic_dataset(self):
        DguCreateTestData.create_dgu_test_data()
        pkg_name = DguCreateTestData.form_package().name
        context = {"model": model, "session": model.Session, "user": "******"}

        pkg = get_action("package_show")(context, {"id": pkg_name})
        get_action("package_update")(context, pkg)
 def setup_class(cls):
     model.repo.rebuild_db()
     DguCreateTestData.create_dgu_test_data()
     cls.publisher_controller = 'ckanext.dgu.controllers.publisher:PublisherController'
     import ckanext.dgu.model.publisher_request as pr_model
     pr_model.init_tables(model.meta.engine)
     SmtpServerHarness.setup_class()
示例#6
0
 def assert_create_or_edit(self, create_or_edit, user_name, allowed=True):
     if create_or_edit == "create":
         package_data = _EXAMPLE_TIMESERIES_DATA.copy()
         package_data["name"] = "tstcreate" + user_name
         package_data["groups__0__name"] = "national-health-service"
         package_name = package_data["name"]
         package_id = None
     else:
         package_data = {}
         package_id = DguCreateTestData.form_package().id
         package_name = DguCreateTestData.form_package().name
     response = self._form_client.post_form(
         package_data, id=package_id, user_name=user_name, use_sysadmin_to_get_form=True, abort_on_bad_status=False
     )
     redirect = response.header_dict.get("Location", "")
     dataset_read_path = "/dataset/%s" % package_name
     if allowed:
         # 200 means there are form errors
         assert response.status != 200, response.body
         # 302 is what is wanted - a redirect to the package read page
         assert_equal(response.status, 302)
         assert dataset_read_path in redirect, redirect
     else:
         assert_equal(response.status, 401)
         assert dataset_read_path not in redirect, redirect
         # also assert that you couldn't get the form in the first place
         assert_raises(
             paste.fixture.AppError,
             self._form_client.post_form,
             package_data,
             user_name=user_name,
             use_sysadmin_to_get_form=False,
             abort_on_bad_status=False,
         )
    def setup_class(cls):
        DguCreateTestData.create_dgu_test_data()
        cls.publisher_controller = 'ckanext.dgu.controllers.publisher:PublisherController'

        # monkey patch webtest to support multiple select boxes
        Field.classes['multiple_select'] = MultipleSelect
        Form._parse_fields = _parse_fields
    def setup_class(cls):
        DguCreateTestData.create_dgu_test_data()
        cls.publisher_controller = 'ckanext.dgu.controllers.publisher:PublisherController'

        # monkey patch webtest to support multiple select boxes
        Field.classes['multiple_select'] = MultipleSelect
        Form._parse_fields = _parse_fields
 def setup_class(cls):
     search.clear()
     cls.tsi = TestSearchIndexer()
     DguCreateTestData.create_dgu_test_data()
     DguCreateTestData.create_arbitrary({'name': 'latest',
                                         'notes': '<b>Latest</b> dataset.',
                                         'groups': ['national-health-service']})
     cls.tsi.index()
示例#10
0
 def setup_class(cls):
     search.clear()
     cls.tsi = TestSearchIndexer()
     DguCreateTestData.create_dgu_test_data()
     DguCreateTestData.create_arbitrary(
         {"name": "latest", "notes": "<b>Latest</b> dataset.", "groups": ["national-health-service"]}
     )
     cls.tsi.index()
示例#11
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     cls.pkg_name = DguCreateTestData.form_package().name
     cls.pkg_id = DguCreateTestData.form_package().id
     cls.extra_environ_editor = {"Authorization": str(model.User.by_name("nhseditor").apikey)}
     cls.extra_environ_admin = {"Authorization": str(model.User.by_name("nhsadmin").apikey)}
     cls.extra_environ_sysadmin = {"Authorization": str(model.User.by_name("sysadmin").apikey)}
     cls.context = {"model": model, "session": model.Session, "user": ""}
示例#12
0
 def setup_class(cls):
     search.clear()
     cls.tsi = TestSearchIndexer()
     DguCreateTestData.create_dgu_test_data()
     DguCreateTestData.create_arbitrary({'name': 'latest',
                                         'notes': '<b>Latest</b> dataset.',
                                         'groups': ['national-health-service']})
     cls.tsi.index()
    def test_basic_dataset(self):
        DguCreateTestData.create_dgu_test_data()
        pkg_name = DguCreateTestData.form_package().name
        context = {'model': model, 'session': model.Session,
                   'user': '******'}

        pkg = get_action('package_show')(context, {'id': pkg_name})
        get_action('package_update')(context, pkg)
    def test_1_edit_publisher(self):
        # Load form
        publisher_name = 'national-health-service'
        group = model.Group.by_name(publisher_name)
        offset = url_for('/publisher/edit/%s' % publisher_name)
        res = self.app.get(offset, status=200, extra_environ={'REMOTE_USER': '******'})
        assert 'Edit Publisher' in res, res
        form = res.forms[1]
        # TODO assert_equal(form['title'].value, 'National Health Service')
        assert_equal(form['name'].value, 'national-health-service')
        assert_equal(form['description'].value, '')
        # TODO assert_equal(form['parent'].value, 'dept-health')
        assert_equal(form['contact-name'].value, '')
        assert_equal(form['contact-email'].value, '*****@*****.**')
        assert_equal(form['foi-name'].value, '')
        assert_equal(form['foi-email'].value, '')
        assert_equal(form['foi-web'].value, '')
        assert_equal(form['category'].value, 'grouping')
        assert_equal(form['abbreviation'].value, 'NHS')

        # Make edit
        publisher_name = 'new-name'
        form['name'] = publisher_name
        form['description'] = 'New description'
        form['contact-name'] = 'Head of Comms'
        form['contact-email'] = '*****@*****.**'
        form['contact-phone'] = '01234 4567890'
        form['foi-name'] = 'Head of FOI Comms'
        form['foi-email'] = '*****@*****.**'
        form['foi-phone'] = '0845 4567890'
        form['foi-web'] = 'http://whatdotheyknow.com'
        form['category'] = 'non-ministerial-department'
        form['abbreviation'] = 'nhs'
        res = form.submit('save', status=302, extra_environ={'REMOTE_USER': '******'})

        # The return value is /organization, which routing then redirects to publisher
        assert_equal(res.header_dict['Location'], 'http://localhost/organization/new-name')

        # Check saved object
        publisher = model.Group.by_name(publisher_name)

        assert_equal(publisher.description, 'New description')
        assert_equal(publisher.extras['contact-name'], 'Head of Comms')
        assert_equal(publisher.extras['contact-email'], '*****@*****.**')
        assert_equal(publisher.extras['contact-phone'], '01234 4567890')
        assert_equal(publisher.extras['foi-name'], 'Head of FOI Comms')
        assert_equal(publisher.extras['foi-email'], '*****@*****.**')
        assert_equal(publisher.extras['foi-phone'], '0845 4567890')
        assert_equal(publisher.extras['foi-web'], 'http://whatdotheyknow.com')
        assert_equal(publisher.extras['category'], 'non-ministerial-department')
        assert_equal(publisher.extras['abbreviation'], 'nhs')

        # restore name for other tests
        #model.repo.new_revision()
        #publisher.name = 'national-health-service'
        #model.repo.commit_and_remove()
        model.repo.rebuild_db()
        DguCreateTestData.create_dgu_test_data()
示例#15
0
    def test_5_appoint_editor(self):
        publisher_name = 'national-health-service'

        def check_related_publisher_properties():
            group = model.Group.by_name(publisher_name)
            # datasets
            assert_equal(set([grp.name for grp in group.active_packages()]),
                         set([u'directgov-cota']))
            # parents
            child_groups = [
                grp.name for grp in model.Group.by_name(
                    'dept-health').get_children_groups('organization')
            ]
            assert publisher_name in child_groups, child_groups

        check_related_publisher_properties()

        DguCreateTestData.create_user(name='test_user')
        assert model.User.by_name(u'test_user')
        # Load form
        group = model.Group.by_name(unicode(publisher_name))
        offset = url_for('/publisher/users/%s' % publisher_name)
        res = self.app.get(offset,
                           status=200,
                           extra_environ={'REMOTE_USER': '******'})
        assert 'Users: %s' % group.title in res, res
        form = res.forms[0]
        assert_equal(form['users__0__name'].value, 'nhsadmin')
        assert_equal(form['users__0__capacity'].value, 'admin')
        assert_equal(form['users__1__name'].value, 'nhseditor')
        assert_equal(form['users__1__capacity'].value, 'editor')
        assert_equal(form['users__2__name'].value, 'user_d101')
        assert_equal(form['users__2__capacity'].value, 'editor')
        assert_equal(form['users__3__name'].value, '')

        # Edit the form
        form['users__3__name'] = 'test_user'
        res = form.submit('save',
                          status=302,
                          extra_environ={'REMOTE_USER': '******'})
        assert_equal(res.header_dict['Location'],
                     'http://localhost/publisher/national-health-service')

        # Check saved object
        group = model.Group.by_name(unicode(publisher_name))
        assert_equal(
            set([
                user.name
                for user in group.members_of_type(model.User, capacity='admin')
            ]), set(('nhsadmin', )))
        assert_equal(
            set([
                user.name for user in group.members_of_type(model.User,
                                                            capacity='editor')
            ]), set(('nhseditor', 'user_d101', 'test_user')))

        check_related_publisher_properties()
示例#16
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     DguCreateTestData.create_arbitrary({'name': 'latest',
                                         'notes': '<b>Latest</b> dataset.',
                                         'tags': ['tag1', 'tag2'],
                                         'extras': {'key': 'value'},
                                         'groups': ['national-health-service']})
     cls._assert_revision_created()
     model.Session.remove() # ensure last revision appears
示例#17
0
    def test_basic_dataset(self):
        DguCreateTestData.create_dgu_test_data()
        pkg_name = DguCreateTestData.form_package().name
        extra_environ_editor = {"Authorization": str(model.User.by_name("nhseditor").apikey)}

        result = self.app.get("/api/action/package_show?id=%s" % pkg_name, status=200)
        pkg = json.loads(result.body)["result"]
        postparams = "%s=1" % json.dumps(pkg)
        result = self.app.post(
            "/api/action/package_update", postparams, status=[200], extra_environ=extra_environ_editor
        )
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     cls.pkg_name = DguCreateTestData.form_package().name
     cls.pkg_id = DguCreateTestData.form_package().id
     cls.extra_environ_editor = {
         'Authorization': str(model.User.by_name('nhseditor').apikey)}
     cls.extra_environ_admin = {
         'Authorization': str(model.User.by_name('nhsadmin').apikey)}
     cls.extra_environ_sysadmin = {
         'Authorization': str(model.User.by_name('sysadmin').apikey)}
     cls.context = {'model': model, 'session': model.Session,
                    'user': ''}
    def setup_class(cls):
        DguCreateTestData.create_dgu_test_data()
        DguCreateTestData.create_arbitrary({'name': 'latest',
                                            'notes': '<b>Latest</b> dataset.',
                                            'tags': ['tag1', 'tag2'],
                                            'extras': {'key': 'value'},
                                            'groups': ['national-health-service']})
        cls._assert_revision_created()
        model.Session.remove() # ensure last revision appears

        from ckanext.archiver.model import init_tables
        init_tables(model.meta.engine)
示例#20
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     cls.pkg_name = DguCreateTestData.form_package().name
     cls.pkg_id = DguCreateTestData.form_package().id
     cls.extra_environ_editor = {
         'Authorization': str(model.User.by_name('nhseditor').apikey)}
     cls.extra_environ_admin = {
         'Authorization': str(model.User.by_name('nhsadmin').apikey)}
     cls.extra_environ_sysadmin = {
         'Authorization': str(model.User.by_name('sysadmin').apikey)}
     cls.context = {'model': model, 'session': model.Session,
                    'user': ''}
    def test_basic_dataset(self):
        DguCreateTestData.create_dgu_test_data()
        pkg_name = DguCreateTestData.form_package().name
        extra_environ_editor = {
            'Authorization': str(model.User.by_name('nhseditor').apikey)}

        result = self.app.get('/api/action/package_show?id=%s' % pkg_name,
                              status=200)
        pkg = json.loads(result.body)['result']
        postparams = '%s=1' % json.dumps(pkg)
        result = self.app.post('/api/action/package_update',
                               postparams, status=[200],
                               extra_environ=extra_environ_editor)
示例#22
0
    def setup_class(cls):
        DguCreateTestData.create_dgu_test_data()
        DguCreateTestData.create_arbitrary(
            {
                "name": "latest",
                "notes": "<b>Latest</b> dataset.",
                "tags": ["tag1", "tag2"],
                "extras": {"key": "value"},
                "groups": ["national-health-service"],
            }
        )
        cls._assert_revision_created()
        model.Session.remove()  # ensure last revision appears

        from ckanext.archiver.model import init_tables

        init_tables(model.meta.engine)
    def test_5_appoint_editor(self):
        publisher_name = 'national-health-service'
        def check_related_publisher_properties():
            group = model.Group.by_name(publisher_name)
            # datasets
            assert_equal(set([grp.name for grp in group.packages()]),
                         set([u'directgov-cota']))
            # parents
            child_groups = [grp.name for grp in model.Group.by_name('dept-health').get_children_groups('organization')]
            assert publisher_name in child_groups, child_groups

        check_related_publisher_properties()

        DguCreateTestData.create_user(name='test_user')
        assert model.User.by_name(u'test_user')
        # Load form
        group = model.Group.by_name(unicode(publisher_name))
        offset = url_for('/publisher/users/%s' % publisher_name)
        res = self.app.get(offset, status=200, extra_environ={'REMOTE_USER': '******'})
        assert 'Edit User Permissions' in res, res
        form = res.forms[1]
        assert_equal(form['users__0__name'].value, 'nhsadmin')
        assert_equal(form['users__0__capacity'].value, 'admin')
        assert_equal(form['users__1__name'].value, 'nhseditor')
        assert_equal(form['users__1__capacity'].value, 'editor')
        assert_equal(form['users__2__name'].value, 'user_d101')
        assert_equal(form['users__2__capacity'].value, 'editor')
        assert_equal(form['users__3__name'].value, '')

        # Edit the form
        form['users__3__name'] = 'test_user'
        res = form.submit('save', status=302, extra_environ={'REMOTE_USER': '******'})
        assert_equal(res.header_dict['Location'], 'http://localhost/publisher/national-health-service')

        # Check saved object
        group = model.Group.by_name(unicode(publisher_name))
        assert_equal(set([user.name for user in group.members_of_type(model.User, capacity='admin')]),
                     set(('nhsadmin',)))
        assert_equal(set([user.name for user in group.members_of_type(model.User, capacity='editor')]),
                     set(('nhseditor', 'user_d101', 'test_user')))

        check_related_publisher_properties()
示例#24
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     cls.publisher_controller = 'ckanext.dgu.controllers.publisher:PublisherController'
     SmtpServerHarness.setup_class()
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     model.repo.new_revision()
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     cls.publisher_controller = 'ckanext.dgu.controllers.publisher:PublisherController'
     SmtpServerHarness.setup_class()
示例#27
0
 def setup_class(cls):
     PylonsTestCase.setup_class()
     DguCreateTestData.create_dgu_test_data()
示例#28
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
示例#29
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     cls.inv_controller = 'ckanext.dgu.controllers.inventory:InventoryController'
示例#30
0
 def setup_class(cls):
     helpers.reset_db()
     PylonsTestCase.setup_class()
     DguCreateTestData.create_dgu_test_data()
示例#31
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
     cls.inv_controller = 'ckanext.dgu.controllers.inventory:InventoryController'
示例#32
0
 def setup_class(cls):
     cls._form_client = _PackageFormClient()
     DguCreateTestData.create_dgu_test_data()
示例#33
0
 def setup_class(cls):
     DguCreateTestData.create_dgu_test_data()
示例#34
0
    def test_1_edit_publisher(self):
        # Load form
        publisher_name = 'national-health-service'
        group = model.Group.by_name(publisher_name)
        offset = url_for('/publisher/edit/%s' % publisher_name)
        res = self.app.get(offset,
                           status=200,
                           extra_environ={'REMOTE_USER': '******'})
        assert 'Edit: %s' % group.title in res, res
        form = res.forms[0]
        # TODO assert_equal(form['title'].value, 'National Health Service')
        assert_equal(form['name'].value, 'national-health-service')
        assert_equal(form['description'].value, '')
        # TODO assert_equal(form['parent'].value, 'dept-health')
        assert_equal(form['contact-name'].value, '')
        assert_equal(form['contact-email'].value, '*****@*****.**')
        assert_equal(form['foi-name'].value, '')
        assert_equal(form['foi-email'].value, '')
        assert_equal(form['foi-web'].value, '')
        assert_equal(form['category'].value, 'grouping')
        assert_equal(form['abbreviation'].value, 'NHS')

        # Make edit
        publisher_name = 'new-name'
        form['name'] = publisher_name
        form['description'] = 'New description'
        form['contact-name'] = 'Head of Comms'
        form['contact-email'] = '*****@*****.**'
        form['contact-phone'] = '01234 4567890'
        form['foi-name'] = 'Head of FOI Comms'
        form['foi-email'] = '*****@*****.**'
        form['foi-phone'] = '0845 4567890'
        form['foi-web'] = 'http://whatdotheyknow.com'
        form['category'] = 'alb'
        form['abbreviation'] = 'nhs'
        res = form.submit('save',
                          status=302,
                          extra_environ={'REMOTE_USER': '******'})
        assert_equal(res.header_dict['Location'],
                     'http://localhost/publisher/new-name')

        # Check saved object
        publisher = model.Group.by_name(publisher_name)

        assert_equal(publisher.description, 'New description')
        assert_equal(publisher.extras['contact-name'], 'Head of Comms')
        assert_equal(publisher.extras['contact-email'], '*****@*****.**')
        assert_equal(publisher.extras['contact-phone'], '01234 4567890')
        assert_equal(publisher.extras['foi-name'], 'Head of FOI Comms')
        assert_equal(publisher.extras['foi-email'], '*****@*****.**')
        assert_equal(publisher.extras['foi-phone'], '0845 4567890')
        assert_equal(publisher.extras['foi-web'], 'http://whatdotheyknow.com')
        assert_equal(publisher.extras['category'], 'alb')
        assert_equal(publisher.extras['abbreviation'], 'nhs')

        # restore name for other tests
        #model.repo.new_revision()
        #publisher.name = 'national-health-service'
        #model.repo.commit_and_remove()
        model.repo.rebuild_db()
        DguCreateTestData.create_dgu_test_data()
示例#35
0
 def assert_rejects_date(self, field_name, date_str):
     data = {field_name: date_str}
     response = self._form_client.post_form(data, id=DguCreateTestData.old_form_package().id)
     assert "Cannot parse form date" in response.body or \
            "Date error reading in format" in response.body, response.body
示例#36
0
 def setup_class(cls):
     PylonsTestCase.setup_class()
     DguCreateTestData.create_dgu_test_data()
示例#37
0
 def setup_class(cls):
     cls._form_client = _PackageFormClient()
     DguCreateTestData.create_dgu_test_data()
示例#38
0
 def setup_class(cls):
     helpers.reset_db()
     PylonsTestCase.setup_class()
     DguCreateTestData.create_dgu_test_data()
示例#39
0
 def assert_rejects_date(self, field_name, date_str):
     data = {field_name: date_str}
     response = self._form_client.post_form(data, id=DguCreateTestData.old_form_package().id)
     assert (
         "Cannot parse form date" in response.body or "Date error reading in format" in response.body
     ), response.body