mirror of
https://github.com/simple-login/app.git
synced 2024-11-13 23:51:13 +01:00
47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
|
from app import config
|
||
|
from app.db import Session
|
||
|
from app.events.event_dispatcher import Dispatcher
|
||
|
from app.events.generated import event_pb2
|
||
|
from app.jobs.event_jobs import send_alias_creation_events_for_user
|
||
|
from app.models import Alias
|
||
|
from tests.utils import create_partner_linked_user
|
||
|
|
||
|
|
||
|
class MemStoreDispatcher(Dispatcher):
|
||
|
def __init__(self):
|
||
|
self.events = []
|
||
|
|
||
|
def send(self, event: bytes):
|
||
|
self.events.append(event)
|
||
|
|
||
|
|
||
|
def setup_module():
|
||
|
config.EVENT_WEBHOOK = True
|
||
|
|
||
|
|
||
|
def teardown_module():
|
||
|
config.EVENT_WEBHOOK = False
|
||
|
|
||
|
|
||
|
def test_send_alias_creation_events():
|
||
|
[user, partner_user] = create_partner_linked_user()
|
||
|
aliases = [Alias.create_new_random(user) for i in range(2)]
|
||
|
Session.flush()
|
||
|
dispatcher = MemStoreDispatcher()
|
||
|
send_alias_creation_events_for_user(user, dispatcher=dispatcher, chunk_size=2)
|
||
|
# 2 batches. 1st newsletter + first alias. 2nd last alias
|
||
|
assert len(dispatcher.events) == 2
|
||
|
decoded_event = event_pb2.Event.FromString(dispatcher.events[0])
|
||
|
assert decoded_event.user_id == user.id
|
||
|
assert decoded_event.external_user_id == partner_user.external_user_id
|
||
|
event_list = decoded_event.content.alias_create_list.events
|
||
|
assert len(event_list) == 2
|
||
|
# 0 is newsletter alias
|
||
|
assert event_list[1].alias_id == aliases[0].id
|
||
|
decoded_event = event_pb2.Event.FromString(dispatcher.events[1])
|
||
|
assert decoded_event.user_id == user.id
|
||
|
assert decoded_event.external_user_id == partner_user.external_user_id
|
||
|
event_list = decoded_event.content.alias_create_list.events
|
||
|
assert len(event_list) == 1
|
||
|
assert event_list[0].alias_id == aliases[1].id
|