コード例 #1
0
 def mockup(cls):
     god = God()
     god.email = '*****@*****.**'
     god.password = '******'
     god.is_active = True
     DBSession.add(god)
     DBSession.commit()
コード例 #2
0
    def test_activation_mixin(self):
        activated_student = Student()
        activated_student.name = 'activated-student'
        activated_student.activated_at = datetime.now()
        DBSession.add(activated_student)

        deactivated_student = Student()
        deactivated_student.name = 'deactivated-student'
        deactivated_student.activated_at = None
        DBSession.add(deactivated_student)

        DBSession.commit()

        # Test ordering:
        student_list = Student.query.order_by(desc(Student.is_active)).all()
        self.assertIsNotNone(student_list[0].activated_at)
        self.assertIsNone(student_list[-1].activated_at)

        student_list = Student.query.order_by(asc(Student.is_active)).all()
        self.assertIsNotNone(student_list[-1].activated_at)
        self.assertIsNone(student_list[0].activated_at)

        # Test filtering:
        student_list = Student.query.filter(Student.is_active).all()
        for student in student_list:
            self.assertIsNotNone(student.activated_at)

        student_list = Student.query.filter(not_(Student.is_active)).all()
        for student in student_list:
            self.assertIsNone(student.activated_at)
コード例 #3
0
    def patch(self: Controller):
        """
        Set context.method
        Set context.form
        :return:
        """
        # Preserve patches
        patches = context.form
        results = []
        context.jsonpatch = True

        try:
            for patch in patches:
                context.form = patch.get('value', {})
                context.method = patch['op']

                remaining_paths = patch['path'].split('/')
                if remaining_paths and not remaining_paths[0]:
                    return_data = self()
                else:
                    return_data = self(*remaining_paths)

                results.append(return_data)

                DBSession.flush()
            DBSession.commit()
            return '[%s]' % ',\n'.join(results)
        except:
            if DBSession.is_active:
                DBSession.rollback()
            raise
        finally:
            del context.jsonpatch
コード例 #4
0
    def test_approve_required_mixin(self):
        # noinspection PyArgumentList
        object1 = ApproveRequiredObject(
            title='object 1',
        )

        DBSession.add(object1)
        DBSession.commit()
        self.assertFalse(object1.is_approved)
        self.assertEqual(DBSession.query(ApproveRequiredObject).filter(ApproveRequiredObject.is_approved).count(), 0)

        object1.is_approved = True
        self.assertTrue(object1.is_approved)
        DBSession.commit()
        object1 = DBSession.query(ApproveRequiredObject).one()
        self.assertTrue(object1.is_approved)

        json = object1.to_dict()
        self.assertIn('isApproved', json)

        self.assertEqual(DBSession.query(ApproveRequiredObject).filter(ApproveRequiredObject.is_approved).count(), 1)
        self.assertEqual(ApproveRequiredObject.filter_approved().count(), 1)

        self.assertFalse(ApproveRequiredObject.import_value(ApproveRequiredObject.is_approved, 'false'))
        self.assertFalse(ApproveRequiredObject.import_value(ApproveRequiredObject.is_approved, 'FALSE'))
        self.assertFalse(ApproveRequiredObject.import_value(ApproveRequiredObject.is_approved, 'False'))
        self.assertTrue(ApproveRequiredObject.import_value(ApproveRequiredObject.is_approved, 'true'))
        self.assertTrue(ApproveRequiredObject.import_value(ApproveRequiredObject.is_approved, 'TRUE'))
        self.assertTrue(ApproveRequiredObject.import_value(ApproveRequiredObject.is_approved, 'True'))

        self.assertEqual(ApproveRequiredObject.import_value(ApproveRequiredObject.title, 'title'), 'title')
