Пример #1
0
        public void Event_Changes_Flow_Instances_State_2()
        {
            var flowDefinition = new FlowDefinition(
                states: new List <State>()
            {
                new State(
                    name: "StateA",
                    events:
                    new List <Event>()
                {
                    new Event(
                        name: "EventA",
                        destinationState: "StateB"
                        )
                }
                    ),
                new State(name: "StateB")
            }
                );

            var flowInstance = new FlowInstance(
                currentState: "StateA",
                flowDefinition: flowDefinition
                );

            SendEventResult result = flowInstance.SendEvent("EventA");

            Assert.IsTrue(result.Succeeded);
            Assert.AreEqual("StateB", flowInstance.CurrentState);
        }
Пример #2
0
        public void Undefined_Event_Returns_Unsuccessful_Result()
        {
            var flowDefinition = new FlowDefinition(
                states: new List <State>()
            {
                new State(
                    name: "StateA",
                    events:
                    new List <Event>()
                {
                    new Event(name: "EventA")
                }
                    )
            }
                );

            var flowInstance = new FlowInstance(
                currentState: "StateA",
                flowDefinition: flowDefinition
                );

            SendEventResult result = flowInstance.SendEvent("EventB");

            Assert.AreEqual(false, result.Succeeded);
        }
Пример #3
0
        public override async Task <SendEventResult> SendEventAsync(SubscriptionInfo subscription, IList <EventData> events)
        {
            var result = new SendEventResult();

            try
            {
                var client = new EventGridPublisherClient(new Uri(subscription.ConnectionString), new AzureKeyCredential(subscription.AccessKey));

                var cloudEvents = events.Select(x => new CloudEvent(subscription.Id ?? nameof(AzureEventBusProvider), x.EventId, x)).ToList();

                var eventGridResponse = await client.SendEventsAsync(cloudEvents);

                result.Status = eventGridResponse.Status;
            }
            catch (ArgumentException)
            {
                result.Status       = StatusCodes.Status400BadRequest;
                result.ErrorMessage = "Either key or endpoint are empty";
            }
            catch (UriFormatException)
            {
                result.Status       = StatusCodes.Status400BadRequest;
                result.ErrorMessage = "Invalid endpoint URI format";
            }
            catch (RequestFailedException requestFailedEx)
            {
                result.Status       = requestFailedEx.Status;
                result.ErrorMessage = requestFailedEx.Message;
            }
            catch (Exception ex)
            {
                result.Status       = StatusCodes.Status500InternalServerError;
                result.ErrorMessage = ex.Message;
            }

            return(result);
        }