Esempio n. 1
0
 def test_compare_borrower_bad(self, mock_register_adapter):
     with app.app_context() as ac:
         ac.g.trace_id = None
         with app.test_request_context():
             mock_register_adapter.return_value = ["Alice", "Bob"]
             self.assertRaises(BorrowerNamesDifferException,
                               compare_borrower_names, PAYLOAD)
Esempio n. 2
0
    def setUp(self):
        app.testing = True

        self.client = app.test_client(use_cookies=True)

        self.app_context = app.test_request_context()
        self.app_context.push()
 def test_update(self):
     user = db.User.query().get()
     role = db.Role(parent=user.key)
     role.type_index = RoleType.COMMITTEE_ADMIN
     role.committee = 'EDU'
     role.put()
     supplier = db.Supplier(id=6)
     supplier.name = 'S1'
     supplier.put()
     self.assertEquals(db.create_key('Supplier-6'), supplier.key)
     fund = db.Fund(id=11)
     fund.committee = 'EDU'
     fund.name = 'myFund'
     fund.put()
     purchase = db.Purchase(id=12, parent=fund.key)
     purchase.description = 'a'
     purchase.put()
     with app.test_request_context('/p',
                                   method='POST',
                                   data={
                                       '_action': 'update',
                                       'supplier': 'Supplier-6',
                                       'quote_amount-value': '11',
                                       'description': 'b'
                                   }):
         purchases.view_purchase('Purchase-12')
     self.assertEqual('b', purchase.description)
 def test_purchase_list(self):
     fund = db.Fund(id=11)
     fund.committee = 'EDU'
     fund.name = 'myFund'
     fund.put()
     with app.test_request_context('/', method='GET'):
         purchases.view_purchase_list('Fund-11')
Esempio n. 5
0
 def test_create_deed_html(self, mock_format):
     deed = DeedModelMock
     mock_format.return_value = 'a house'
     with app.app_context() as ac:
         ac.g.trace_id = None
         with app.test_request_context():
             self.assertTrue('Digital Mortgage Deed' in create_deed_html(deed.deed))
             self.assertTrue('e-MD12344' in create_deed_html(deed.deed))
Esempio n. 6
0
    def test_auth_sms_deed_not_found(self, mock_get_deed):
        with app.app_context() as ac:
            ac.g.trace_id = None
            with app.test_request_context():
                mock_get_deed.return_value = None

                with self.assertRaises(NotFound):
                    auth_sms("11", "11", "11")
 def test_view_supplier(self):
     supplier = db.Supplier(id=6)
     supplier.name = 'Sup-6'
     supplier.receives_grants = True
     supplier.paid_in_sterling = False
     supplier.put()
     with app.test_request_context('/', method='GET'):
         args = suppliers.view_supplier('Supplier-6')
Esempio n. 8
0
 def test_auth_sms_no_esec_id(self, mock_get_deed, mock_get_borrower, mock_convert_json, mock_borrower_pos,
                              mock_akuma):
     mock_get_borrower.return_value = BorrowerModelMock
     with app.app_context() as ac:
         ac.g.trace_id = None
         with app.test_request_context():
             mock_get_deed.return_value = DeedModelMock()
             with self.assertRaises(InternalServerError):
                 auth_sms("11", "11", "11")
Esempio n. 9
0
 def test_borrowers_present_bad(self, mock_register_adapter):
     with app.app_context() as ac:
         ac.g.trace_id = None
         with app.test_request_context():
             mock_register_adapter.return_value = [
                 "Jake Bullet", "Jill Beatrix Bullet", "Another Name"
             ]
             self.assertRaises(BorrowerNamesMissingException,
                               all_borrower_names_present, PAYLOAD)
Esempio n. 10
0
    def setUp(self):
        create_app("test")
        from application import app, db
        self.app = app

        with app.test_request_context():
            db.create_all()
            # Initialize database, if needed
            self.db_session = db.create_scoped_session()
Esempio n. 11
0
    def test_func_w_dec_returns_302(self):
        with app.test_request_context():

            @login_only
            def func():
                return 1

            check = func()
        self.assertEqual(302, check.status_code)
Esempio n. 12
0
    def setUp(self):
        create_app("test")
        from application import app, db
        self.app = app

        with app.test_request_context():
            db.create_all()
            # Initialize database, if needed
            self.db_session = db.create_scoped_session()
    def test_requires_login_redirects_when_no_user(self, signed_in_mock):
        signed_in_mock.return_value = False
        func = lambda x: x
        wrapped_app_method = requires_authentication(func)
        with app.test_request_context('/protected-resource', method='GET'):
            response = wrapped_app_method()

        assert_that(response.status_code, equal_to(302))
        assert_that(response.headers['Location'], equal_to('/'))
