예제 #1
0
def remote_accounts(db, users):
    """Create Remote Accounts for experiment groups."""
    with db.session.begin_nested():
        accounts = [
            RemoteAccount.create(1, 'dev', dict(groups=['cms-members'])),
            RemoteAccount.create(2, 'dev', dict(groups=['cms-members'])),
            RemoteAccount.create(3, 'dev', dict(groups=['alice-member'])),
            RemoteAccount.create(5, 'dev', dict(groups=['atlas-active-members-all'])),
            RemoteAccount.create(7, 'dev', dict(groups=['lhcb-general']))
        ]

    db.session.commit()
    return accounts
예제 #2
0
    def test_settings_view(self):
        # Create a remove account (linked account)
        from invenio_oauthclient.models import RemoteAccount
        RemoteAccount.create(1, 'testid', None)

        self.assert401(self.client.get(url_for('oauthclient_settings.index'),
                                       follow_redirects=True))
        self.login("admin", "")

        res = self.client.get(url_for('oauthclient_settings.index'))
        self.assert200(res)
        assert 'MyLinkedTestAccount' in res.data
        assert url_for('oauthclient.disconnect', remote_app='test') in res.data
        assert url_for('oauthclient.login', remote_app='full') in res.data
        assert url_for('oauthclient.login', remote_app='test_invalid') in \
            res.data
예제 #3
0
def remote_account(app, user_without_role):
    """Create a remote token from user data."""
    remote_account = RemoteAccount.create(1, 'dev', dict())
    remote_token = RemoteToken.create(user_without_role.id, 'dev', 'token',
                                      'secret')

    return remote_account, remote_token
예제 #4
0
    def test_settings_view(self):
        # Create a remove account (linked account)
        from invenio_oauthclient.models import RemoteAccount
        RemoteAccount.create(1, 'testid', None)

        self.assert401(
            self.client.get(url_for('oauthclient_settings.index'),
                            follow_redirects=True))
        self.login("admin", "")

        res = self.client.get(url_for('oauthclient_settings.index'))
        self.assert200(res)
        assert 'MyLinkedTestAccount' in res.data
        assert url_for('oauthclient.disconnect', remote_app='test') in res.data
        assert url_for('oauthclient.login', remote_app='full') in res.data
        assert url_for('oauthclient.login', remote_app='test_invalid') in \
            res.data
예제 #5
0
def remote_account_fixture(app, models_fixture):
    """Create a remote token from user data."""
    datastore = app.extensions['security'].datastore
    user = datastore.find_user(email='*****@*****.**')

    remote_account = RemoteAccount.create(1, 'dev', dict())
    remote_token = RemoteToken.create(user.id, 'dev', 'token', 'secret')

    return remote_account, remote_token
예제 #6
0
파일: conftest.py 프로젝트: zenodo/zenodo
def g_remoteaccounts(app, db, g_remoteaccounts_data):
    """Fixture for RemoteAccount objects."""
    for rad in g_remoteaccounts_data:
        ra = RemoteAccount.create(rad['user_id'], 'changeme',
                                  rad['extra_data'])
        db.session.add(ra)
        db.session.commit()
        rad['id'] = ra.id
    return g_remoteaccounts_data
예제 #7
0
def g_remoteaccounts(app, db, g_remoteaccounts_data):
    """Fixture for RemoteAccount objects."""
    for rad in g_remoteaccounts_data:
        ra = RemoteAccount.create(rad['user_id'], 'changeme',
                                  rad['extra_data'])
        db.session.add(ra)
        db.session.commit()
        rad['id'] = ra.id
    return g_remoteaccounts_data
예제 #8
0
def test_get_create_remote_account(app, example):
    """Test create remote account."""
    created_acc = RemoteAccount.create(1, "dev", dict(somekey="somevalue"))
    assert created_acc

    retrieved_acc = RemoteAccount.get(1, "dev")
    assert created_acc.id == retrieved_acc.id
    assert retrieved_acc.extra_data == dict(somekey="somevalue")

    db.session.delete(retrieved_acc)
    assert RemoteAccount.get(1, "dev") is None
예제 #9
0
def test_get_create_remote_account(app, example):
    """Test create remote account."""
    created_acc = RemoteAccount.create(1, "dev", dict(somekey="somevalue"))
    assert created_acc

    retrieved_acc = RemoteAccount.get(1, "dev")
    assert created_acc.id == retrieved_acc.id
    assert retrieved_acc.extra_data == dict(somekey="somevalue")

    db.session.delete(retrieved_acc)
    assert RemoteAccount.get(1, "dev") is None
