"""Data fixtures for Neo4j.""" from neo4j import Query as Q # Base data BASE_DATA_FIXTURE = Q(""" CREATE (v:Vendor {id: '1001'}) CREATE (s:Subaccount {id: '10001'}) CREATE (v)-[:OWNS]->(s) CREATE (sub:Subscription {name: 'TEST', followedEntity: 'Subaccount'}) """) # Profile-level subscriptions # Direct access SINGLE_IDENTITY_PROFILE_FOLLOWED_TEST = Q(""" MATCH (s:Subaccount {id: '10001'}) WITH s CREATE (i:Identity {id: 'identity-1', active: $user_active}) CREATE (p:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p) CREATE (p)-[:HAS_FOLLOWED_TEST]->(s) """) TWO_IDENTITIES_PROFILE_FOLLOWED_TEST = Q(""" MATCH (s:Subaccount {id: '10001'}) WITH s CREATE (i1:Identity {id: 'identity-1', active: $user_active}) CREATE (p1:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i1)-[:HAS_PROFILE]->(p1) CREATE (p1)-[:HAS_FOLLOWED_TEST]->(s) CREATE (i2:Identity {id: 'identity-2', active: $user_active}) CREATE (p2:Profile {profileId: 200, profileType: 'LabelProfile'}) CREATE (i2)-[:HAS_PROFILE]->(p2) CREATE (p2)-[:HAS_FOLLOWED_TEST]->(s) """) # Indirect access (from vendor) SINGLE_IDENTITY_PROFILE_VENDOR_FOLLOWED_TEST = Q(""" MATCH (v:Vendor {id: '1001'}) WITH v CREATE (i:Identity {id: 'identity-1', active: $user_active}) CREATE (p:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p) CREATE (p)-[:HAS_FOLLOWED_TEST]->(v) """) TWO_IDENTITIES_PROFILE_VENDOR_FOLLOWED_TEST = Q(""" MATCH (v:Vendor {id: '1001'}) WITH v CREATE (i1:Identity {id: 'identity-1', active: $user_active}) CREATE (p1:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i1)-[:HAS_PROFILE]->(p1) CREATE (p1)-[:HAS_FOLLOWED_TEST]->(v) CREATE (i2:Identity {id: 'identity-2', active: $user_active}) CREATE (p2:Profile {profileId: 200, profileType: 'LabelProfile'}) CREATE (i2)-[:HAS_PROFILE]->(p2) CREATE (p2)-[:HAS_FOLLOWED_TEST]->(v) """) FANOUT_DEDUPLICATION = Q(""" MATCH (v:Vendor {id: '1001'}), (s:Subaccount {id: '10001'}) WITH v, s CREATE (i:Identity {id: 'identity-1', active: $user_active}) CREATE (p1:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p1) CREATE (p1)-[:HAS_ACCESS_TO]->(v) CREATE (p1)-[:HAS_FOLLOWED_TEST]->(s) CREATE (p2:Profile {profileId: 101, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p2) CREATE (p2)-[:HAS_ACCESS_TO]->(s) CREATE (p2)-[:HAS_FOLLOWED_TEST]->(s) """) # Identity-level subscriptions # Direct access SINGLE_IDENTITY_AUTO_FOLLOWED_TEST = Q(""" MATCH (s:Subaccount {id: '10001'}), (sub:Subscription {name: 'TEST', followedEntity: 'Subaccount'}) WITH s, sub CREATE (i:Identity {id: 'identity-1', active: $user_active}) CREATE (p:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p) CREATE (i)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p)-[:HAS_ACCESS_TO]->(s) """) SINGLE_IDENTITY_NO_ACCESS_AUTO_FOLLOWED_TEST = Q(""" MATCH (s:Subaccount {id: '10001'}), (sub:Subscription {name: 'TEST', followedEntity: 'Subaccount'}) WITH s, sub CREATE (i:Identity {id: 'identity-1', active: 'Y'}) CREATE (p:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p) CREATE (i)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p)-[:DELETED_HAS_ACCESS_TO]->(s) """) TWO_IDENTITIES_AUTO_FOLLOWED_TEST = Q(""" MATCH (s:Subaccount {id: '10001'}), (sub:Subscription {name: 'TEST', followedEntity: 'Subaccount'}) WITH s, sub CREATE (i1:Identity {id: 'identity-1', active: $user_active}) CREATE (p1:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i1)-[:HAS_PROFILE]->(p1) CREATE (i1)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p1)-[:HAS_ACCESS_TO]->(s) CREATE (i2:Identity {id: 'identity-2', active: $user_active}) CREATE (p2:Profile {profileId: 200, profileType: 'LabelProfile'}) CREATE (i2)-[:HAS_PROFILE]->(p2) CREATE (i2)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p2)-[:HAS_ACCESS_TO]->(s) """) # Indirect access (from vendor) SINGLE_IDENTITY_AUTO_FOLLOWED_VENDOR_TEST = Q(""" MATCH (v:Vendor {id: '1001'}), (sub:Subscription {name: 'TEST', followedEntity: 'Subaccount'}) WITH v, sub CREATE (i:Identity {id: 'identity-1', active: $user_active}) CREATE (p:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p) CREATE (i)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p)-[:HAS_ACCESS_TO]->(v) """) SINGLE_IDENTITY_NO_ACCESS_AUTO_FOLLOWED_VENDOR_TEST = Q(""" MATCH (v:Vendor {id: '1001'}), (sub:Subscription {name: 'TEST', followedEntity: 'Subaccount'}) WITH v, sub CREATE (i:Identity {id: 'identity-1', active: 'Y'}) CREATE (p:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i)-[:HAS_PROFILE]->(p) CREATE (i)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p)-[:DELETED_HAS_ACCESS_TO]->(v) """) TWO_IDENTITIES_AUTO_FOLLOWED_VENDOR_TEST = Q(""" MATCH (v:Vendor {id: '1001'}), (sub:Subscription {name: 'TEST', followedEntity: 'Subaccount'}) WITH v, sub CREATE (i1:Identity {id: 'identity-1', active: $user_active}) CREATE (p1:Profile {profileId: 100, profileType: 'LabelProfile'}) CREATE (i1)-[:HAS_PROFILE]->(p1) CREATE (i1)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p1)-[:HAS_ACCESS_TO]->(v) CREATE (i2:Identity {id: 'identity-2', active: $user_active}) CREATE (p2:Profile {profileId: 200, profileType: 'LabelProfile'}) CREATE (i2)-[:HAS_PROFILE]->(p2) CREATE (i2)-[:HAS_AUTO_FOLLOWED]->(sub) CREATE (p2)-[:HAS_ACCESS_TO]->(v) """)