public async Task Should_send_email_for_new_user()
        {
            var @event = CreateEvent(RefTokenType.Subject, true);

            await sut.On(@event);

            A.CallTo(() => notificatíonSender.SendInviteAsync(assigner, assignee, appName))
                .MustHaveHappened();
        }
Пример #2
0
        public async Task On(Envelope <IEvent> @event)
        {
            if (!emailSender.IsActive)
            {
                return;
            }

            if (@event.Headers.EventStreamNumber() <= 1)
            {
                return;
            }

            var now = SystemClock.Instance.GetCurrentInstant();

            var timestamp = @event.Headers.Timestamp();

            if (now - timestamp > MaxAge)
            {
                return;
            }

            if (@event.Payload is AppContributorAssigned appContributorAssigned)
            {
                if (!appContributorAssigned.Actor.IsUser || !appContributorAssigned.IsAdded)
                {
                    return;
                }

                var assignerId = appContributorAssigned.Actor.Identifier;
                var assigneeId = appContributorAssigned.ContributorId;

                var assigner = await userResolver.FindByIdAsync(assignerId);

                if (assigner == null)
                {
                    log.LogWarning("Failed to invite user: Assigner {assignerId} not found.", assignerId);
                    return;
                }

                var assignee = await userResolver.FindByIdAsync(appContributorAssigned.ContributorId);

                if (assignee == null)
                {
                    log.LogWarning("Failed to invite user: Assignee {assigneeId} not found.", assigneeId);
                    return;
                }

                var appName = appContributorAssigned.AppId.Name;

                await emailSender.SendInviteAsync(assigner, assignee, appName);
            }
        }