def test_check_field_constraints(self):
        # This test case asserts that a migration from db ver 32 up to the latest
        # db with fields that fail the constraints still functions.
        self._initStartDB(32)

        field_dict = helpers.get_dummy_field()
        field_dict['instance'] = 'reference'
        field_dict['step_id'] = None
        field_dict['field_id'] = None

        db_create_field(self.store, field_dict, u'en')

        field_dict = helpers.get_dummy_field()
        field_dict['instance'] = 'instance'

        db_create_field(self.store, field_dict, u'en')

        field_dict = helpers.get_dummy_field()
        field_dict['instance'] = 'template'
        field_dict['step_id'] = None
        fld_grp_id = self.store.find(Field, Field.fieldgroup_id
                                     is not None)[0].fieldgroup_id
        field_dict['field_id'] = fld_grp_id

        db_create_field(self.store, field_dict, u'en')
        self.store.commit()

        ret = perform_system_update()
        shutil.rmtree(GLSettings.db_path)
        self.assertNotEqual(ret, -1)
示例#2
0
        def test_put(self):
            """
            Attempt to update a field, changing its type via a put request.
            """
            values = helpers.get_dummy_field()
            values['instance'] = 'instance'
            context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
            values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
            field = yield create_field(values, 'en')

            updated_sample_field = helpers.get_dummy_field()
            updated_sample_field['instance'] = 'instance'
            context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
            updated_sample_field['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
            updated_sample_field.update(type='inputbox')
            handler = self.request(updated_sample_field, role='admin')
            yield handler.put(field['id'])
            self.assertEqual(len(self.responses), 1)
            self.assertEqual(field['id'], self.responses[0]['id'])
            self.assertEqual(self.responses[0]['type'], 'inputbox')

            wrong_sample_field = helpers.get_dummy_field()
            values['instance'] = 'instance'
            values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
            wrong_sample_field.update(type='nonexistingfieldtype')
            handler = self.request(wrong_sample_field, role='admin')
            yield self.assertFailure(handler.put(field['id']), errors.InvalidInputFormat)
示例#3
0
    def test_post_create_from_template(self):
        """
            Attempt to create a new field from template via post request
            """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field_template = yield create_field(values, 'en')

        context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
        step_id = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])

        values = helpers.get_dummy_field()
        values['instance'] = 'reference'
        values['template_id'] = field_template['id']
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])

        handler = self.request(values, role='admin')
        yield handler.post()
        self.assertEqual(len(self.responses), 1)

        resp, = self.responses
        self.assertIn('id', resp)
        self.assertNotEqual(resp.get('options'), None)
示例#4
0
    def test_put(self):
        """
            Attempt to update a field, changing its type via a put request.
            """
        values = helpers.get_dummy_field()
        values['instance'] = 'instance'
        context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])
        field = yield create_field(values, 'en')

        updated_sample_field = helpers.get_dummy_field()
        updated_sample_field['instance'] = 'instance'
        context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
        updated_sample_field[
            'step_id'] = yield get_id_of_first_step_of_questionnaire(
                context['questionnaire_id'])
        updated_sample_field.update(type='inputbox')
        handler = self.request(updated_sample_field, role='admin')
        yield handler.put(field['id'])
        self.assertEqual(len(self.responses), 1)
        self.assertEqual(field['id'], self.responses[0]['id'])
        self.assertEqual(self.responses[0]['type'], 'inputbox')

        wrong_sample_field = helpers.get_dummy_field()
        values['instance'] = 'instance'
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])
        wrong_sample_field.update(type='nonexistingfieldtype')
        handler = self.request(wrong_sample_field, role='admin')
        yield self.assertFailure(handler.put(field['id']),
                                 errors.InvalidInputFormat)
示例#5
0
    def test_check_field_constraints(self):
        # This test case asserts that a migration from db ver 32 up to 34 with
        # fields that fail the constraints still functions.
        self._initStartDB(32)

        field_dict = helpers.get_dummy_field()
        field_dict['instance'] = 'reference'
        field_dict['step_id'] = None
        field_dict['field_id'] = None

        db_create_field(self.store, field_dict, u'en')

        field_dict = helpers.get_dummy_field()
        field_dict['instance'] = 'instance'

        db_create_field(self.store, field_dict, u'en')

        field_dict = helpers.get_dummy_field()
        field_dict['instance'] = 'template'
        field_dict['step_id'] = None
        fld_grp_id = self.store.find(Field, Field.fieldgroup_id is not None)[0].fieldgroup_id
        field_dict['field_id'] = fld_grp_id

        db_create_field(self.store, field_dict, u'en')
        self.store.commit()

        ret = perform_system_update()
        shutil.rmtree(GLSettings.db_path)
        self.assertNotEqual(ret, -1)
