def test_get_matching_users(app, db, es, test_users): with db.session.begin_nested(): actor = RecordRoleActor(name='test', originator=test_users.u1, path='/roles') db.session.add(actor) assert set() == set(actor.get_matching_users()) assert {test_users.u1.id, test_users.u2.id} == set(actor.get_matching_users(record={ 'roles': test_users.r1.id }))
def test_user_matches(app, db, es, test_users): with db.session.begin_nested(): actor = RecordRoleActor(name='test', originator=test_users.u1, path='/roles') db.session.add(actor) assert not actor.user_matches(test_users.u1, {'system_roles': [authenticated_user]}) assert not actor.user_matches(test_users.u2, {'system_roles': [authenticated_user]}) assert not actor.user_matches(test_users.u3, {'system_roles': [authenticated_user]}) assert not actor.user_matches(AnonymousUser(), {'system_roles': [any_user]}) assert actor.user_matches(test_users.u1, {'system_roles': [authenticated_user]}, record={ 'roles': test_users.r1.id }) assert actor.user_matches(test_users.u2, {'system_roles': [authenticated_user]}, record={ 'roles': test_users.r1.id }) assert not actor.user_matches(test_users.u3, {'system_roles': [authenticated_user]}, record={ 'roles': test_users.r1.id }) assert not actor.user_matches(AnonymousUser(), {'system_roles': [any_user]}, record={ 'roles': test_users.r1.id })
def test_get_elasticsearch_query(app, db, es, test_users): with db.session.begin_nested(): actor = RecordRoleActor(name='test', originator=test_users.u1, path='/roles') db.session.add(actor) assert Terms(_invenio_explicit_acls__role=[test_users.r1.id]) == \ actor.get_elasticsearch_query(test_users.u1, {'system_roles': [authenticated_user]}) assert Terms(_invenio_explicit_acls__role=[test_users.r1.id, test_users.r2.id]) == \ actor.get_elasticsearch_query(test_users.u2, {'system_roles': [authenticated_user]}) assert Terms(_invenio_explicit_acls__role=[test_users.r2.id]) == \ actor.get_elasticsearch_query(test_users.u3, {'system_roles': [authenticated_user]}) assert actor.get_elasticsearch_query(AnonymousUser(), {'system_roles': [any_user]}) is None
def test_get_elasticsearch_representation(app, db, es, test_users): with db.session.begin_nested(): actor = RecordRoleActor(name='test', originator=test_users.u1, path='/roles') db.session.add(actor) with pytest.raises(Exception, match='This Actor works on record, so pass one!'): actor.get_elasticsearch_representation() assert [test_users.r1.id] == actor.get_elasticsearch_representation(record={ 'roles': test_users.r1.id }) assert [test_users.r1.id] == actor.get_elasticsearch_representation(record={ 'roles': [test_users.r1.id] }) others = ['aaa'] assert [test_users.r1.id] + others == actor.get_elasticsearch_representation(others, record={ 'roles': [test_users.r1.id] })
def test_get_es_schema(app, db, es, test_users): with db.session.begin_nested(): actor = RecordRoleActor(name='test', originator=test_users.u1, path='/roles') db.session.add(actor) assert {'type': 'integer'} == actor.get_elasticsearch_schema(ES_VERSION[0])
def test_str(app, db, test_users): with db.session.begin_nested(): actor = RecordRoleActor(name='test', originator=test_users.u1, path='/roles') db.session.add(actor) assert 'RecordRoleActor[test; /roles]' == str(actor)