Esempio n. 14
0
def enter_test_request_context(app):
    """
    在依赖到 flask 请求上下文的测试用例中,可以使用该 fixture 进入上下文以访问上下文资源,
    比如 flask.g, flask.current_app 和 flask.request 等。 尤其是 dao.connect 等
    方法创建对象时是基于 request context 的,所有必须依赖上下文。
    如果不想让整个 test method 都处于上下文,(比如需要测试上下文结束后的情况),则可以手动
    写 with app.test_request_context() 来控制上下文范围
    """
    with app.test_request_context():
        yield
Esempio n. 15
0
    def test_func_w_dec_returns_1_when_session(self):
        with app.test_request_context():
            session['user'] = '******'

            @login_only
            def func():
                return 1

            check = func()
        self.assertEqual(1, check)
Esempio n. 16
0
 def test_create_deed_html_with_date_of_mortgage_offer(self, mock_format):
     deed = MortgageDocMockWithDateOfMortgageOffer
     mock_format.return_value = 'a house'
     with app.app_context() as ac:
         ac.g.trace_id = None
         with app.test_request_context():
             self.assertTrue('Digital Mortgage Deed' in create_deed_html(deed.deed))
             self.assertTrue('e-MD1291A' in create_deed_html(deed.deed))
             self.assertTrue('Date of Mortgage Offer' in create_deed_html(deed.deed))
             self.assertTrue('a date string' in create_deed_html(deed.deed))
Esempio n. 17
0
    def setUp(self):
        # Allow exceptions (if any) to propagate to the test client.
        app.testing = True

        # Create a test client.
        self.client = app.test_client(use_cookies=True)

        # Create an application context for testing.
        self.app_context = app.test_request_context()
        self.app_context.push()
    def test_requires_feature_redirects_when_not_signed_in(
            self, signed_in_mock):
        signed_in_mock.return_value = False
        func = lambda: 'Decorator exited successfully'
        wrapped_app_method = requires_feature('some-feature')

        with app.test_request_context('/protected', method='GET') as context:
            response = wrapped_app_method(func)()

        assert_that(response.status_code, is_(302))
        assert_that(response.headers['Location'], is_('/'))
Esempio n. 19
0
 def setUp(self):
     super(BillingBaseReportTests, self).setUp()
     self.project_month_repository = ProjectMonthRepository()
     self.user_repository = UserRepository()
     with app.test_request_context():
         project_month = self.project_month_repository.find_by_id(1)
         project_month.remarks = 'test'
         user = self.user_repository.find_by_id(1)
         session['user'] = user.serialize()
         billing_base_report = BillingBaseReport(project_month)
     self.billing_base_report = billing_base_report
Esempio n. 20
0
 def test_auth_sms_akuma_result_z(self, mock_get_deed, mock_akuma):
     with app.app_context() as ac:
         ac.g.trace_id = None
         with app.test_request_context():
             mock_get_deed.return_value = DeedModelMock()
             mock_akuma.return_value = {
                 "result": "Z",
                 "id": "2b9115b2-d956-11e5-942f-08002719cd16"
             }
             result = auth_sms("11", "11", "11")
             self.assertEqual(result, 'Failed to sign Mortgage document')
Esempio n. 21
0
 def setUp(self):
     super(BpOrderReportTests, self).setUp()
     self.project_repository = ProjectRepository()
     self.user_repository = UserRepository()
     self.project_detail_repository = ProjectDetailRepository()
     self.engineer_repository = EngineerRepository()
     with app.test_request_context():
         project_detail = self.project_detail_repository.find_by_id(1)
         user = self.user_repository.find_by_id(1)
         session['user'] = user.serialize()
         bp_order_report = BpOrderReport(project_detail)
     self.bp_order_report = bp_order_report