コード例 #5
0
def mockup():
    with StoreManager(DBSession):
        images = PlaceImageList([
            PlaceImage.create_from(f'{IMAGE_PATH}/1.jpeg'),
            PlaceImage.create_from(f'{IMAGE_PATH}/2.jpeg'),
        ])

        categories = [
            Category(name='جنگل', ),
            Category(name='رودخونه', ),
            Category(name='کوه', ),
            Category(name='مذهبی', ),
        ]

        for i in range(1000):
            place = Place(
                name=f'foo {i}',
                description=description,
                address=address,
                latitude=random() * 20 + 30,
                longitude=random() * 20 + 30,
                images=images,
                category=choice(categories),
            )
            DBSession.add(place)

        DBSession.commit()
コード例 #6
0
ファイル: mockup.py プロジェクト: mkhfring/pychat
def insert():
    god = Member(id=1,
                 email='*****@*****.**',
                 title='GOD',
                 access_token='access token',
                 reference_id=1)
    user1 = Member(id=2,
                   email='*****@*****.**',
                   title='user_1',
                   access_token='access token1',
                   reference_id=2)
    user2 = Member(id=3,
                   email='*****@*****.**',
                   title='user_2',
                   access_token='access token2',
                   reference_id=3)
    user3 = Member(id=4,
                   email='*****@*****.**',
                   title='user_3',
                   access_token='access token3',
                   reference_id=4)
    room = Room(title='example', members=[god, user1, user2, user3])
    direct1 = Direct(members=[god, user1])
    direct2 = Direct(members=[god, user2])

    DBSession.add(room)
    DBSession.add(direct1)
    DBSession.add(direct2)
    DBSession.commit()
コード例 #7
0
    def verify_token(self, encoded_token):
        principal = CASPrincipal.load(encoded_token)
        member = DBSession.query(Member) \
            .filter(Member.reference_id == principal.reference_id) \
            .one_or_none()
        if not member and not 'HTTP_X_OAUTH2_ACCESS_TOKEN' in context.environ:
            raise HTTPBadRequest()

        access_token = context.environ['HTTP_X_OAUTH2_ACCESS_TOKEN'] \
            if 'HTTP_X_OAUTH2_ACCESS_TOKEN' in context.environ \
            else member.access_token

        cas_member = CASClient().get_member(access_token)
        if cas_member['email'] != principal.email:
            raise HTTPBadRequest()

        if member:
            if member.title != cas_member['title']:
                member.title = cas_member['title']

            if member.first_name != cas_member['firstName']:
                member.first_name = cas_member['firstName']

            if member.avatar != cas_member['avatar']:
                member.avatar = cas_member['avatar']

            if member.last_name != cas_member['lastName']:
                member.last_name = cas_member['lastName']

        DBSession.commit()
        return principal
コード例 #8
0
    def test_modified_mixin(self):

        # noinspection PyArgumentList
        instance = ModificationCheckingModel(
            title='test title',
        )

        DBSession.add(instance)
        DBSession.commit()
        self.assertIsNone(instance.modified_at)
        self.assertIsNotNone(instance.created_at)
        self.assertEqual(instance.last_modification_time, instance.created_at)

        instance = DBSession.query(ModificationCheckingModel).one()
        self.assertIsNone(instance.modified_at)
        self.assertIsNotNone(instance.created_at)
        self.assertEqual(instance.last_modification_time, instance.created_at)

        instance.title = 'Edited title'
        DBSession.commit()
        self.assertIsNotNone(instance.modified_at)
        self.assertIsNotNone(instance.created_at)
        self.assertEqual(instance.last_modification_time, instance.modified_at)

        instance = DBSession.query(ModificationCheckingModel).one()
        self.assertIsNotNone(instance.modified_at)
        self.assertIsNotNone(instance.created_at)
        self.assertEqual(instance.last_modification_time, instance.modified_at)
コード例 #9
0
ファイル: application.py プロジェクト: pylover/sharedlists
 def insert_mockup(self, args=None):  # pragma: no cover
     from restfulpy.orm import DBSession
     from .models import User
     oscar = User(id='pylover',
                  email='*****@*****.**',
                  password='******')
     DBSession.add(oscar)
     DBSession.commit()
