public void ToLogicAppAction_WithInputOutput_CreatesAlternative()
        {
            // Arrange
            var trackedProperties = new Dictionary <string, string>
            {
                [Guid.NewGuid().ToString()] = BogusGenerator.Random.Word()
            };

            string trackedPropertiesJson = JsonConvert.SerializeObject(trackedProperties).OrNull(BogusGenerator);

            var workflowAction = new WorkflowRunAction(
                name: BogusGenerator.Internet.DomainName(),
                startTime: BogusGenerator.Date.Past(),
                endTime: BogusGenerator.Date.Past(),
                status: GenerateStatus(),
                error: BogusGenerator.Random.Bytes(10),
                trackedProperties: trackedPropertiesJson);
            var inputs  = BogusGenerator.Random.String();
            var outputs = BogusGenerator.Random.String();

            // Act
            var actual = LogicAppConverter.ToLogicAppAction(workflowAction, inputs, outputs);

            // Assert
            Assert.NotNull(actual);
            Assert.Equal(workflowAction.Name, actual.Name);
            Assert.Equal(workflowAction.StartTime, actual.StartTime);
            Assert.Equal(workflowAction.EndTime, actual.EndTime);
            Assert.Equal(workflowAction.Status, actual.Status.ToString());
            Assert.Equal(workflowAction.Error, actual.Error);
            Assert.Equal(inputs, actual.Inputs);
            Assert.Equal(outputs, actual.Outputs);
            Assert.True(trackedPropertiesJson == null || trackedProperties.SequenceEqual(actual.TrackedProperties));
        }
        private static IDictionary <string, string> DeserializeTrackedProperties(WorkflowRunAction workflowRunAction)
        {
            if (workflowRunAction.TrackedProperties is null)
            {
                return(new Dictionary <string, string>());
            }

            var trackedPropertiesJson = workflowRunAction.TrackedProperties.ToString();
            var trackedProperties     = JsonConvert.DeserializeObject <Dictionary <string, string> >(trackedPropertiesJson);

            return(trackedProperties);
        }
        /// <summary>
        /// Convert to <see cref="LogicAppAction"/>.
        /// </summary>
        public static LogicAppAction ToLogicAppAction(WorkflowRunAction workflowRunAction, dynamic input, dynamic output)
        {
            Guard.NotNull(param: workflowRunAction, paramName: nameof(workflowRunAction));
            Enum.TryParse(value: workflowRunAction.Status, result: out LogicAppActionStatus status);

            IDictionary <string, string> trackedProperties = DeserializeTrackedProperties(workflowRunAction: workflowRunAction);

            var logicAppAction = new LogicAppAction(
                name: workflowRunAction.Name,
                status: status,
                error: workflowRunAction.Error,
                inputs: input,
                outputs: output,
                trackedProperties: trackedProperties,
                startTime: workflowRunAction.StartTime,
                endTime: workflowRunAction.EndTime);

            return(logicAppAction);
        }