Esempio n. 22
0
    def test_auth_sms_happy_path(self, mock_get_deed, mock_get_borrower, mock_convert_json, mock_borrower_pos,
                                 mock_akuma, mock_esec_client):
        mock_get_borrower.return_value = BorrowerModelMockNoId
        mock_esec_client.return_value = EsecClientMock()
        with app.app_context() as ac:
            ac.g.trace_id = None
            with app.test_request_context():
                mock_get_deed.return_value = DeedModelMock()

                resp = auth_sms("11", "11", "11")

                self.assertEqual(resp[1], 200)
    def setUp(self):
        app.testing = True
        app.csrf_enable = False

        app.config['CSRF_ENABLED'] = False
        app.config['WTF_CSRF_ENABLED'] = False
        app.config['SECRET_KEY'] = 'Super Secret Unguessable Key'
        app.config['BABEL_DEFAULT_LOCALE'] = 'en'

        self.client = app.test_client(use_cookies=True)
        self.app_context = app.test_request_context()
        self.app_context.push()
 def test_view_purchase(self):
     fund = db.Fund(id=11)
     fund.committee = 'EDU'
     fund.name = 'myFund'
     fund.put()
     purchase = db.Purchase(id=12, parent=fund.key)
     purchase.po_number = 'MB006'
     purchase.state_index = 1
     purchase.quote_amount = db.Money(value=1234)
     purchase.description = "desc"
     purchase.put()
     with app.test_request_context('/', method='GET'):
         purchases.view_purchase('Purchase-12')
Esempio n. 25
0
    def loop(self, client):
        # FIXME(tsukasa-au): This is a hack... But I can't think of anything
        # better.
        # Add a test request context so that babel will work.
        app.test_request_context().push()

        logger = logging.getLogger('loop')
        res = client.rtm_connect()
        logger.debug('Connection result: %r', res)
        if not res:
            logger.error('Connection Failed.')
            return

        logger.info('Users: %s', client.server.users)
        logger.info('Channels: %s', client.server.channels)
        while True:
            for event in client.rtm_read():
                logger.debug('Event: %s', event)
                if 'type' in event:
                    # Call all handlers for the given event type.
                    for handler in self.DISPATCH.get(event['type'], []):
                        handler(client, event)
            time.sleep(0.1)
    def test_requires_feature_allows_access(self, signed_in_mock):
        signed_in_mock.return_value = True
        func = lambda: 'Decorator exited successfully'
        wrapped_app_method = requires_feature('big-edit')

        with app.test_request_context('/protected', method='GET') as context:
            context.session.update({
                'oauth_user': {
                    'permissions': ['admin']
                },
            })
            response = wrapped_app_method(func)()

        assert_that(response, is_('Decorator exited successfully'))
 def test_checked(self):
     user = db.User.query().get()
     role = db.Role(parent=user.key)
     role.type_index = RoleType.FUND_ADMIN
     role.put()
     fund = db.Fund(id=11)
     fund.put()
     purchase = db.Purchase(id=12, parent=fund.key)
     purchase.put()
     with app.test_request_context('/p',
                                   method='POST',
                                   data={'_action': 'checked'}):
         purchases.view_purchase('Purchase-12')
     self.assertEqual("MB0001", purchase.po_number)
Esempio n. 28
0
def setup_db(admin_email):
    """Setup the database
    - Create admin, subscriber and demo Group collection
    - Create admin user (must use valid blender-id credentials)
    - Create one project
    """

    # Create default groups
    groups_list = []
    for group in ['admin', 'subscriber', 'demo']:
        g = {'name': group}
        g = post_internal('groups', g)
        groups_list.append(g[0]['_id'])
        print("Creating group {0}".format(group))

    # Create admin user
    user = {
        'username': admin_email,
        'groups': groups_list,
        'roles': ['admin', 'subscriber', 'demo'],
        'settings': {
            'email_communications': 1
        },
        'auth': [],
        'full_name': admin_email,
        'email': admin_email
    }
    result, _, _, status = post_internal('users', user)
    if status != 201:
        raise SystemExit('Error creating user {}: {}'.format(
            admin_email, result))
    user.update(result)
    print("Created user {0}".format(user['_id']))

    # Create a default project by faking a POST request.
    with app.test_request_context(data={'project_name': u'Default Project'}):
        from flask import g
        from application.modules import projects

        g.current_user = {
            'user_id': user['_id'],
            'groups': user['groups'],
            'roles': set(user['roles'])
        }

        projects.create_project(overrides={
            'url': 'default-project',
            'is_private': False
        })
    def test_requires_feature_redirects_for_bad_permissions(
            self, signed_in_mock):
        signed_in_mock.return_value = True
        func = lambda: 'Decorator exited successfully'
        wrapped_app_method = requires_feature('some-feature')

        with app.test_request_context('/protected', method='GET') as context:
            context.session.update({
                'oauth_user': {
                    'permissions': ['normal-permission']
                },
            })
            response = wrapped_app_method(func)()

        assert_that(response.status_code, is_(302))
        assert_that(response.headers['Location'], is_('/'))
 def test_create_payment(self):
     user = db.User.query().get()
     role = db.Role(parent=user.key)
     role.type_index = RoleType.PAYMENT_ADMIN
     role.put()
     supplier = db.Supplier(id=6)
     supplier.paid_in_sterling = False
     supplier.name = "Sup-6"
     supplier.put()
     grant = db.Grant()
     grant.put()
     with app.test_request_context('/supplier/123',
                                   method='POST',
                                   data={'_action': 'startTransfer'}):
         url = suppliers.view_supplier('Supplier-6')
     self.assertEquals('/foreigntransfer/ForeignTransfer-5', url)