示例#6
0
    def test_put(self):
        """
        Attempt to update a field, changing its type via a put request.
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'instance'
        context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en')
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
        field = yield create_field(1, values, 'en')

        updated_sample_field = helpers.get_dummy_field()
        updated_sample_field['instance'] = 'instance'
        context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en')
        updated_sample_field['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
        updated_sample_field.update(type=u'inputbox', options=[], x=3, y=3)

        handler = self.request(updated_sample_field, role='admin')
        response = yield handler.put(field['id'])

        self.assertEqual(field['id'], response['id'])
        self.assertEqual(3, response['x'])
        self.assertEqual(3, response['y'])

        wrong_sample_field = helpers.get_dummy_field()
        values['instance'] = 'instance'
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
        wrong_sample_field.update(type='nonexistingfieldtype')
        handler = self.request(wrong_sample_field, role='admin')

        self.assertRaises(errors.InputValidationError, handler.put, field['id'])
示例#7
0
    def test_put(self):
        """
        Attempt to update a field, changing its type via a put request.
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field = yield create_field(1, values, 'en')

        updated_sample_field = helpers.get_dummy_field()
        updated_sample_field['instance'] = 'template'
        updated_sample_field['type'] = 'inputbox'
        updated_sample_field['options'] = []
        updated_sample_field['x'] = 3
        updated_sample_field['y'] = 3

        handler = self.request(updated_sample_field, role='admin')
        response = yield handler.put(field['id'])
        self.assertEqual(field['id'], response['id'])
        self.assertEqual(3, response['x'])
        self.assertEqual(3, response['y'])

        wrong_sample_field = helpers.get_dummy_field()
        wrong_sample_field.update(type='nonexistingfieldtype')
        handler = self.request(wrong_sample_field, role='admin')

        self.assertRaises(errors.InputValidationError, handler.put, field['id'])
示例#8
0
    def test_get(self):
        """
        Retrieve a list of all fields, and verify that they do exist in the
        database.
        """
        n = 3
        ids = []
        for _ in range(n):
            values = helpers.get_dummy_field()
            values['instance'] = 'template'
            handler = self.request(values, role='admin')
            response = yield handler.post()
            ids.append(response['id'])

        handler = self.request(role='admin')
        fields = yield handler.get()

        check_ids = [field.get('id') for field in fields]
        self.assertGreater(len(fields), n)
        self.assertNotIn(None, ids)

        for x in ids:
            self.assertIn(x, check_ids)

        # check tha childrens are not present in the list
        # as the list should contain only parents fields
        for field in fields:
            for child in field['children']:
                self.assertNotIn(child, ids)
示例#9
0
        def test_get(self):
            """
            Retrieve a list of all fields, and verify that they do exist in the
            database.
            """
            n = 3
            ids = []
            for i in range(3):
                values = helpers.get_dummy_field()
                values['instance'] = 'template'
                handler = self.request(values, role='admin')
                yield handler.post()
                ids.append(self.responses[i]['id'])

            self.responses = []
            handler = self.request(role='admin')
            yield handler.get()
            fields, = self.responses

            check_ids = [field.get('id') for field in fields]
            types = [field.get('type') for field in fields]
            self.assertGreater(len(fields), 3)
            self.assertNotIn(None, ids)

            for x in ids:
                self.assertIn(x, check_ids)

            # check tha childrens are not present in the list
            # as the list should contain only parents fields
            for field in fields:
                for child in field['children']:
                    self.assertNotIn(child, ids)
示例#10
0
 def test_post(self):
     """
     Attempt to create a new field via a post request.
     """
     values = helpers.get_dummy_field()
     values['instance'] = 'template'
     handler = self.request(values, role='admin')
     response = yield handler.post()
     self.assertIn('id', response)
     self.assertNotEqual(response.get('options'), None)
