api/tests/test_neo4j_users.py
kcar b452c9f593
Some checks failed
api-ci-deploy / test-build-deploy (push) Has been cancelled
test: add dev stack integration checks
2026-05-27 23:24:28 +01:00

35 lines
1.4 KiB
Python

import os
from neo4j import GraphDatabase
def test_cc_users_database_is_populated_from_seed_profiles():
url = os.getenv('APP_BOLT_URL')
user = os.getenv('USER_NEO4J')
password = os.getenv('PASSWORD_NEO4J')
assert url and user and password
with GraphDatabase.driver(url, auth=(user, password)) as driver:
with driver.session(database='cc.users') as session:
result = session.run('''
CALL { MATCH (u:User) RETURN count(u) AS users }
CALL { MATCH (u:User {user_type: 'teacher'}) RETURN count(u) AS teachers }
CALL { MATCH (u:User {user_type: 'student'}) RETURN count(u) AS students }
CALL { MATCH (:User)-[r:MEMBER_OF]->(:Institute) RETURN count(r) AS memberships }
CALL { MATCH (i:Institute) RETURN count(i) AS institutes }
CALL {
MATCH (bad:User)
WHERE bad.uuid_string IS NULL OR bad.user_email IS NULL OR bad.cc_username IS NULL
OR bad.user_type IS NULL OR bad.user_name IS NULL OR bad.user_db_name IS NULL
RETURN count(bad) AS bad_users
}
RETURN users, teachers, students, memberships, institutes, bad_users
''').single()
assert dict(result) == {
'users': 21,
'teachers': 15,
'students': 6,
'memberships': 21,
'institutes': 2,
'bad_users': 0,
}