public LinkRequest ResetDevice(LinkRequest linkRequest) { LinkActionRequest linkActionRequest = linkRequest?.Actions?.First(); Console.WriteLine($"simulator: RESET DEVICE for SN='{linkActionRequest?.DeviceRequest?.DeviceIdentifier?.SerialNumber}'"); return(linkRequest); }
public static void SubworkflowErrorResponse(DeviceInformation deviceInformation, LinkRequest linkRequest, string type, string code, string description) { if (linkRequest != null) { LinkActionRequest linkActionRequest = linkRequest?.Actions.First(); if (linkActionRequest.DeviceRequest == null) { linkActionRequest.DeviceRequest = new LinkDeviceRequest(); } /*linkActionRequest.DeviceRequest.LinkObjects = ErrorResponse(type, code, description); * * if (linkRequest.LinkObjects.LinkActionResponseList == null) * { * linkRequest.LinkObjects.LinkActionResponseList[0].DALActionResponse = new LinkDeviceActionResponse(); * } * linkRequest.LinkObjects.LinkActionResponseList[0].DALResponse = new LinkDALResponse * { * Devices = new List<LinkDeviceResponse> * { * new LinkDeviceResponse * { * Manufacturer = deviceInformation?.Manufacturer, * Model = deviceInformation?.Model, * SerialNumber = deviceInformation?.SerialNumber, * //CardWorkflowControls = linkActionRequest.PaymentRequest?.CardWorkflowControls * } * } * };*/ } }
public LinkRequest GetSecurityConfiguration(LinkRequest linkRequest) { LinkActionRequest linkActionRequest = linkRequest?.Actions?.First(); Console.WriteLine($"simulator: GET SECURITY CONFIGURATION for SN='{linkActionRequest?.DeviceRequest?.DeviceIdentifier?.SerialNumber}'"); return(linkRequest); }
public LinkRequest AbortCommand(LinkRequest linkRequest) { LinkActionRequest linkActionRequest = linkRequest?.Actions?.First(); Console.WriteLine($"simulator: ABORT COMMAND for SN='{linkActionRequest?.DeviceRequest?.DeviceIdentifier?.SerialNumber}'"); return(linkRequest); }
// ------------------------------------------------------------------------ // Methods that are mapped for usage in their respective sub-workflows. // ------------------------------------------------------------------------ #region --- subworkflow mapping public LinkRequest GetStatus(LinkRequest linkRequest) { LinkActionRequest linkActionRequest = linkRequest?.Actions?.First(); Console.WriteLine($"simulator: GET STATUS for SN='{linkActionRequest?.DeviceRequest?.DeviceIdentifier?.SerialNumber}'"); return(linkRequest); }
public async void DoWork_ShouldForceCompletionWithCancelation__WhenTestingGetStautsAndUserCancels() { LinkActionRequest linkActionRequest = linkRequest.Actions.First(); linkActionRequest.DeviceRequest = new LinkDeviceRequest() { //LinkObjects = new LinkDeviceRequestIPA5Object() //{ // DeviceResponseData = new LinkDeviceActionResponse // { // Errors = new List<LinkErrorValue> // { // new LinkErrorValue // { // Code = System.Enum.GetName(typeof(EventCodeType), EventCodeType.USER_CANCELED), // Description = "Canceled" // } // } // } //} }; subject.SetState(linkRequest); var timeoutPolicy = PollyPolicyResultGenerator.GetSuccessfulPolicy <LinkRequest>(); mockDeviceCancellationBroker.Setup(e => e.ExecuteWithTimeoutAsync(It.IsAny <Func <CancellationToken, LinkRequest> >(), It.IsAny <int>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(timeoutPolicy)); await subject.DoWork(); //Assert.NotNull(linkRequest.Actions[0].DeviceRequest.LinkObjects.DeviceResponseData.Errors); //Assert.Equal("USER_CANCELED", linkRequest.Actions[0].DeviceRequest.LinkObjects.DeviceResponseData.Errors[0].Code); }
public async void DoWork_ShouldForceCompletionWithCancelation__WhenTestingGetCardData(string exception, string userEvent, DeviceEvent deviceEvent) { LinkActionRequest linkActionRequest = linkRequest.Actions.First(); linkActionRequest.Action = LinkAction.Payment; linkActionRequest.DeviceRequest = new LinkDeviceRequest() { //LinkObjects = new LinkDeviceRequestIPA5Object() //{ // DeviceResponseData = new LinkDeviceActionResponse // { // Errors = new List<LinkErrorValue> // { // new LinkErrorValue // { // Code = exception, // Description = "Canceled" // } // } // } //} }; string expectedValue = linkActionRequest.Action.ToString(); Mock <ICardDevice> fakeDeviceThree = new Mock <ICardDevice>(); fakeDeviceThree.Setup(e => e.ResetDevice(It.IsAny <LinkRequest>())).Returns(linkRequest); subject.SetState(linkRequest); var timeoutPolicy = PollyPolicyResultGenerator.GetFailurePolicy <LinkRequest>(new Exception(exception)); mockDeviceCancellationBroker.Setup(e => e.ExecuteWithTimeoutAsync(It.IsAny <Func <CancellationToken, LinkRequest> >(), It.IsAny <int>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(timeoutPolicy)); mockSubController.Setup(e => e.DeviceEvent).Returns(deviceEvent); await subject.DoWork(); //mockLoggingClient.Verify(e => e.LogErrorAsync(string.Format("Unable to obtain Card Data from device - '{0}'.", userEvent), // It.IsAny<Dictionary<string, object>>()), Times.Once()); //Assert.NotNull(linkRequest.Actions[0].DeviceRequest.LinkObjects.DeviceResponseData.Errors); //Assert.Equal(exception, linkRequest.Actions[0].DeviceRequest.LinkObjects.DeviceResponseData.Errors[0].Code); //Assert.Equal(expectedValue, linkRequest.Actions[0].DeviceRequest.LinkObjects.DeviceResponseData.Errors[0].Type); //DeviceInformation actualValue = new DeviceInformation() //{ // Manufacturer = linkRequest.LinkObjects.LinkActionResponseList[0].DeviceResponse.Devices[0].Manufacturer, // Model = linkRequest.LinkObjects.LinkActionResponseList[0].DeviceResponse.Devices[0].Model, // SerialNumber = linkRequest.LinkObjects.LinkActionResponseList[0].DeviceResponse.Devices[0].SerialNumber //}; //Assert.NotEqual(deviceInformation, actualValue); }
/*internal static LinkRequest LinkGetCardDataWorkflowRequest() => * new LinkRequest() * { * Actions = new List<LinkActionRequest> { BuildLinkPaymentRequestAction() }, * MessageID = RandomGenerator.BuildRandomString(8), * Timeout = 1000 * }; * * internal static LinkRequest LinkRequestSelectCreditOrDebit() => * new LinkRequest() * { * Actions = new List<LinkActionRequest> { BuildLinkGetCreditOrDebit() }, * MessageID = RandomGenerator.BuildRandomIntegerString(1), * Timeout = 1000 * }; * * internal static LinkRequest LinkRequestGetZip() => * new LinkRequest() * { * Actions = new List<LinkActionRequest> { BuildLinkGetZipAction() }, * MessageID = RandomGenerator.BuildRandomIntegerString(5), * Timeout = 1000 * }; * * internal static LinkRequest LinkRequestGetPin() => * new LinkRequest() * { * Actions = new List<LinkActionRequest> { BuildLinkGetPinAction() }, * MessageID = RandomGenerator.BuildRandomIntegerString(4), * Timeout = 1000 * }; * * internal static LinkRequest LinkRequestDeviceUI() => * new LinkRequest() * { * Actions = new List<LinkActionRequest> { BuildLinkDeviceUIAction() }, * MessageID = RandomGenerator.BuildRandomIntegerString(4), * Timeout = 1000 * }; * * internal static LinkRequest LinkDebitWorkflowRequest() => * new LinkRequest() * { * Actions = new List<LinkActionRequest> { BuildLinkDebitWorkflow() }, * MessageID = RandomGenerator.BuildRandomString(8), * Timeout = 1000 * };*/ private static LinkActionRequest BuildLinkGetDeviceStatusAction() { var action = new LinkActionRequest { MessageID = RandomGenerator.BuildRandomString(8), Action = LinkAction.DALAction, DeviceActionRequest = new LinkDeviceActionRequest { DeviceAction = LinkDeviceActionType.GetStatus } }; return(action); }
public DeviceSubWorkflowState DetermineInitialState(LinkRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } LinkActionRequest linkActionRequest = request.Actions.First(); DeviceSubWorkflowState proposedState = ((linkActionRequest.DeviceActionRequest?.DeviceAction) switch { LinkDeviceActionType.GetStatus => DeviceSubWorkflowState.GetStatus, LinkDeviceActionType.AbortCommand => DeviceSubWorkflowState.AbortCommand, LinkDeviceActionType.ResetCommand => DeviceSubWorkflowState.ResetCommand, _ => DeviceSubWorkflowState.Undefined });