示例#11
0
    def test_post_create_from_template(self):
        """
        Attempt to create a new field from template via post request
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field_template = yield create_field(1, values, 'en')

        context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en')

        values = helpers.get_dummy_field()
        values['instance'] = 'reference'
        values['template_id'] = field_template['id']
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])

        handler = self.request(values, role='admin')
        response = yield handler.post()
        self.assertIn('id', response)
        self.assertNotEqual(response.get('options'), None)
示例#12
0
 def test_post(self):
     """
     Attempt to create a new field via a post request.
     """
     values = helpers.get_dummy_field()
     values['instance'] = 'template'
     handler = self.request(values, role='admin')
     response = yield handler.post()
     self.assertIn('id', response)
     self.assertNotEqual(response.get('options'), None)
示例#13
0
    def test_delete(self):
        """
        Create a new field template, then attempt to delete it.
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field = yield create_field(1, values, 'en')

        handler = self.request(role='admin')
        yield handler.delete(field['id'])
示例#14
0
    def test_delete(self):
        """
        Create a new field template, then attempt to delete it.
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field = yield create_field(1, values, 'en')

        handler = self.request(role='admin')
        yield handler.delete(field['id'])
示例#15
0
    def test_get(self):
        """
            Create a new field, the get it back using the receieved id.
            """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field = yield create_field(values, 'en')

        handler = self.request(role='admin')
        response = yield handler.get(field['id'])
        self.assertEqual(field['id'], response['id'])
示例#16
0
        def test_get(self):
            """
            Create a new field, the get it back using the receieved id.
            """
            values = helpers.get_dummy_field()
            values['instance'] = 'template'
            field = yield create_field(values, 'en')

            handler = self.request(role='admin')
            yield handler.get(field['id'])
            self.assertEqual(len(self.responses), 1)
            self.assertEqual(field['id'], self.responses[0]['id'])
示例#17
0
    def test_delete(self):
        """
        Create a new field, then attempt to delete it.
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'instance'
        context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en')
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
        field = yield create_field(1, values, 'en')

        handler = self.request(role='admin')
        yield handler.delete(field['id'])
示例#18
0
 def test_post(self):
     """
     Attempt to create a new field via a post request.
     """
     values = helpers.get_dummy_field()
     values['instance'] = 'instance'
     context = yield create_context(1, self.dummyContext, 'en')
     values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
     handler = self.request(values, role='admin')
     response = yield handler.post()
     self.assertIn('id', response)
     self.assertNotEqual(response.get('options'), None)
示例#19
0
        def test_put(self):
            """
            Attempt to update a field, changing its type via a put request.
            """
            values = helpers.get_dummy_field()
            values['instance'] = 'template'
            field = yield create_field(values, 'en')

            updated_sample_field = helpers.get_dummy_field()
            updated_sample_field['instance'] = 'template'
            updated_sample_field['type'] ='inputbox'
            handler = self.request(updated_sample_field, role='admin')
            yield handler.put(field['id'])
            self.assertEqual(len(self.responses), 1)
            self.assertEqual(field['id'], self.responses[0]['id'])
            self.assertEqual(self.responses[0]['type'], 'inputbox')

            wrong_sample_field = helpers.get_dummy_field()
            wrong_sample_field.update(type='nonexistingfieldtype')
            handler = self.request(wrong_sample_field, role='admin')
            yield self.assertFailure(handler.put(field['id']), errors.InvalidInputFormat)
示例#20
0
    def test_put(self):
        """
            Attempt to update a field, changing its type via a put request.
            """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field = yield create_field(values, 'en')

        updated_sample_field = helpers.get_dummy_field()
        updated_sample_field['instance'] = 'template'
        updated_sample_field['type'] = 'inputbox'
        handler = self.request(updated_sample_field, role='admin')
        response = yield handler.put(field['id'])
        self.assertEqual(field['id'], response['id'])
        self.assertEqual(response['type'], 'inputbox')

        wrong_sample_field = helpers.get_dummy_field()
        wrong_sample_field.update(type='nonexistingfieldtype')
        handler = self.request(wrong_sample_field, role='admin')

        self.assertRaises(errors.InvalidInputFormat, handler.put, field['id'])
示例#21
0
    def test_delete(self):
        """
            Create a new field template, then attempt to delete it.
            """
        values = helpers.get_dummy_field()
        values['instance'] = 'template'
        field = yield create_field(values, 'en')

        handler = self.request(role='admin')
        yield handler.delete(field['id'])
        # second deletion operation should fail
        yield self.assertFailure(handler.delete(field['id']),
                                 errors.FieldIdNotFound)
