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)
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__())
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)
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())
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())
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)
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)
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'])
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()
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()
def test_unicode_only_screen_name(self): user = User(screen_name='Johnny') Session.add(user) Session.flush() self.assertEqual(text_type(user), 'Johnny')
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')
def test_unicode_only_last_name(self): user = User(last_name='Doe') Session.add(user) Session.flush() self.assertEqual(text_type(user), 'Doe')
def test_unicode_only_email(self): user = User(email='*****@*****.**') Session.add(user) Session.flush() self.assertEqual(text_type(user), '*****@*****.**')
def test_unicode_only_id(self): user = User() Session.add(user) Session.flush() self.assertEqual(text_type(user), text_type(user.id))
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())