Esempio n. 31
0
def create_rendering(report):
    ''' instantiate a new rendering 
    queue it up for pdf-creation and s3-upload
    '''
    creation_time = datetime.datetime.utcnow()
    # create a suitable filename
    filename = '%s--%s.pdf' % (report.label
        , creation_time.strftime('%Y-%m-%dT%H-%M-%SZ'))
    if '..' in filename or filename.startswith('/'):
        # set filename as just the date
        filename = 'report--%s.pdf' % \
            creation_time.strftime('%y-%m-%dT%H-%M-%SZ')
    
    # null bytes in the original unicode were causing problems
    filename = str(filename)
    
    # make sure we have access to request context
    with app.test_request_context():
        # the public-facing url of this report
        # used so wkhtmltopdf can run sans auth
        # have to generate url here while we're in the right context
        url = url_for('public_reports'
            , org_label=report.project.organization.label
            , project_label = report.project.label
            , public_label = report.public_label)
        public_url = urlparse.urljoin(app.config['APP_ROOT'], url)

    # create new rendering object
    # punting on saving components for now
    frozen_components = []
    new_rendering = Rendering(
        components = frozen_components
        , creation_time = creation_time
        , filename = filename
        , label = generate_random_string(12)
        , report = report
    )
    new_rendering.save()

    # enqueue pdf-generation with rq-scheduler
    redis_config = app.config['REDIS_CONFIG']
    use_connection(Redis(redis_config['host'], redis_config['port']
            , password=redis_config['password']))
    queue = Queue()
    queue.enqueue(render_report, new_rendering.id, public_url)

    return new_rendering
Esempio n. 32
0
    def test_get_dict(self):
        with app.test_request_context():
            # testページで検索条件
            excepted = ImmutableMultiDict({'test': 'test'})
            search = SearchSessionService('test', excepted)

            # saveしていない場合は、get_dictでNoneが返却される
            self.assertIsNone(search.get_dict())

            # saveすると、get_dictで保存した検索条件を取得できる。
            search.save()
            self.assertEqual(search.get_dict(), excepted)

            # pageを変更すると、get_dictでNoneが返却される
            search = SearchSessionService('test2', excepted)
            search.save()
            self.assertEqual(search.get_dict(), excepted)
Esempio n. 33
0
def setup_db(admin_email):
    """Setup the database
    - Create admin, subscriber and demo Group collection
    - Create admin user (must use valid blender-id credentials)
    - Create one project
    """

    # Create default groups
    groups_list = []
    for group in ['admin', 'subscriber', 'demo']:
        g = {'name': group}
        g = post_internal('groups', g)
        groups_list.append(g[0]['_id'])
        print("Creating group {0}".format(group))

    # Create admin user
    user = {'username': admin_email,
            'groups': groups_list,
            'roles': ['admin', 'subscriber', 'demo'],
            'settings': {'email_communications': 1},
            'auth': [],
            'full_name': admin_email,
            'email': admin_email}
    result, _, _, status = post_internal('users', user)
    if status != 201:
        raise SystemExit('Error creating user {}: {}'.format(admin_email, result))
    user.update(result)
    print("Created user {0}".format(user['_id']))

    # Create a default project by faking a POST request.
    with app.test_request_context(data={'project_name': u'Default Project'}):
        from flask import g
        from application.modules import projects

        g.current_user = {'user_id': user['_id'],
                          'groups': user['groups'],
                          'roles': set(user['roles'])}

        projects.create_project(overrides={'url': 'default-project',
                                           'is_private': False})
Esempio n. 34
0
    def test_get_document(self):
        with app.app_context():
            with app.test_request_context():
                resp = get_document()

                self.assertEqual(str(resp.mimetype), "application/pdf")