コード例 #1
0
    def test_password_delete_found(self):
        password = Password(service='myservice',
                            secret='s3cr3t',
                            user_id=self.user_id)

        with transaction.manager:
            Session.add(password)
            Session.flush()
            password_id = password.id

        count_before = Session.query(Password).count()
        self.assertEqual(count_before, 1)

        res = self.testapp.delete('/passwords/%s' % str(password_id),
                                  headers=self.auth_header)
        self.assertEqual(res.status, '200 OK')
        self.assertEqual(res.body, (b'{"password": {"id": "'
                                    + text_type(password_id).encode('ascii')
                                    + b'"}}'))
        count_after = Session.query(Password).count()
        self.assertEqual(count_after, 0)
        try:
            password = Session.query(Password).filter(
                Password.id == password_id
            ).one()
        except NoResultFound:
            password = None

        self.assertEqual(password, None)
コード例 #2
0
    def test_unicode(self):
        data = {'_id': '1234'}
        self.assertEqual(text_type(User(data)), '1234')

        data['email'] = '*****@*****.**'
        self.assertEqual(text_type(User(data)), '*****@*****.**')

        data['last_name'] = 'Doe'
        self.assertEqual(text_type(User(data)), 'Doe')

        data['first_name'] = 'John'
        self.assertEqual(text_type(User(data)), 'John Doe')

        data['screen_name'] = 'Johnny'
        self.assertEqual(text_type(User(data)), 'Johnny')

        u = User(data)
        self.assertEqual(u.__unicode__(), u.__str__())
コード例 #3
0
 def test_backups_import_good_file(self):
     user_id = create_and_login_user(self.testapp)
     content = get_gzip_data(text_type('[{"secret": "password1"}, {"secret": "password2"}]'))
     res = self.testapp.post(
         '/backup/import', {},
         upload_files=[('passwords-file', 'good.json', content)],
         status=302)
     self.assertEqual(res.status, '302 Found')
     self.assertEqual(res.location, 'http://localhost/backup')
     self.assertEqual(2, Session.query(Password).count())
     user = Session.query(User).filter(User.id == user_id).one()
     self.assertEqual(len(user.passwords), 2)
コード例 #4
0
    def test_backups_import_empty_file2(self):
        create_and_login_user(self.testapp)

        content = get_gzip_data(text_type('[{}]'))
        res = self.testapp.post(
            '/backup/import', {},
            upload_files=[('passwords-file', 'empty.json', content)],
            status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(0, Session.query(Password).count())
コード例 #5
0
    def test_backups_import_empty_file2(self):
        create_and_login_user(self.testapp)

        content = get_gzip_data(text_type('[{}]'))
        res = self.testapp.post('/backup/import', {},
                                upload_files=[('passwords-file', 'empty.json',
                                               content)],
                                status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(0, Session.query(Password).count())
コード例 #6
0
 def test_backups_import_good_file(self):
     user_id = create_and_login_user(self.testapp)
     content = get_gzip_data(
         text_type('[{"secret": "password1"}, {"secret": "password2"}]'))
     res = self.testapp.post('/backup/import', {},
                             upload_files=[('passwords-file', 'good.json',
                                            content)],
                             status=302)
     self.assertEqual(res.status, '302 Found')
     self.assertEqual(res.location, 'http://localhost/backup')
     self.assertEqual(2, Session.query(Password).count())
     user = Session.query(User).filter(User.id == user_id).one()
     self.assertEqual(len(user.passwords), 2)
コード例 #7
0
ファイル: models.py プロジェクト: ablanco/yith-library-server
    def __unicode__(self):
        result = self.screen_name
        if result:
            return result

        result = self.full_name
        if result:
            return result

        result = self.email
        if result:
            return result

        return text_type(self.id)
コード例 #8
0
    def __unicode__(self):
        result = self.get('screen_name', '')
        if result:
            return result

        result = ' '.join([self.get('first_name', ''),
                           self.get('last_name', '')])
        result = result.strip()
        if result:
            return result

        result = self.get('email', '')
        if result:
            return result

        return text_type(self['_id'])
コード例 #9
0
def get_user_info(settings, user_id):
    # Get a bearer token
    token_url = settings['twitter_bearer_token_url']
    key = settings['twitter_consumer_key']
    secret = settings['twitter_consumer_secret']
    auth = key + ':' + secret
    auth = 'Basic ' + text_type(
        binascii.b2a_base64(auth.encode('ascii'))[:-1], 'ascii')

    response = requests.post(
        token_url,
        headers={
            'Authorization': auth.encode('ascii'),
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
        data='grant_type=client_credentials',
    )
    if not response.ok:
        raise HTTPUnauthorized(response.text)

    data = response.json()
    assert data['token_type'] == 'bearer'
    access_token = data['access_token']

    # Call the user info rest API
    user_info_url = settings['twitter_user_info_url']

    response = requests.get(
        user_info_url,
        params={'user_id': user_id},
        headers={'Authorization': 'Bearer ' + access_token},
    )

    if not response.ok:
        raise HTTPUnauthorized(response.text)

    return response.json()
コード例 #10
0
def get_user_info(settings, user_id):
    # Get a bearer token
    token_url = settings['twitter_bearer_token_url']
    key = settings['twitter_consumer_key']
    secret = settings['twitter_consumer_secret']
    auth = key + ':' + secret
    auth = 'Basic ' + text_type(binascii.b2a_base64(auth.encode('ascii'))[:-1],
                                'ascii')

    response = requests.post(
        token_url,
        headers={
            'Authorization': auth.encode('ascii'),
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
        },
        data='grant_type=client_credentials',
    )
    if not response.ok:
        raise HTTPUnauthorized(response.text)

    data = response.json()
    assert data['token_type'] == 'bearer'
    access_token = data['access_token']

    # Call the user info rest API
    user_info_url = settings['twitter_user_info_url']

    response = requests.get(
        user_info_url,
        params={'user_id': user_id},
        headers={'Authorization': 'Bearer ' + access_token},
    )

    if not response.ok:
        raise HTTPUnauthorized(response.text)

    return response.json()
コード例 #11
0
 def test_unicode_only_screen_name(self):
     user = User(screen_name='Johnny')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), 'Johnny')
コード例 #12
0
 def test_unicode_first_name_and_last_name(self):
     user = User(first_name='John', last_name='Doe')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), 'John Doe')