예제 #10
0
def test_get_create_remote_account(app, models_fixture):
    """Test create remote account."""
    created_acc = RemoteAccount.create(1, 'dev', dict(somekey='somevalue'))
    assert created_acc

    retrieved_acc = RemoteAccount.get(1, 'dev')
    assert created_acc.id == retrieved_acc.id
    assert retrieved_acc.extra_data == dict(somekey='somevalue')

    db.session.delete(retrieved_acc)
    assert RemoteAccount.get(1, 'dev') is None
    def test_get_create(self):
        from invenio_oauthclient.models import RemoteAccount

        created_acc = RemoteAccount.create(1, "dev", dict(somekey="somevalue"))
        assert created_acc

        retrieved_acc = RemoteAccount.get(1, "dev")
        assert created_acc.id == retrieved_acc.id
        assert retrieved_acc.extra_data == dict(somekey="somevalue")

        db.session.delete(retrieved_acc)
        assert RemoteAccount.get(1, "dev") is None
예제 #12
0
 def create_invenio_remote_account(self, user_id, ldap_user):
     """Return new user entry."""
     employee_id = ldap_user["remote_account_person_id"]
     department = ldap_user["remote_account_department"]
     mailbox = ldap_user["remote_account_mailbox"]
     return RemoteAccount.create(
         client_id=self.client_id,
         user_id=user_id,
         extra_data=dict(person_id=employee_id,
                         department=department,
                         mailbox=mailbox),
     )
예제 #13
0
    def test_get_create(self):
        from invenio_oauthclient.models import RemoteAccount

        created_acc = RemoteAccount.create(1, "dev", dict(somekey="somevalue"))
        assert created_acc

        retrieved_acc = RemoteAccount.get(1, "dev")
        assert created_acc.id == retrieved_acc.id
        assert retrieved_acc.extra_data == dict(somekey="somevalue")

        db.session.delete(retrieved_acc)
        assert RemoteAccount.get(1, "dev") is None
예제 #14
0
def test_get_create_remote_account(models_fixture):
    """Test create remote account."""
    app = models_fixture
    created_acc = RemoteAccount.create(1, 'dev', dict(somekey='somevalue'))
    assert created_acc

    retrieved_acc = RemoteAccount.get(1, 'dev')
    assert created_acc.id == retrieved_acc.id
    assert retrieved_acc.extra_data == dict(somekey='somevalue')

    db.session.delete(retrieved_acc)
    assert RemoteAccount.get(1, 'dev') is None
예제 #15
0
def test_settings_view(views_fixture):
    """Test settings view."""
    app = views_fixture
    app.login_manager.login_view = None
    login_manager = app.login_manager
    datastore = app.extensions['invenio-accounts'].datastore

    @login_manager.user_loader
    def load_user(user_id):
        return user

    @app.route('/foo_login')
    def login():
        user = datastore.find_user(email='*****@*****.**')
        login_user(user)
        return 'Logged In'

    with app.app_context():
        with app.test_client() as client:
            user = datastore.find_user(email='*****@*****.**')
            RemoteAccount.create(user.get_id(), 'testid', None)

            resp = client.get(url_for('invenio_oauthclient_settings.index'),
                              follow_redirects=False)
            assert resp.status_code == 401

            # make a fake login (using my login function)
            client.get('/foo_login', follow_redirects=True)

            resp = client.get(url_for('invenio_oauthclient_settings.index'),
                              follow_redirects=True)
            assert resp.status_code == 200
            assert b'MyLinkedTestAccount' in resp.data
            assert url_for('invenio_oauthclient.disconnect',
                           remote_app='test') in resp.data.decode('utf-8')
            assert url_for('invenio_oauthclient.login',
                           remote_app='full') in resp.data.decode('utf-8')
            assert url_for(
                'invenio_oauthclient.login',
                remote_app='test_invalid') in resp.data.decode('utf-8')
예제 #16
0
def test_settings_view(views_fixture):
    """Test settings view."""
    app = views_fixture
    app.login_manager.login_view = None
    login_manager = app.login_manager
    datastore = app.extensions['invenio-accounts'].datastore

    @login_manager.user_loader
    def load_user(user_id):
        return user

    @app.route('/foo_login')
    def login():
        user = datastore.find_user(email="*****@*****.**")
        login_user(user)
        return "Logged In"

    with app.app_context():
        with app.test_client() as client:
            user = datastore.find_user(email="*****@*****.**")
            RemoteAccount.create(user.get_id(), 'testid', None)

            resp = client.get(url_for('invenio_oauthclient_settings.index'),
                              follow_redirects=False)
            assert resp.status_code == 401

            # make a fake login (using my login function)
            client.get('/foo_login', follow_redirects=True)

            resp = client.get(url_for('invenio_oauthclient_settings.index'),
                              follow_redirects=True)
            assert resp.status_code == 200
            assert b'MyLinkedTestAccount' in resp.data
            assert url_for('invenio_oauthclient.disconnect',
                           remote_app='test') in resp.data.decode("utf-8")
            assert url_for('invenio_oauthclient.login',
                           remote_app='full') in resp.data.decode("utf-8")
            assert url_for(
                'invenio_oauthclient.login',
                remote_app='test_invalid') in resp.data.decode("utf-8")
