def evolve(root, config=None): from papaye.models import Root, Package, Release, ReleaseFile, User new_root = Root() new_root['repository'] = Root() context = context_from_root(root) for package_name in context.get('repository', tuple()): package = context['repository'][package_name] new_root['repository'][package_name] = Package(package.name) for release_name in package.releases: release = package[release_name] try: new_root['repository'][package_name][release_name] = Release( release.__name__, release.__name__, release.original_metadata ) for release_filename in release.release_files: release_file = release[release_filename] new_root['repository'][package_name][release_name][release_filename] = ReleaseFile( release_file.filename, release_file.content.open().read(), release_file.md5_digest, release_file.status, ) except: print('{} v{} is corrupt! He won\'t be imported'.format(package.__name__, release.__name__)) new_root['user'] = Root() for username in context.get('user', tuple()): user = context['user'][username] new_user = User('', '') new_user.username = user.username new_user.password = user.password new_user.groups = user.groups new_root['user'][username] = new_user root[APP_ROOT_NAME] = new_root context.evolved = 6 return context
def test_by_username(self): from papaye.models import User from papaye.factories import user_root_factory root = user_root_factory(self.request) root['a_user'] = User('a_user', 'password') result = User.by_username('a_user', self.request) self.assertIsInstance(result, User) self.assertEqual(result.username, 'a_user')
def test_hash_password(self): from papaye.models import User expected = 'b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a' expected += '2ea6d103fd07c95385ffab0cacbc86' result = User('a_user', 'password') self.assertEqual(result.password, expected)
def create_admin_user(dbconn): username = input('username for administrator (default="admin"): ') username = '******' if not username or username == '' else username password = getpass.getpass() admin = User(username, password, groups=['group:admin']) root = user_root_factory(dbconn) root[username] = admin transaction.commit()
def index_view(context, request): username = request.session.get('username', '') result = {'username': username} if username == '': result['admin'] = False else: result['admin'] = True if 'group:admin' in User.by_username(username, request).groups else False return result
def test_login_view_bad_password(): from papaye.models import User from papaye.views.index import login_view config = testing.setUp() authn_policy = AuthTktAuthenticationPolicy('seekrit', hashalg='sha512') authz_policy = ACLAuthorizationPolicy() config.set_authorization_policy(authz_policy) config.set_authentication_policy(authn_policy) request = testing.DummyRequest() request.POST = {'login': '******', 'password': '******'} request.root = {'user': User('user', 'bad password')} result = login_view(request) assert isinstance(result, Response) is True assert result.status_code == 401 assert 'username' not in request.session
def auth_check_func(username, password, request): user = User.by_username(username, request) if user and user.password_verify(password): return user.groups return None
def test_by_username_without_result(self): from papaye.models import User result = User.by_username('a_user', self.request) self.assertIsNone(result)