Esempio n. 4
0
        private void ValidateRunAction1(WorkflowRunAction action)
        {
            Assert.Equal("/subscriptions/66666666-6666-6666-6666-666666666666/resourceGroups/rgName/providers/Microsoft.Logic/workflows/wfName/runs/08587692861242198730/actions/actName", action.Id);
            Assert.Equal("actName", action.Name);
            Assert.Equal("Microsoft.Logic/workflows/runs/actions", action.Type);

            Assert.Equal(2015, action.StartTime.Value.Year);
            Assert.Equal(06, action.StartTime.Value.Month);
            Assert.Equal(23, action.StartTime.Value.Day);
            Assert.Equal(21, action.StartTime.Value.Hour);
            Assert.Equal(47, action.StartTime.Value.Minute);
            Assert.Equal(00, action.StartTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, action.StartTime.Value.Kind);

            Assert.Equal(2015, action.EndTime.Value.Year);
            Assert.Equal(06, action.EndTime.Value.Month);
            Assert.Equal(23, action.EndTime.Value.Day);
            Assert.Equal(21, action.EndTime.Value.Hour);
            Assert.Equal(47, action.EndTime.Value.Minute);
            Assert.Equal(30, action.EndTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, action.EndTime.Value.Kind);

            Assert.Equal(WorkflowStatus.Succeeded, action.Status);
            Assert.Equal("OK", action.Code);
            Assert.Equal("2c9e4726-a395-4841-bf54-5e826ec04c30", action.TrackingId);

            Assert.Equal("https://input.blob.core.windows.net/", action.InputsLink.Uri);
            Assert.Equal("\"0x8D262D79EB296A8\"", action.InputsLink.ContentVersion);
            Assert.Equal(453, action.InputsLink.ContentSize);
            Assert.Equal("md5", action.InputsLink.ContentHash.Algorithm);
            Assert.Equal("ivHEPG5bzwNB9IFYRqsqOw==", action.InputsLink.ContentHash.Value);

            Assert.Equal("https://output.blob.core.windows.net/", action.OutputsLink.Uri);
            Assert.Equal("\"0x8D262D79EB296A8\"", action.OutputsLink.ContentVersion);
            Assert.Equal(713, action.OutputsLink.ContentSize);
            Assert.Equal("md5", action.OutputsLink.ContentHash.Algorithm);
            Assert.Equal("BWhA5Z1Rxaz0MwuDeQBykw==", action.OutputsLink.ContentHash.Value);
        }
        private void ValidateRunAction1(WorkflowRunAction action)
        {
            Assert.True(this.ValidateIdFormat(id: action.Id, entityTypeName: "workflows", entitySubtypeName: "runs", entityMicrotypeName: "actions"));
            Assert.Equal("actName", action.Name);
            Assert.Equal("Microsoft.Logic/workflows/runs/actions", action.Type);

            Assert.Equal(2015, action.StartTime.Value.Year);
            Assert.Equal(06, action.StartTime.Value.Month);
            Assert.Equal(23, action.StartTime.Value.Day);
            Assert.Equal(21, action.StartTime.Value.Hour);
            Assert.Equal(47, action.StartTime.Value.Minute);
            Assert.Equal(00, action.StartTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, action.StartTime.Value.Kind);

            Assert.Equal(2015, action.EndTime.Value.Year);
            Assert.Equal(06, action.EndTime.Value.Month);
            Assert.Equal(23, action.EndTime.Value.Day);
            Assert.Equal(21, action.EndTime.Value.Hour);
            Assert.Equal(47, action.EndTime.Value.Minute);
            Assert.Equal(30, action.EndTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, action.EndTime.Value.Kind);

            Assert.Equal(WorkflowStatus.Succeeded, action.Status);
            Assert.Equal("OK", action.Code);
            Assert.Equal("2c9e4726-a395-4841-bf54-5e826ec04c30", action.TrackingId);

            Assert.Equal("https://input.blob.core.windows.net/", action.InputsLink.Uri);
            Assert.Equal("\"0x8D262D79EB296A8\"", action.InputsLink.ContentVersion);
            Assert.Equal(453, action.InputsLink.ContentSize);
            Assert.Equal("md5", action.InputsLink.ContentHash.Algorithm);
            Assert.Equal("ivHEPG5bzwNB9IFYRqsqOw==", action.InputsLink.ContentHash.Value);

            Assert.Equal("https://output.blob.core.windows.net/", action.OutputsLink.Uri);
            Assert.Equal("\"0x8D262D79EB296A8\"", action.OutputsLink.ContentVersion);
            Assert.Equal(713, action.OutputsLink.ContentSize);
            Assert.Equal("md5", action.OutputsLink.ContentHash.Algorithm);
            Assert.Equal("BWhA5Z1Rxaz0MwuDeQBykw==", action.OutputsLink.ContentHash.Value);

            Assert.NotNull(action.RetryHistory);
            var retryHistory0 = action.RetryHistory[0];
            var retryHistory1 = action.RetryHistory[1];

            Assert.Equal(2017, retryHistory0.StartTime.Value.Year);
            Assert.Equal(03, retryHistory0.StartTime.Value.Month);
            Assert.Equal(28, retryHistory0.StartTime.Value.Day);
            Assert.Equal(01, retryHistory0.StartTime.Value.Hour);
            Assert.Equal(17, retryHistory0.StartTime.Value.Minute);
            Assert.Equal(07, retryHistory0.StartTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, retryHistory0.StartTime.Value.Kind);

            Assert.Equal(2017, retryHistory0.EndTime.Value.Year);
            Assert.Equal(03, retryHistory0.EndTime.Value.Month);
            Assert.Equal(28, retryHistory0.EndTime.Value.Day);
            Assert.Equal(01, retryHistory0.EndTime.Value.Hour);
            Assert.Equal(17, retryHistory0.EndTime.Value.Minute);
            Assert.Equal(22, retryHistory0.EndTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, retryHistory0.EndTime.Value.Kind);

            Assert.Equal("BadRequest", retryHistory0.Code);
            Assert.Equal("2fabdcf3-4c32-4bbd-af19-e0642c38c645", retryHistory0.ClientRequestId);
            Assert.Equal("22222222-4c32-4bbd-aaaa-e0642c38c645", retryHistory0.ServiceRequestId);
            Assert.Equal("BadRequest", retryHistory0.Error.Error.Code);
            Assert.Equal("Http request failed: the timeout was reached.", retryHistory0.Error.Error.Message);

            Assert.Equal(2017, retryHistory1.StartTime.Value.Year);
            Assert.Equal(03, retryHistory1.StartTime.Value.Month);
            Assert.Equal(28, retryHistory1.StartTime.Value.Day);
            Assert.Equal(01, retryHistory1.StartTime.Value.Hour);
            Assert.Equal(17, retryHistory1.StartTime.Value.Minute);
            Assert.Equal(38, retryHistory1.StartTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, retryHistory1.StartTime.Value.Kind);

            Assert.Equal(2017, retryHistory1.EndTime.Value.Year);
            Assert.Equal(03, retryHistory1.EndTime.Value.Month);
            Assert.Equal(28, retryHistory1.EndTime.Value.Day);
            Assert.Equal(01, retryHistory1.EndTime.Value.Hour);
            Assert.Equal(17, retryHistory1.EndTime.Value.Minute);
            Assert.Equal(39, retryHistory1.EndTime.Value.Second);
            Assert.Equal(DateTimeKind.Utc, retryHistory1.EndTime.Value.Kind);

            Assert.Equal("ServiceUnavailable", retryHistory1.Code);
            Assert.Equal("015cece2-1149-4eba-8970-06b9286a1a30", retryHistory1.ClientRequestId);
            Assert.Null(retryHistory1.Error);
        }