def test_settings_view():
    """Test settings view."""
    app = setup_app()
    app.login_manager.login_view = None
    login_manager = app.login_manager
    datastore = app.extensions['invenio-accounts'].datastore
    datastore.create_user(email="*****@*****.**", password="******")
    user = datastore.find_user(email="*****@*****.**")

    @login_manager.user_loader
    def load_user(user_id):
        return user

    @app.route('/foo_login')
    def login():
        login_user(user)
        return "Logged In"

    with app.test_client() as client:
        # Create a remove account (linked account)
        RemoteAccount.create(user.id, 'testid', None)

        resp = client.get(url_for('invenio_oauthclient_settings.index'),
                          follow_redirects=False)
        assert resp.status_code == 401

        # make a fake login (using my login function)
        client.get('/foo_login', follow_redirects=True)

        resp = client.get(url_for('invenio_oauthclient_settings.index'),
                          follow_redirects=True)
        assert resp.status_code == 200
        assert b'MyLinkedTestAccount' in resp.data
        assert url_for('invenio_oauthclient.disconnect',
                       remote_app='test') in resp.data.decode("utf-8")
        assert url_for('invenio_oauthclient.login',
                       remote_app='full') in resp.data.decode("utf-8")
        assert url_for('invenio_oauthclient.login',
                       remote_app='test_invalid') in resp.data.decode("utf-8")
예제 #18
0
def test_settings_view():
    """Test settings view."""
    app = setup_app()
    app.login_manager.login_view = None
    login_manager = app.login_manager
    datastore = app.extensions['invenio-accounts'].datastore
    datastore.create_user(email="*****@*****.**", password="******")
    user = datastore.find_user(email="*****@*****.**")

    @login_manager.user_loader
    def load_user(user_id):
        return user

    @app.route('/foo_login')
    def login():
        login_user(user)
        return "Logged In"

    with app.test_client() as client:
        # Create a remove account (linked account)
        RemoteAccount.create(user.id, 'testid', None)

        resp = client.get(url_for('invenio_oauthclient_settings.index'),
                          follow_redirects=False)
        assert resp.status_code == 401

        # make a fake login (using my login function)
        client.get('/foo_login', follow_redirects=True)

        resp = client.get(url_for('invenio_oauthclient_settings.index'),
                          follow_redirects=True)
        assert resp.status_code == 200
        assert b'MyLinkedTestAccount' in resp.data
        assert url_for('invenio_oauthclient.disconnect',
                       remote_app='test') in resp.data.decode("utf-8")
        assert url_for('invenio_oauthclient.login',
                       remote_app='full') in resp.data.decode("utf-8")
        assert url_for('invenio_oauthclient.login',
                       remote_app='test_invalid') in resp.data.decode("utf-8")
예제 #19
0
def github_remote_accounts(datadir, users, db):
    """Load GitHub remote account objects."""
    # Create records and PIDs for GitHub releases
    for recid in ('100', '101', '200', '201'):
        r = Record.create({})
        PersistentIdentifier.create('recid', recid, object_uuid=r.id)
    db.session.commit()

    with open(join(datadir, 'github_remote_accounts.json')) as fp:
        gh_remote_accounts = json.load(fp)
    remote_accounts = []
    for idx, gh_ra in enumerate(gh_remote_accounts):
        assert users[idx]['id'] == gh_ra['user_id']
        ra = RemoteAccount.create(gh_ra['user_id'], 'clientid',
                                  gh_ra['extra_data'])
        remote_accounts.append(ra)
    return remote_accounts
예제 #20
0
def github_remote_accounts(datadir, users, db):
    """Load GitHub remote account objects."""
    # Create records and PIDs for GitHub releases
    for recid in ('100', '101', '200', '201'):
        r = Record.create({})
        PersistentIdentifier.create('recid', recid, object_uuid=r.id)
    db.session.commit()

    with open(join(datadir, 'github_remote_accounts.json')) as fp:
        gh_remote_accounts = json.load(fp)
    remote_accounts = []
    for idx, gh_ra in enumerate(gh_remote_accounts):
        assert users[idx]['id'] == gh_ra['user_id']
        ra = RemoteAccount.create(gh_ra['user_id'], 'clientid',
                                  gh_ra['extra_data'])
        remote_accounts.append(ra)
    return remote_accounts