コード例 #10
0
ファイル: cli.py プロジェクト: pylover/hive
 def __call__(self, args):
     user = User(
         id=args.name,
         email=args.email,
         password=getpass()
     )
     DBSession.add(user)
     DBSession.commit()
コード例 #11
0
 def insert_mockup(self):
     for i in range(1, 11):
         # noinspection PyArgumentList
         DBSession.add(
             Resource(id=i,
                      title='resource%s' % i,
                      password='******' % i))
     DBSession.commit()
コード例 #12
0
ファイル: application.py プロジェクト: iRhonin/bitwised-life
    def insert_basedata(self):  # pragma: no cover
        cell1 = Cell(x=0, y=0, is_alive=True)
        DBSession.add(cell1)
        cell2 = Cell(x=1, y=0, is_alive=True)
        DBSession.add(cell2)
        cell3 = Cell(x=0, y=1, is_alive=True)
        DBSession.add(cell3)
        cell4 = Cell(x=1, y=1)
        DBSession.add(cell4)

        DBSession.commit()
コード例 #13
0
    def test_auto_activation(self):
        # noinspection PyArgumentList
        object1 = AutoActiveObject(title='object 1', )

        DBSession.add(object1)
        DBSession.commit()
        self.assertTrue(object1.is_active)
        self.assertEqual(
            1,
            DBSession.query(AutoActiveObject).filter(
                AutoActiveObject.is_active).count())
コード例 #14
0
    def test_orderable_mixin(self):

        for i in range(3):
            # noinspection PyArgumentList
            instance = OrderableCheckingModel(title='test title %s' % i,
                                              order=i)
            DBSession.add(instance)
            DBSession.commit()

        instances = OrderableCheckingModel.apply_default_sort().all()
        self.assertEqual(instances[0].order, 0)
        self.assertEqual(instances[2].order, 2)
コード例 #15
0
ファイル: mockup.py プロジェクト: mohammadsheikhian/mycards
def insert():  # pragma: no cover

    my_card1 = MyCard(
        title='my card 1',
        avatar=
        'https://fiverr-res.cloudinary.com/images/t_main1,q_auto,f_auto/gigs/59968744/original/6d9924b6f58a09e5b9c64feb39b557e96f4a765b/give-you-a-one-dollar-virtual-bank-card.jpg',
    )
    DBSession.add(my_card1)

    my_card2 = MyCard(
        title='my card 2',
        avatar=
        'https://www.themelooks.org/club/crypcard/wp-content/uploads/2018/11/1529504445888.jpg',
    )
    DBSession.add(my_card2)

    my_card3 = MyCard(
        title='my card 3',
        avatar='https://theexchange.africa/wp-content/uploads/2018/09/Visa.jpg',
    )
    DBSession.add(my_card3)

    my_card4 = MyCard(
        title='my card 4',
        avatar=
        'https://techcrunch.com/wp-content/uploads/2017/04/biometric_040517.jpg?w=730&crop=1',
    )
    DBSession.add(my_card4)

    my_card5 = MyCard(
        title='my card 5',
        avatar=
        'https://www.themelooks.org/club/crypcard/wp-content/uploads/2018/11/1529504445888.jpg',
    )
    DBSession.add(my_card5)

    other_card_1 = OtherCard(title='other card 1', )
    DBSession.add(other_card_1)

    other_card_2 = OtherCard(
        title='other card 2',
        avatar=
        'https://ecobank.com/img/eco/Ecobank_Card_PAC-Prepaid_SalaryXPress_EN_MGD_HR.png',
    )
    DBSession.add(other_card_2)

    other_card_3 = OtherCard(
        title='other card 3',
        avatar=
        'https://techcrunch.com/wp-content/uploads/2017/04/biometric_040517.jpg?w=730&crop=1',
    )
    DBSession.add(other_card_3)
    DBSession.commit()