示例#22
0
 def test_post(self):
     """
     Attempt to create a new field via a post request.
     """
     values = helpers.get_dummy_field()
     values['instance'] = 'instance'
     context = yield create_context(1, self.dummyContext, 'en')
     values['step_id'] = yield get_id_of_first_step_of_questionnaire(
         context['questionnaire_id'])
     handler = self.request(values, role='admin')
     response = yield handler.post()
     self.assertIn('id', response)
     self.assertNotEqual(response.get('options'), None)
示例#23
0
    def test_put(self):
        """
        Attempt to update a field, changing its type via a put request.
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'instance'
        context = yield create_context(self.state, 1,
                                       copy.deepcopy(self.dummyContext), 'en')
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])
        field = yield create_field(1, values, 'en')

        updated_sample_field = helpers.get_dummy_field()
        updated_sample_field['instance'] = 'instance'
        context = yield create_context(self.state, 1,
                                       copy.deepcopy(self.dummyContext), 'en')
        updated_sample_field[
            'step_id'] = yield get_id_of_first_step_of_questionnaire(
                context['questionnaire_id'])
        updated_sample_field.update(type=u'inputbox', options=[], x=3, y=3)

        handler = self.request(updated_sample_field, role='admin')
        response = yield handler.put(field['id'])

        self.assertEqual(field['id'], response['id'])
        self.assertEqual(3, response['x'])
        self.assertEqual(3, response['y'])
        # assert that it is impossible to change field type
        self.assertEqual(response['type'], 'multichoice')

        wrong_sample_field = helpers.get_dummy_field()
        values['instance'] = 'instance'
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])
        wrong_sample_field.update(type='nonexistingfieldtype')
        handler = self.request(wrong_sample_field, role='admin')

        self.assertRaises(errors.InputValidationError, handler.put,
                          field['id'])
示例#24
0
    def test_delete(self):
        """
        Create a new field, then attempt to delete it.
        """
        values = helpers.get_dummy_field()
        values['instance'] = 'instance'
        context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])
        field = yield create_field(values, 'en')

        handler = self.request(role='admin')
        yield handler.delete(field['id'])
示例#25
0
        def test_delete(self):
            """
            Create a new field template, then attempt to delete it.
            """
            values = helpers.get_dummy_field()
            values['instance'] = 'template'
            field = yield create_field(values, 'en')

            handler = self.request(role='admin')
            yield handler.delete(field['id'])
            self.assertEqual(handler.get_status(), 200)
            # second deletion operation should fail
            yield self.assertFailure(handler.delete(field['id']), errors.FieldIdNotFound)
示例#26
0
    def test_get(self):
        """
            Create a new field, then get it back using the received id.
            """
        values = helpers.get_dummy_field()
        values['instance'] = 'instance'
        context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])
        field = yield create_field(values, 'en')

        handler = self.request(role='admin')
        response = yield handler.get(field['id'])
        self.assertEqual(field['id'], response['id'])
示例#27
0
        def test_get(self):
            """
            Create a new field, then get it back using the received id.
            """
            values = helpers.get_dummy_field()
            values['instance'] = 'instance'
            context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
            values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
            field = yield create_field(values, 'en')

            handler = self.request(role='admin')
            yield handler.get(field['id'])
            self.assertEqual(len(self.responses), 1)
            self.assertEqual(field['id'], self.responses[0]['id'])
示例#28
0
        def test_delete(self):
            """
            Create a new field, then attempt to delete it.
            """
            values = helpers.get_dummy_field()
            values['instance'] = 'instance'
            context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
            values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id'])
            field = yield create_field(values, 'en')

            handler = self.request(role='admin')
            yield handler.delete(field['id'])
            self.assertEqual(handler.get_status(), 200)
            # second deletion operation should fail
            yield self.assertFailure(handler.delete(field['id']), errors.FieldIdNotFound)
示例#29
0
    def test_delete(self):
        """
            Create a new field, then attempt to delete it.
            """
        values = helpers.get_dummy_field()
        values['instance'] = 'instance'
        context = yield create_context(copy.deepcopy(self.dummyContext), 'en')
        values['step_id'] = yield get_id_of_first_step_of_questionnaire(
            context['questionnaire_id'])
        field = yield create_field(values, 'en')

        handler = self.request(role='admin')
        yield handler.delete(field['id'])
        # second deletion operation should fail
        yield self.assertFailure(handler.delete(field['id']),
                                 errors.FieldIdNotFound)