示例#1
0
        public async Task Consume_SubscriptionExistAndNoMember_Created()
        {
            var sub = new ClubSubscription()
            {
                ClubId             = Guid.NewGuid(),
                ClubSubscriptionId = Guid.NewGuid()
            };

            using (var context = _factory.CreateContext())
            {
                context.ClubSubscriptions.Add(sub);
                context.SaveChanges();
            }

            var @event = new SignUpSubscriptionSuccessEvent()
            {
                ClubSubscriptionId = sub.ClubSubscriptionId,
                UserId             = Guid.NewGuid()
            };

            await SendEvent(@event);

            using (var context = _factory.CreateContext())
            {
                Assert.That(context.ClubMembers.Count(), Is.EqualTo(1));
                var memberDb = context.ClubMembers.Find(@event.UserId, sub.ClubId);
                Assert.That(memberDb, Is.Not.Null);
                Assert.That(memberDb.ClubSubscriptionId, Is.EqualTo(sub.ClubSubscriptionId));
            }
            await _publishEndpoint.Received(1).Publish(Arg.Any <ClubMemberCreatedEvent>());

            await _publishEndpoint.Received(0).Publish(Arg.Any <ClubMemberUpdatedEvent>());
        }
示例#2
0
        public async Task <IActionResult> Index()
        {
            var json = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync();

            Log.Information(json);
            try
            {
                var stripeEvent = EventUtility.ParseEvent(json);
                if (stripeEvent.Type == Stripe.Events.PaymentIntentSucceeded)
                {
                    var paymentIntent = stripeEvent.Data.Object as PaymentIntent;
                    if (paymentIntent.Metadata.Count == 2)
                    {
                        var e = new SignUpEventSuccessEvent()
                        {
                            UserId  = new Guid(paymentIntent.Metadata["UserId"]),
                            EventId = new Guid(paymentIntent.Metadata["EventId"])
                        };
                        Log.Information("User: "******" signed up to eventId: " + e.EventId);
                        await _eventService.SaveEventAndDbContextChangesAsync(e);

                        await _eventService.PublishEventAsync(e);
                    }
                }
                else if (stripeEvent.Type == Stripe.Events.CustomerSubscriptionCreated)
                {
                    var sub = stripeEvent.Data.Object as Subscription;
                    if (sub.Metadata.Count == 2)
                    {
                        var e = new SignUpSubscriptionSuccessEvent()
                        {
                            UserId             = new Guid(sub.Metadata["UserId"]),
                            ClubSubscriptionId = new Guid(sub.Metadata["ClubSubscriptionId"])
                        };
                        Log.Information("User: "******" signed up to subscription: " + e.ClubSubscriptionId);
                        await _eventService.SaveEventAndDbContextChangesAsync(e);

                        await _eventService.PublishEventAsync(e);
                    }
                }
                else
                {
                    Console.WriteLine("Unhandled event type: {0}", stripeEvent.Type);
                }
                return(Ok());
            }
            catch
            {
            }

            return(BadRequest());
        }
示例#3
0
        public async Task Consume_SubscriptionMustExist_DoesNothing()
        {
            var @event = new SignUpSubscriptionSuccessEvent()
            {
                ClubSubscriptionId = Guid.NewGuid(),
                UserId             = Guid.NewGuid()
            };

            await SendEvent(@event);

            await _publishEndpoint.Received(0).Publish(Arg.Any <ClubMemberCreatedEvent>());

            await _publishEndpoint.Received(0).Publish(Arg.Any <ClubMemberUpdatedEvent>());
        }
示例#4
0
        public async Task <IActionResult> subCheat(SubCheatRequest request)
        {
            var e = new SignUpSubscriptionSuccessEvent()
            {
                UserId             = request.UserId,
                ClubSubscriptionId = request.ClubSubscriptionId
            };

            Log.Information("User: "******" signed up to subscription: " + e.ClubSubscriptionId);
            await _eventService.SaveEventAndDbContextChangesAsync(e);

            await _eventService.PublishEventAsync(e);

            return(Ok());
        }