コード例 #13
0
 def test_unicode_only_last_name(self):
     user = User(last_name='Doe')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), 'Doe')
コード例 #14
0
 def test_unicode_only_email(self):
     user = User(email='*****@*****.**')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), '*****@*****.**')
コード例 #15
0
 def test_unicode_only_id(self):
     user = User()
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), text_type(user.id))
コード例 #16
0
    def test_backups_import(self):
        res = self.testapp.post('/backup/import')
        self.assertEqual(res.status, '200 OK')
        res.mustcontain('Log in')

        # Log in
        date = datetime.datetime(2012, 12, 12, 12, 12)
        user_id = self.db.users.insert({
                'twitter_id': 'twitter1',
                'screen_name': 'John Doe',
                'first_name': 'John',
                'last_name': 'Doe',
                'email': '',
                'email_verified': False,
                'authorized_apps': [],
                'date_joined': date,
                'last_login': date,
                }, safe=True)
        self.set_user_cookie(str(user_id))

        # no file to upload
        res = self.testapp.post('/backup/import', status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(0, self.db.passwords.count())

        # not really a file
        res = self.testapp.post('/backup/import', {
                'passwords-file': '',
                }, status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(0, self.db.passwords.count())

        # bad file
        content = get_gzip_data(text_type('[{}'))
        res = self.testapp.post(
            '/backup/import', {},
            upload_files=[('passwords-file', 'bad.json', content)],
            status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(0, self.db.passwords.count())

        # file with good syntax but empty
        content = get_gzip_data(text_type('[]'))
        res = self.testapp.post(
            '/backup/import', {},
            upload_files=[('passwords-file', 'empty.json', content)],
            status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(0, self.db.passwords.count())

        # file with good syntax but empty
        content = get_gzip_data(text_type('[{}]'))
        res = self.testapp.post(
            '/backup/import', {},
            upload_files=[('passwords-file', 'empty.json', content)],
            status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(0, self.db.passwords.count())

        # file with good passwords
        content = get_gzip_data(text_type('[{"secret": "password1"}, {"secret": "password2"}]'))
        res = self.testapp.post(
            '/backup/import', {},
            upload_files=[('passwords-file', 'good.json', content)],
            status=302)
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, 'http://localhost/backup')

        self.assertEqual(2, self.db.passwords.count())
コード例 #17
0
 def test_unicode_only_id(self):
     user = User()
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), text_type(user.id))
コード例 #18
0
 def test_unicode_only_email(self):
     user = User(email='*****@*****.**')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), '*****@*****.**')
コード例 #19
0
 def test_unicode_only_last_name(self):
     user = User(last_name='Doe')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), 'Doe')
コード例 #20
0
 def test_unicode_first_name_and_last_name(self):
     user = User(first_name='John', last_name='Doe')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), 'John Doe')
コード例 #21
0
 def test_unicode_only_screen_name(self):
     user = User(screen_name='Johnny')
     Session.add(user)
     Session.flush()
     self.assertEqual(text_type(user), 'Johnny')