コード例 #1
0
def test_permission_for_spec_directories(simple_config, route, permission,
                                         status) -> None:
    """Allow (200) or deny (403) access to the spec/explorer view."""
    with tempfile.TemporaryDirectory() as directory:
        spec_name = os.path.join(directory, "openapi.yaml")
        spec_paths_name = os.path.join(directory, "paths.yaml")
        with open(spec_name, "wb") as f:
            f.write(SPLIT_OPENAPI_YAML)
        with open(spec_paths_name, "wb") as f:
            f.write(SPLIT_PATHS_YAML)

        simple_config.pyramid_openapi3_spec_directory(
            spec_name,
            route="/api/v1/spec",
            route_name="api_spec",
            permission=permission,
        )
        simple_config.pyramid_openapi3_add_explorer(
            route="/api/v1/",
            route_name="api_explorer",
            permission=permission,
        )
        simple_config.add_route("foo", "/foo")

        testapp = TestApp(simple_config.make_wsgi_app())

        testapp.get(route, status=status)
コード例 #2
0
ファイル: test_main.py プロジェクト: brnsmns13/se329
class ResponsePageTestCase(DatastoreBaseCase):
    def setUp(self):
        super(ResponsePageTestCase, self).setUp()
        self.app = TestApp(application)

    def test_get(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        resp = self.app.get('/respond')

        resp.mustcontain(
            '<h1>Respond to a Quiz</h1>',
            '<input name="pin" id="pin" class="form-control" type="number" '
            'value="0">',
            '<h4>Current User: [email protected]</h4>',
            '<h4>Submitted Response: </h4>')

    def test_get_login_required(self):
        resp = self.app.get('/respond', status=302)

        resp.mustcontain(no=[
            '<h1>Respond to a Quiz</h1>',
            '<input name="pin" id="pin" class="form-control" type="number" '
            'value="0">',
            '<h4>Current User: [email protected]</h4>',
            '<h4>Submitted Response: </h4>'])

    def test_post(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        resp = self.app.post('/respond?pin=7&answer=B')

        resp.mustcontain(
            '<h1>Respond to a Quiz</h1>',
            '<input name="pin" id="pin" class="form-control" type="number" '
            'value="7">',
            '<h4>Current User: [email protected]</h4>',
            '<h4>Submitted Response: B</h4>')

    def test_post_no_pin(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        resp = self.app.post('/respond?answer=B')

        resp.mustcontain(
            '<h1>Respond to a Quiz</h1>',
            '<input name="pin" id="pin" class="form-control" type="number" '
            'value="-1">',
            '<h4>Current User: [email protected]</h4>',
            '<h4>Submitted Response: B</h4>')

    def test_post_login_required(self):
        resp = self.app.post('/respond?pin=7&answer=B', status=302)

        resp.mustcontain(no=[
            '<h1>Respond to a Quiz</h1>',
            '<input name="pin" id="pin" class="form-control" type="number" '
            'value="7">',
            '<h4>Current User: [email protected]</h4>',
            '<h4>Submitted Response: B</h4>'])
コード例 #3
0
def test_permission_for_specs(route, permission, status) -> None:
    """Allow (200) or deny (403) access to the spec/explorer view."""
    with tempfile.NamedTemporaryFile() as document:
        document.write(OPENAPI_YAML.encode())
        document.seek(0)

        testapp = TestApp(app(document.name, permission))

        testapp.get(route, status=status)
コード例 #4
0
ファイル: test_main.py プロジェクト: brnsmns13/se329
class UserPageTestCase(DatastoreBaseCase):
    def setUp(self):
        super(UserPageTestCase, self).setUp()
        self.app = TestApp(application)

    def test_get(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        resp = self.app.get('/user')

        resp.mustcontain(
            '<h1>User Page</h1>')

    def test_get_login_required(self):
        resp = self.app.get('/user', status=302)

        resp.mustcontain(no=[
            '<h1>User Page</h1>'])
コード例 #5
0
ファイル: test_main.py プロジェクト: brnsmns13/se329
class DashboardPageTestCase(DatastoreBaseCase):
    def setUp(self):
        super(DashboardPageTestCase, self).setUp()
        self.app = TestApp(application)

    def test_get(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        resp = self.app.get('/home')

        resp.mustcontain(
            '<h1>Dashboard</h1>',
            '<h3>Welcome [email protected]</h3>')

    def test_get_login_required(self):
        resp = self.app.get('/home', status=302)

        resp.mustcontain(no=[
            '<h1>Dashboard</h1>',
            '<h3>Welcome [email protected]</h3>'])
コード例 #6
0
ファイル: test_main.py プロジェクト: brnsmns13/se329
class AboutPageTestCase(DatastoreBaseCase):
    def setUp(self):
        super(AboutPageTestCase, self).setUp()
        self.app = TestApp(application)

    def test_get(self):
        resp = self.app.get('/')

        resp.mustcontain(
            '<h1>Welcome to Clicker</h1>',
            '<li><a href="{url}">Login</a></li>'.format(
                url=users.create_login_url('/home')))
コード例 #7
0
ファイル: debug_ttw.py プロジェクト: ZeitOnline/briefkasten
def submit_attachment(url, message, attachments):
    click.echo('running against %s!' % url)
    # files = [('attachments', (attachment, open(path.abspath(attachment)))) for attachment in attachments]
    browser = TestApp(url)
    submit_page = browser.get('/briefkasten/')
    submit_form = submit_page.forms['briefkasten-form']
    submit_form['message'] = u'Hello there'
    try:
        response = submit_form.submit()
        import pdb; pdb.set_trace()
        click.echo(u'Got %s' % response.url)
    except AppError as exc:
        click.echo(u'Oops %s' % exc)
コード例 #8
0
ファイル: debug_ttw.py プロジェクト: asconix-old/briefkasten
def submit_attachment(url, message, attachments):
    click.echo('running against %s!' % url)
    # files = [('attachments', (attachment, open(path.abspath(attachment)))) for attachment in attachments]
    browser = TestApp(url)
    submit_page = browser.get('/briefkasten/')
    submit_form = submit_page.forms['briefkasten-form']
    submit_form['message'] = u'Hello there'
    try:
        response = submit_form.submit()
        import pdb
        pdb.set_trace()
        click.echo(u'Got %s' % response.url)
    except AppError as exc:
        click.echo(u'Oops %s' % exc)
コード例 #9
0
def test_permission_for_specs(simple_config, route, permission,
                              status) -> None:
    """Allow (200) or deny (403) access to the spec/explorer view."""
    with tempfile.NamedTemporaryFile() as document:
        document.write(OPENAPI_YAML.encode())
        document.seek(0)

        simple_config.pyramid_openapi3_spec(
            document.name,
            route="/api/v1/openapi.yaml",
            route_name="api_spec",
            permission=permission,
        )
        simple_config.pyramid_openapi3_add_explorer(
            route="/api/v1/",
            route_name="api_explorer",
            permission=permission,
        )
        simple_config.add_route("foo", "/foo")

        testapp = TestApp(simple_config.make_wsgi_app())

        testapp.get(route, status=status)
コード例 #10
0
    class DummyAppProxy():
        """The wrapper for actual dummy app.

        Adds `switch_target()` to change subdomain via extra_environ.
        """
        def __init__(self, extra_environ) -> None:
            self.extra_environ = extra_environ
            self._app = None

            self._format()  # default example.org (not console.example.org)

        def _format(self, subdomain=None) -> None:
            if self._app is None:
                self._app = TestApp(router, extra_environ=self.extra_environ)
            domain = self.extra_environ['SERVER_NAME']
            if subdomain is not None:
                domain = ('{}.' + domain).format(subdomain)  # replace
                self._app.extra_environ = new_extra_environ(domain)
            else:
                self._app.extra_environ = new_extra_environ(domain)

        def switch_target(self, target=None) -> 'self':
            """Target subdomain switch utility method.

            >>> app = dummy_app.switch_target('console')
            >>> app.get('/', status=200)
            """
            self._format(subdomain=target)
            return self

        @property
        def app(self):
            return self._app.app

        def get(self, *args, **kwargs):
            return self._app.get(*args, **kwargs)

        def post(self, *args, **kwargs):
            return self._app.post(*args, **kwargs)
コード例 #11
0
def test_path_parameter_validation() -> None:
    """Test validated parameters in context factory."""

    with NamedTemporaryFile() as tempdoc:
        tempdoc.write(
            b"""\
openapi: "3.0.0"
info:
  version: "1.0.0"
  title: Foo API
paths:
  /foo/{foo_id}:
    parameters:
      - name: foo_id
        in: path
        required: true
        schema:
          type: integer
    get:
      responses:
        200:
          description: A foo
"""
        )
        tempdoc.seek(0)

        with Configurator() as config:
            config.include("pyramid_openapi3")
            config.pyramid_openapi3_spec(tempdoc.name)
            config.pyramid_openapi3_register_routes()
            config.add_route("foo_route", "/foo/{foo_id}", factory=_FooResource)
            config.add_view(_foo_view, route_name="foo_route", renderer="json")
            app = config.make_wsgi_app()
            test_app = TestApp(app)
            resp = test_app.get("/foo/1")
            assert resp.json == 1
コード例 #12
0
ファイル: test_main.py プロジェクト: brnsmns13/se329
class QuizPageTestCase(DatastoreBaseCase):
    def setUp(self):
        super(QuizPageTestCase, self).setUp()
        q1 = Question(
            question='Test Question 1',
            answers={
                'A': 'First Answer',
                'B': 'Second Answer'
            },
            correct_answer='B')

        q2 = Question(
            question='Test Question 2',
            answers={
                'A': 'An Answer',
                'B': 'Another Answer'
            },
            correct_answer='A')

        q3 = Question(
            question='Test Question 3',
            answers={
                'A': 'Alpha',
                'B': 'Bravo',
                'C': 'Charlie'
            },
            correct_answer='C')

        q4 = Question(
            question='Test Question 4',
            answers={
                'A': 'Good Luck'
            },
            correct_answer='B')

        Quiz(
            questions=[q1, q2],
            code=8675309,
            name='Test Quiz 1',
            userid='test.user-ID').put()

        Quiz(
            questions=[q3],
            code=1234,
            name='Test Quiz 2',
            userid='test.user-ID').put()

        Quiz(
            questions=[q4],
            code=5678,
            name='Test Quiz 3',
            userid='another.user-ID').put()

        self.app = TestApp(application)

    def test_get(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        resp = self.app.get('/quizzes')

        resp.mustcontain(
            '<h1>Quizzes</h1>',
            'Test Quiz 1',
            'Test Quiz 2',
            no=[
                'Test Quiz 3'])

    def test_get_login_required(self):
        resp = self.app.get('/quizzes', status=302)

        resp.mustcontain(
            no=[
                '<h1>Quizzes</h1>',
                'Test Quiz 1',
                'Test Quiz 2',
                'Test Quiz 3'])
コード例 #13
0
ファイル: test_main.py プロジェクト: brnsmns13/se329
class CreatePageTestCase(DatastoreBaseCase):
    def setUp(self):
        super(CreatePageTestCase, self).setUp()
        self.app = TestApp(application)

    def test_get(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        resp = self.app.get('/create')

        resp.mustcontain(
            '<h1>Create a Quiz</h1>')

    def test_get_login_required(self):
        resp = self.app.get('/create', status=302)

        resp.mustcontain(no=[
            '<h1>Create a Quiz</h1>'])

    def test_post(self):
        self.login(**DatastoreBaseCase.DEFAULT_USER)

        self.app.post('/create', params=json.dumps({
            'name': 'Test Quiz',
            'questions': [
                {
                    'question': 'Test Question 1',
                    'answers': {
                        'A': 'First Answer',
                        'B': 'Second Answer'
                    },
                    'correctAnswer': 'B'
                },
                {
                    'question': 'Test Question 2',
                    'answers': {
                        'A': 'An Answer',
                        'B': 'Another Answer'
                    },
                    'correctAnswer': 'A'
                }
            ]
        }))

        user_id = DatastoreBaseCase.DEFAULT_USER['user_id']
        result = Quiz.query(Quiz.userid == user_id).fetch()[0]

        self.assertDictEqual(result.dict, {
            'questions': [
                {
                    'question': 'Test Question 1',
                    'answers': {
                        'A': 'First Answer',
                        'B': 'Second Answer'}
                },
                {
                    'question': 'Test Question 2',
                    'answers': {
                        'A': 'An Answer',
                        'B': 'Another Answer'},
                }
            ],
            'code': None,
            'name': 'Test Quiz',
            'userid': user_id
        })

    def test_post_login_required(self):
        self.app.post('/create', status=401)

        user_id = DatastoreBaseCase.DEFAULT_USER['user_id']
        quizes = Quiz.query(Quiz.userid == user_id).fetch()
        self.assertEqual(len(quizes), 0)
コード例 #14
0
ファイル: __init__.py プロジェクト: afsana1010/sacrud
class SacrudTests(BaseSacrudTest):

    def setUp(self):

        request = testing.DummyRequest()
        config = testing.setUp(request=request)

        config.registry.settings['sqlalchemy.url'] = "sqlite:///:memory:"
        config.include('sacrud.pyramid_ext')
        settings = config.registry.settings
        settings['sacrud_models'] = (User, Profile)
        config.scan()

        from sacrud.pyramid_ext import DBSession
        engine = create_engine('sqlite:///:memory:')
        DBSession.configure(bind=engine)

        self.session = DBSession

        # To create tables, you typically do:
        #User.metadata.create_all(engine)
        User.metadata.create_all(engine)
        Profile.metadata.create_all(engine)

        self.app = config.make_wsgi_app()
        self.testapp = TestApp(self.app)

    def tearDown(self):
        def clear_files():
            for filename in glob.glob("%s/*.html" % (PHOTO_PATH, )):
                os.remove(os.path.join(PHOTO_PATH, filename))
        clear_files()
        self.session.remove()
        testing.tearDown()

    def test_home_view(self):
        self.user_add()
        request = testing.DummyRequest()
        name = route_url('sa_home', request)
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')
        self.failUnlessEqual("Tables" in response, True)
        self.failUnlessEqual("user" in response, True)
        self.failUnlessEqual("profile" in response, True)

    def test_list_view(self):
        user = self.user_add()
        self.profile_add(user)

        request = testing.DummyRequest()
        name = route_url('sa_list', request, table="user")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')
        name = route_url('sa_list', request, table="profile")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

    def test_read_view(self):
        user = self.user_add()
        self.profile_add(user)

        request = testing.DummyRequest()
        name = route_url('sa_read', request,
                                    table="user",
                                    id="1")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')
        name = route_url('sa_read', request,
                                    table="profile", 
                                    id="1")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

    def test_create_view(self):
        request = testing.DummyRequest()
        name = route_url('sa_create', request,
                                      table="user")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

        form = response.form
        form['name'] = "Karlson"
        form['fullname'] = "Karlson the Third"
        form['password'] = 123
        response = form.submit("form.submitted").follow()

        self.failUnlessEqual(response.status, '200 OK')
        user = self.session.query(User).get(1)

        self.assertFalse(user is None)
        self.assertEqual(user.name,  "Karlson")
        self.assertEqual(user.fullname,  "Karlson the Third")
        self.assertEqual(user.password,  "123")
        self.assertEqual(user.position,  0)

        name = route_url('sa_create', request,
                                      table="profile")

        response = self.testapp.get(name)
        form = response.form
        form['user_id'] = "1"
        form['phone'] = "123"
        form['cv'] = "Karlson live on the roof"
        field = form.get('married', index=0)
        field.checked = False

        form['salary'] = "200.23"
        upload = Upload('filename.txt', 'data')
        form['photo'] = upload

        response = form.submit("form.submitted").follow()

        self.failUnlessEqual(response.status, '200 OK')

        profile = self.session.query(Profile).get(1)

        self.assertFalse(profile is None)
        self.assertEqual(profile.user.id, 1)
        self.assertEqual(profile.phone,  "123")
        self.assertEqual(profile.cv, "Karlson live on the roof")
        self.assertEqual(profile.married,  False)
        self.assertEqual(profile.salary,  200.23)

    def test_update_view(self):
        user = self.user_add()
        self.profile_add(user)
        request = testing.DummyRequest()
        name = route_url('sa_update', request,
                                      table="user",
                                      id="1")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

        form = response.form
        form['name'] = "Karlson"
        form['fullname'] = "Karlson the Third"
        form['password'] = 123
        response = form.submit("form.submitted").follow()

        self.failUnlessEqual(response.status, '200 OK')
        user = self.session.query(User).get(1)

        self.assertFalse(user is None)
        self.assertEqual(user.name,  "Karlson")
        self.assertEqual(user.fullname,  "Karlson the Third")
        self.assertEqual(user.password,  "123")

        name = route_url('sa_update', request,
                                      table="profile",
                                      id="1")

        response = self.testapp.get(name)
        form = response.form
        form['user_id'] = "1"
        form['phone'] = "123"
        form['cv'] = "Karlson live on the roof"
        field = form.get('married', index=0)
        field.checked = False

        form['salary'] = "200.23"
        upload = Upload('filename.txt', 'data')
        form['photo'] = upload

        response = form.submit("form.submitted").follow()
        self.failUnlessEqual(response.status, '200 OK')
        
        profile = self.session.query(Profile).get(1)

        self.assertFalse(profile is None)
        self.assertEqual(profile.user.id, 1)
        self.assertEqual(profile.phone,  "123")
        self.assertEqual(profile.cv, "Karlson live on the roof")
        self.assertEqual(profile.married,  False)
        self.assertEqual(profile.salary,  200.23)

    def test_delete_view(self):
        user = self.user_add()
        self.profile_add(user)
        request = testing.DummyRequest()
        name = route_url('sa_delete', request,
                                      table="profile",
                                      id=1)
        response = self.testapp.get(name).follow()
        self.failUnlessEqual(response.status, '200 OK')

        name = route_url('sa_delete', request,
                                      table="user",
                                      id=1)
        response = self.testapp.get(name).follow()

        self.failUnlessEqual(response.status, '200 OK')

    def test_paste_view(self):

        self.user_add()
        self.user_add()
        request = testing.DummyRequest()

        user1 = self.session.query(User).get(1)
        user2 = self.session.query(User).get(2)
        self.assertGreater(user1.position, user2.position)

        name = route_url('sa_paste', request,
                                     table="user",
                                     id=2,
                                     target_id=1)

        response = self.testapp.post(name).follow()
        self.failUnlessEqual(response.status, '200 OK')

        user1 = self.session.query(User).get(1)
        user2 = self.session.query(User).get(2)
        self.assertGreater(user2.position, user1.position)
コード例 #15
0
ファイル: test_server.py プロジェクト: poyo46/jatime
def get_analysis(webapp: app.TestApp,
                 string: Optional[str] = None) -> TestResponse:
    if string is None:
        string = _GET_PARSE_STRING
    return webapp.get("/analysis", {"string": string})
コード例 #16
0
ファイル: test_server.py プロジェクト: poyo46/jatime
def test_get_root_should_be_accessible(webapp: app.TestApp):
    response = webapp.get("/")
    assert response.status_code == 200
コード例 #17
0
ファイル: test_server.py プロジェクト: poyo46/jatime
def test_get_analysis_requires_string_parameter(webapp: app.TestApp):
    with pytest.raises(app.AppError):
        webapp.get("/analysis")
コード例 #18
0
ファイル: __init__.py プロジェクト: afsana1010/sacrud
class SacrudTests(BaseSacrudTest):
    def setUp(self):

        request = testing.DummyRequest()
        config = testing.setUp(request=request)

        config.registry.settings['sqlalchemy.url'] = "sqlite:///:memory:"
        config.include('sacrud.pyramid_ext')
        settings = config.registry.settings
        settings['sacrud_models'] = (User, Profile)
        config.scan()

        from sacrud.pyramid_ext import DBSession
        engine = create_engine('sqlite:///:memory:')
        DBSession.configure(bind=engine)

        self.session = DBSession

        # To create tables, you typically do:
        #User.metadata.create_all(engine)
        User.metadata.create_all(engine)
        Profile.metadata.create_all(engine)

        self.app = config.make_wsgi_app()
        self.testapp = TestApp(self.app)

    def tearDown(self):
        def clear_files():
            for filename in glob.glob("%s/*.html" % (PHOTO_PATH, )):
                os.remove(os.path.join(PHOTO_PATH, filename))

        clear_files()
        self.session.remove()
        testing.tearDown()

    def test_home_view(self):
        self.user_add()
        request = testing.DummyRequest()
        name = route_url('sa_home', request)
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')
        self.failUnlessEqual("Tables" in response, True)
        self.failUnlessEqual("user" in response, True)
        self.failUnlessEqual("profile" in response, True)

    def test_list_view(self):
        user = self.user_add()
        self.profile_add(user)

        request = testing.DummyRequest()
        name = route_url('sa_list', request, table="user")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')
        name = route_url('sa_list', request, table="profile")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

    def test_read_view(self):
        user = self.user_add()
        self.profile_add(user)

        request = testing.DummyRequest()
        name = route_url('sa_read', request, table="user", id="1")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')
        name = route_url('sa_read', request, table="profile", id="1")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

    def test_create_view(self):
        request = testing.DummyRequest()
        name = route_url('sa_create', request, table="user")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

        form = response.form
        form['name'] = "Karlson"
        form['fullname'] = "Karlson the Third"
        form['password'] = 123
        response = form.submit("form.submitted").follow()

        self.failUnlessEqual(response.status, '200 OK')
        user = self.session.query(User).get(1)

        self.assertFalse(user is None)
        self.assertEqual(user.name, "Karlson")
        self.assertEqual(user.fullname, "Karlson the Third")
        self.assertEqual(user.password, "123")
        self.assertEqual(user.position, 0)

        name = route_url('sa_create', request, table="profile")

        response = self.testapp.get(name)
        form = response.form
        form['user_id'] = "1"
        form['phone'] = "123"
        form['cv'] = "Karlson live on the roof"
        field = form.get('married', index=0)
        field.checked = False

        form['salary'] = "200.23"
        upload = Upload('filename.txt', 'data')
        form['photo'] = upload

        response = form.submit("form.submitted").follow()

        self.failUnlessEqual(response.status, '200 OK')

        profile = self.session.query(Profile).get(1)

        self.assertFalse(profile is None)
        self.assertEqual(profile.user.id, 1)
        self.assertEqual(profile.phone, "123")
        self.assertEqual(profile.cv, "Karlson live on the roof")
        self.assertEqual(profile.married, False)
        self.assertEqual(profile.salary, 200.23)

    def test_update_view(self):
        user = self.user_add()
        self.profile_add(user)
        request = testing.DummyRequest()
        name = route_url('sa_update', request, table="user", id="1")
        response = self.testapp.get(name)
        self.failUnlessEqual(response.status, '200 OK')

        form = response.form
        form['name'] = "Karlson"
        form['fullname'] = "Karlson the Third"
        form['password'] = 123
        response = form.submit("form.submitted").follow()

        self.failUnlessEqual(response.status, '200 OK')
        user = self.session.query(User).get(1)

        self.assertFalse(user is None)
        self.assertEqual(user.name, "Karlson")
        self.assertEqual(user.fullname, "Karlson the Third")
        self.assertEqual(user.password, "123")

        name = route_url('sa_update', request, table="profile", id="1")

        response = self.testapp.get(name)
        form = response.form
        form['user_id'] = "1"
        form['phone'] = "123"
        form['cv'] = "Karlson live on the roof"
        field = form.get('married', index=0)
        field.checked = False

        form['salary'] = "200.23"
        upload = Upload('filename.txt', 'data')
        form['photo'] = upload

        response = form.submit("form.submitted").follow()
        self.failUnlessEqual(response.status, '200 OK')

        profile = self.session.query(Profile).get(1)

        self.assertFalse(profile is None)
        self.assertEqual(profile.user.id, 1)
        self.assertEqual(profile.phone, "123")
        self.assertEqual(profile.cv, "Karlson live on the roof")
        self.assertEqual(profile.married, False)
        self.assertEqual(profile.salary, 200.23)

    def test_delete_view(self):
        user = self.user_add()
        self.profile_add(user)
        request = testing.DummyRequest()
        name = route_url('sa_delete', request, table="profile", id=1)
        response = self.testapp.get(name).follow()
        self.failUnlessEqual(response.status, '200 OK')

        name = route_url('sa_delete', request, table="user", id=1)
        response = self.testapp.get(name).follow()

        self.failUnlessEqual(response.status, '200 OK')

    def test_paste_view(self):

        self.user_add()
        self.user_add()
        request = testing.DummyRequest()

        user1 = self.session.query(User).get(1)
        user2 = self.session.query(User).get(2)
        self.assertGreater(user1.position, user2.position)

        name = route_url('sa_paste', request, table="user", id=2, target_id=1)

        response = self.testapp.post(name).follow()
        self.failUnlessEqual(response.status, '200 OK')

        user1 = self.session.query(User).get(1)
        user2 = self.session.query(User).get(2)
        self.assertGreater(user2.position, user1.position)