コード例 #16
0
 def insert_mockup(self):
     url = Url(url='http://www.varzesh3.com')
     member = Member(
         given_name='mohammad',
         family_name='sheikhian',
         email='*****@*****.**',
         google_access_token='fgbsdibfosdnfosd',
         google_refresh_token='fgbdyugbdsiubgdufig'
     )
     DBSession.add(url)
     DBSession.add(member)
     DBSession.commit()
コード例 #17
0
ファイル: cli.py プロジェクト: pylover/hive
    def __call__(self, args):
        user = DBSession.query(User).filter(User.id == args.name).one_or_none()
        if user is None:
            print(f'Invalid username: {args.name}', file=sys.stderr)
            return 1

        if input(
            f'Are you sure to delete the user: {user.id}? [N/y] '
        ).casefold() != 'y'.casefold():
            print(f'User: {args.name} is not deleted', file=sys.stderr)
            return 1

        DBSession.delete(user)
        DBSession.commit()
コード例 #18
0
ファイル: cli.py プロジェクト: pylover/hive
    def __call__(self, args):
        user = DBSession.query(User).filter(User.id == args.name).one_or_none()
        if user is None:
            print(f'Invalid username: {args.name}', file=sys.stderr)
            return 1

        password=getpass('New Password:'******'Again:')
        if password != confirm:
            print(f'Passwords are mismatch.', file=sys.stderr)
            return 1

        user.password=password
        DBSession.commit()
コード例 #19
0
ファイル: tokens.py プロジェクト: mkhfring/pychat
    def launch(self):
        member = DBSession.query(Member)\
            .filter(Member.id == self.args.member_id)\
            .one_or_none()

        if member is None:
            print(f'Invalid member id: {self.args.member_id}', file=sys.stderr)
            return 1

        member.access_token = self.args.access_token
        DBSession.commit()

        token = member.create_jwt_principal()
        print(token.dump().decode())
コード例 #20
0
ファイル: root.py プロジェクト: shayan-7/urlshortner
    def post(self):
        url = context.form.get('url')
        if not url.startswith('http'):
            url = f'http://{url}'

        url_exist = DBSession.query(Url).filter_by(url=url).one_or_none()

        if url_exist is None:
            url_exist = Url(url=url)
            DBSession.add(url_exist)
            DBSession.commit()

        hash_id = hashids.encode(url_exist.id)

        return dict(hash_id=hash_id)
コード例 #21
0
    def patch(self: Controller):
        try:
            results = super().patch()
            DBSession.commit()
            results = [r.to_dict() if hasattr(r, 'to_dict') else r \
                      for r in results]
            return results

        except:
            if DBSession.is_active:
                DBSession.rollback()
            raise

        finally:
            del context.jsonpatch
コード例 #22
0
def insert():  # pragma: no cover
    admin = Member(
        title='GOD',
        first_name='First name',
        last_name='Last name',
        email='*****@*****.**',
        password='******',
    )
    DBSession.add(admin)
    DBSession.commit()

    print('Admin has been created.')
    print(f'  Title: {admin.title}\n'
          f'  First Name: {admin.first_name}\n'
          f'  Last Name: {admin.last_name}\n'
          f'  Email: {admin.email}\n'
          f'  Password: 123456\n')
コード例 #23
0
    def get(self):

        if(context.query_string.get('code') is None) or \
                (client_secret_data['client_id'] is None) or \
                (client_secret_data['client_secret'] is None):
            raise HttpBadRequest

        body_token = dict()
        body_token['grant_type'] = 'authorization_code'
        body_token['code'] = context.query_string.get('code')
        body_token['client_id'] = client_secret_data['client_id']
        body_token['redirect_uri'] = settings.redirect_uri_auth
        body_token['client_secret'] = client_secret_data['client_secret']

        response_token = requests.post(settings.auth_google_uri_token,
                                       body_token)

        if response_token.status_code != 200:
            raise HttpForbidden()

        response_get_profile = requests.get(
            settings.oauth_url_google_api,
            headers={
                'Authorization':
                'OAuth ' +
                json_library.loads(response_token.text)['access_token']
            })

        if response_get_profile.status_code != 200:
            raise HttpNotFound()

        profile = json_library.loads(response_get_profile.text)

        if 'refresh_token' in response_token.text:
            member = Member(given_name=profile['given_name'],
                            family_name=profile['family_name'],
                            email=profile['email'],
                            google_access_token=json_library.loads(
                                response_token.text)['access_token'],
                            google_refresh_token=json_library.loads(
                                response_token.text)['refresh_token'])
            DBSession.add(member)
            DBSession.commit()

        return dict(authorization=JwtPrincipal(profile).dump().decode("utf-8"))
