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); }
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); }
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); }