コード例 #24
0
    def post(self):
        if context.form.get('url') is None:
            raise HttpBadRequest()

        url = context.form.get('url')
        if not url.startswith('http'):
            url = f'http://{url}'

        url_exist = DBSession.query(Url).filter_by(url=url).one_or_none()

        if url_exist is None:
            url_exist = Url(url=url)
            DBSession.add(url_exist)
            DBSession.commit()

        hash_id = hashids.encode(url_exist.id)

        return dict(shortener_url=f'http://localhost:8080/urls/{hash_id}')
コード例 #25
0
    def __call__(self, args=None):
        if args.version:
            print(__version__)
            return

        self.application = MockupApplication()
        self.application.configure(filename=args.config_file)
        #if exists(db):
        #    os.remove(db)
        # makedirs(settings.data_directory, exist_ok=True)
        self.application.initialize_orm()
        setup_schema()
        DBSession.execute('TRUNCATE TABLE resource')
        DBSession.commit()
        print(f'DB {DBSession.bind}')
        self.application.insert_mockup()
        host, port = args.bind.split(':') if ':' in args.bind else (
            'localhost', args.bind)
        httpd = make_server(host, int(port), self.application)

        url = 'http://%s:%d' % httpd.server_address
        print(
            f'The server is up!, Get {url} to more info about how to use it!')
        server_thread = threading.Thread(target=httpd.serve_forever,
                                         daemon=True)
        try:
            server_thread.start()

            if not args.command:
                server_thread.join()
                exitstatus = 0
            else:
                test_runner_command = ' '.join(args.command).replace(
                    '{url}', url)
                time.sleep(1)
                result = run(test_runner_command, shell=True)
                exitstatus = result.returncode
            return exitstatus
        except KeyboardInterrupt:
            print('CTRL+X is pressed.')
            return 1
        finally:
            httpd.shutdown()
            sys.exit(exitstatus)
コード例 #26
0
    def test_pagination_mixin(self):
        for i in range(1, 6):
            # noinspection PyArgumentList
            obj = PagingObject(
                title='object %s' % i,
            )
            DBSession.add(obj)
        DBSession.commit()

        with Context({'QUERY_STRING': 'take=2&skip=1'}, self.application) as context:
            self.assertEqual(PagingObject.paginate_by_request().count(), 2)
            self.assertEqual(context.response_headers['X-Pagination-Take'], '2')
            self.assertEqual(context.response_headers['X-Pagination-Skip'], '1')
            self.assertEqual(context.response_headers['X-Pagination-Count'], '5')

        with Context({'QUERY_STRING': 'take=two&skip=one'}, self.application):
            self.assertEqual(PagingObject.paginate_by_request().count(), 4)

        with Context({'QUERY_STRING': 'take=5'}, self.application):
            self.assertRaises(HttpBadRequest, PagingObject.paginate_by_request)
コード例 #27
0
    def patch(self: Controller):
        """
        Set context.method
        Set context.form
        :return:
        """
        # Preserve patches
        patches = context.form
        results = []
        context.jsonpatch = True

        try:
            for patch in patches:
                context.form = patch.get('value', {})
                path, context.query = split_path(patch['path'])
                context.method = patch['op'].lower()
                context.request_content_length = \
                    len(context.form) if context.form else 0

                remaining_paths = path.split('/')
                if remaining_paths and not remaining_paths[0]:
                    return_data = self()
                else:
                    return_data = self(*remaining_paths)

                if isinstance(return_data, types.GeneratorType):
                    results.append('"%s"' % ''.join(list(return_data)))
                else:
                    results.append(return_data)

                DBSession.flush()
                context.query = {}

            DBSession.commit()
            return '[%s]' % ',\n'.join(results)
        except:
            if DBSession.is_active:
                DBSession.rollback()
            raise
        finally:
            del context.jsonpatch
コード例 #28
0
    def test_soft_delete_mixin(self):
        # noinspection PyArgumentList
        instance = SoftDeleteCheckingModel(title='test title')
        DBSession.add(instance)
        DBSession.commit()
        instance.assert_is_not_deleted()
        self.assertRaises(ValueError, instance.assert_is_deleted)

        instance = SoftDeleteCheckingModel.query.one()
        instance.soft_delete()
        DBSession.commit()
        instance.assert_is_deleted()
        self.assertRaises(ValueError, instance.assert_is_not_deleted)

        self.assertEqual(SoftDeleteCheckingModel.filter_deleted().count(), 1)
        self.assertEqual(SoftDeleteCheckingModel.exclude_deleted().count(), 0)

        instance.soft_undelete()
        DBSession.commit()
        instance.assert_is_not_deleted()
        self.assertRaises(ValueError, instance.assert_is_deleted)

        self.assertEqual(SoftDeleteCheckingModel.filter_deleted().count(), 0)
        self.assertEqual(SoftDeleteCheckingModel.exclude_deleted().count(), 1)

        DBSession.delete(instance)
        self.assertRaises(HttpConflict, DBSession.commit)
コード例 #29
0
    def test_activation_mixin(self):
        # noinspection PyArgumentList
        object1 = ActiveObject(title='object 1', )

        DBSession.add(object1)
        DBSession.commit()
        self.assertFalse(object1.is_active)
        self.assertEqual(
            DBSession.query(ActiveObject).filter(
                ActiveObject.is_active).count(), 0)

        object1.is_active = True
        self.assertTrue(object1.is_active)
        DBSession.commit()
        object1 = DBSession.query(ActiveObject).one()
        self.assertTrue(object1.is_active)

        json = object1.to_dict()
        self.assertIn('isActive', json)

        self.assertEqual(
            DBSession.query(ActiveObject).filter(
                ActiveObject.is_active).count(), 1)
        self.assertEqual(ActiveObject.filter_activated().count(), 1)

        self.assertFalse(
            ActiveObject.import_value(ActiveObject.is_active, 'false'))
        self.assertFalse(
            ActiveObject.import_value(ActiveObject.is_active, 'FALSE'))
        self.assertFalse(
            ActiveObject.import_value(ActiveObject.is_active, 'False'))
        self.assertTrue(
            ActiveObject.import_value(ActiveObject.is_active, 'true'))
        self.assertTrue(
            ActiveObject.import_value(ActiveObject.is_active, 'TRUE'))
        self.assertTrue(
            ActiveObject.import_value(ActiveObject.is_active, 'True'))

        self.assertEqual(
            ActiveObject.import_value(ActiveObject.title, 'title'), 'title')
コード例 #30
0
ファイル: basedata.py プロジェクト: hmnfalahi/tost
def insert():
    god = Member(
        user_name='GOD',
        email='*****@*****.**',
        first_name='god',
        last_name='godian',
        password='******',
    )
    DBSession.add(god)

    member1 = Member(
        user_name='member1',
        email='*****@*****.**',
        first_name='member1',
        last_name='family member1',
        password='******',
    )
    DBSession.add(member1)

    member2 = Member(
        user_name='member2',
        email='*****@*****.**',
        first_name='member2',
        last_name='family member1',
        password='******',
    )
    DBSession.add(member2)
    DBSession.commit()

    bot1 = Bot(
        name='bot',
        title='bot-title',
        owner_id=member1.id,
    )
    DBSession.add(bot1)
    DBSession.commit()

    print('Following member has been added:')
    print(god.user_name)