Ejemplo n.º 1
0
        public static ActivityContext GetFileListActivityDO()
        {
            var terminalDTO = Fixture.Build <TerminalDTO>()
                              .With(x => x.Name)
                              .With(x => x.Version)
                              .OmitAutoProperties()
                              .Create();

            ActivityTemplateSummaryDTO activityTemplateDTO = Fixture.Build <ActivityTemplateSummaryDTO>()
                                                             .With(x => x.Name)
                                                             .With(x => x.Version)
                                                             .With(x => x.TerminalName, terminalDTO.Name)
                                                             .With(x => x.TerminalVersion, terminalDTO.Version)
                                                             .OmitAutoProperties()
                                                             .Create();
            ActivityPayload activityPayload = Fixture.Build <ActivityPayload>()
                                              .With(x => x.Id)
                                              .With(x => x.ActivityTemplate, activityTemplateDTO)
                                              .With(x => x.CrateStorage, new CrateStorage())
                                              .OmitAutoProperties()
                                              .Create();
            ActivityContext activityContext = Fixture.Build <ActivityContext>()
                                              .With(x => x.ActivityPayload, activityPayload)
                                              .With(x => x.AuthorizationToken, DropboxAuthorizationToken())
                                              .OmitAutoProperties()
                                              .Create();

            return(activityContext);
        }
Ejemplo n.º 2
0
        public static Fr8DataDTO Post_Comment_v1_InitialConfiguration_Fr8DataDTO()
        {
            var token = SampleAuthorizationToken();

            var activityTemplate = new ActivityTemplateSummaryDTO()
            {
                TerminalName    = "terminalAsana",
                TerminalVersion = "1",
                Name            = "Post_Comment_TEST",
                Version         = "1"
            };

            var activityDTO = new ActivityDTO()
            {
                Id               = Guid.NewGuid(),
                Label            = "Post something",
                ActivityTemplate = activityTemplate,
                AuthToken        = new AuthorizationTokenDTO()
                {
                    Token               = token.Token,
                    ExpiresAt           = token.ExpiresAt,
                    ExternalAccountId   = token.ExternalAccountId,
                    ExternalAccountName = "Asana Fr8 Dev"
                }
            };

            return(new Fr8DataDTO {
                ActivityDTO = activityDTO
            });
        }
Ejemplo n.º 3
0
        private ActivityTemplateSummaryDTO CreateActivityTemplateFixture()
        {
            var activityTemplate = new ActivityTemplateSummaryDTO
            {
                Name    = "Select_Fr8_Object_TEST",
                Version = "1"
            };

            return(activityTemplate);
        }
        private ActivityTemplateSummaryDTO CreateActivityTemplateFixture()
        {
            var activityTemplate = new ActivityTemplateSummaryDTO
            {
                Name    = "Set_Delay_TEST",
                Version = "1"
            };

            return(activityTemplate);
        }
        public static ActivityTemplateSummaryDTO TestActivityTemplateDTOV2()
        {
            var curActionTemplate = new ActivityTemplateSummaryDTO
            {
                Name            = "terminal_azure_sql_server",
                Version         = "1",
                TerminalName    = "test",
                TerminalVersion = "1"
            };

            return(curActionTemplate);
        }
Ejemplo n.º 6
0
        public static Fr8DataDTO SaveToFileTestAction()
        {
            ActivityTemplateSummaryDTO activityTemplateDto = Fixture.Build <ActivityTemplateSummaryDTO>()
                                                             .With(x => x.Name, "SaveToFile_TEST")
                                                             .With(x => x.Version, "1")
                                                             .OmitAutoProperties()
                                                             .Create();

            ActivityDTO activityDto = Fixture.Build <ActivityDTO>()
                                      .With(x => x.Id)
                                      .With(x => x.ActivityTemplate, activityTemplateDto)
                                      .With(x => x.AuthToken, GetBoxAuthToken())
                                      .OmitAutoProperties()
                                      .Create();

            return(Fixture.Build <Fr8DataDTO>()
                   .With(x => x.ActivityDTO, activityDto)
                   .OmitAutoProperties()
                   .Create());
        }
        public static Fr8DataDTO GetFileListTestFr8DataDTO()
        {
            ActivityTemplateSummaryDTO activityTemplateDto = Fixture.Build <ActivityTemplateSummaryDTO>()
                                                             .With(x => x.Name, "Get_File_List_TEST")
                                                             .With(x => x.Version, "1")
                                                             .OmitAutoProperties()
                                                             .Create();

            ActivityDTO activityDto = Fixture.Build <ActivityDTO>()
                                      .With(x => x.Id)
                                      .With(x => x.ActivityTemplate, activityTemplateDto)
                                      .With(x => x.CrateStorage, null)
                                      .With(x => x.AuthToken, DropboxAuthorizationTokenDTO())
                                      .OmitAutoProperties()
                                      .Create();

            return(Fixture.Build <Fr8DataDTO>()
                   .With(x => x.ActivityDTO, activityDto)
                   .OmitAutoProperties()
                   .Create());
        }
Ejemplo n.º 8
0
        public static ActivityContext TestActivityContext1()
        {
            var activityTemplateDTO = new ActivityTemplateSummaryDTO
            {
                Name            = "Type1",
                Version         = "1",
                TerminalName    = "TestTerminal",
                TerminalVersion = "1"
            };
            var activityPayload = new ActivityPayload
            {
                Id               = Guid.NewGuid(),
                Name             = "Type2",
                ActivityTemplate = activityTemplateDTO,
                CrateStorage     = new CrateStorage()
            };
            var activityContext = new ActivityContext
            {
                ActivityPayload = activityPayload
            };

            return(activityContext);
        }
Ejemplo n.º 9
0
        public override void SetUp()
        {
            base.SetUp();

            AutoMapperBootstrapper.ConfigureAutoMapper();
            ObjectFactory.Configure(x => x.AddRegistry <StructureMapBootStrapper.TestMode>());
            ObjectFactory.Configure(x => x.For <IActivityStore>().Use <ActivityStore>().Singleton());

            var crateStorage        = new CrateStorage(Crate.FromContent("", new OperationalStateCM()));
            var crateDTO            = CrateManager.ToDto(crateStorage);
            var hubCommunicatorMock = new Mock <IHubCommunicator>();

            hubCommunicatorMock.Setup(x => x.GetPayload(It.IsAny <Guid>()))
            .ReturnsAsync(new PayloadDTO(Guid.NewGuid())
            {
                CrateStorage = crateDTO
            });

            ObjectFactory.Configure(cfg => cfg.For <IHubCommunicator>().Use(hubCommunicatorMock.Object));

            CrateManagerHelper = new CrateManager();
            _activityExecutor  = ObjectFactory.GetInstance <ActivityExecutor>();
            _activityStore     = ObjectFactory.GetInstance <IActivityStore>();
            var activityTemplateSummary = new ActivityTemplateSummaryDTO
            {
                Name            = ExplicitTerminalActivityMock.ActivityTemplate.Name,
                Version         = ExplicitTerminalActivityMock.ActivityTemplate.Version,
                TerminalName    = ExplicitTerminalActivityMock.ActivityTemplate.Terminal.Name,
                TerminalVersion = ExplicitTerminalActivityMock.ActivityTemplate.Terminal.Version
            };

            if (_activityStore.GetFactory(activityTemplateSummary.Name, activityTemplateSummary.Version) == null)
            {
                _activityStore.RegisterActivity <ExplicitTerminalActivityMock>(ExplicitTerminalActivityMock.ActivityTemplate);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Returns ActivityTemplate by it's name and version.
        /// For example GetByNameAndVersion(uow, "AddPayloadManually", "1").
        /// </summary>
        public ActivityTemplateDO GetByNameAndVersion(ActivityTemplateSummaryDTO activityTemplateSummary)
        {
            Initialize();

            lock (_activityTemplates)
            {
                IEnumerable <ActivityTemplateDO> activityTemplates = _activityTemplates.Values.Where(x => x.Name == activityTemplateSummary.Name && x.Version == activityTemplateSummary.Version);

#if DEBUG
                bool terminalInfoMissing = false;
#endif

                if (string.IsNullOrWhiteSpace(activityTemplateSummary.TerminalName))
                {
                    activityTemplates = activityTemplates.Where(x => x.Terminal.Name == activityTemplateSummary.TerminalName);
#if DEBUG
                    terminalInfoMissing = true;
#endif
                }

                if (string.IsNullOrWhiteSpace(activityTemplateSummary.Version))
                {
                    activityTemplates = activityTemplates.Where(x => x.Terminal.Version == activityTemplateSummary.TerminalVersion);
#if DEBUG
                    terminalInfoMissing = true;
#endif
                }

                var activityTemplatesArray = activityTemplates.ToArray();

                if (activityTemplatesArray.Length == 0)
                {
                    return(null);
                }

#if DEBUG
                if (terminalInfoMissing)
                {
                    var stackTrace  = new StackTrace();
                    var stackFrames = stackTrace.GetFrames();
                    var message     = new StringBuilder();


                    message.AppendLine($"Terminal information is missing for activity template: Name = {activityTemplateSummary.Name}, Version = {activityTemplateSummary.Version}");

                    foreach (StackFrame stackFrame in stackFrames)
                    {
                        var method = stackFrame.GetMethod();

                        message.AppendLine($"{method.DeclaringType.FullName}:{method.Name}");
                    }

                    Logger.Warn(message.ToString());
                }
#endif

                if (activityTemplatesArray.Length > 1)
                {
                    var exception = new Exception($"Ambiguous activity template resolution for activity template: Name = {activityTemplateSummary.Name}, Version = {activityTemplateSummary.Version}, " +
                                                  $"TerminalName = {activityTemplateSummary.TerminalName}, TerminalVersion = {activityTemplateSummary.TerminalVersion}");

                    Logger.Error("Ambiguous activity template resolution", exception);

                    throw exception;
                }

                return(activityTemplatesArray[0]);
            }
        }
        public async Task Extract_Data_From_Envelopes_EndToEnd()
        {
            await RevokeTokens();

            string baseUrl = GetHubApiBaseUrl();

            var solutionCreateUrl = baseUrl + "plans?solutionName=Extract_Data_From_Envelopes";

            //
            // Create solution
            //
            var plan = await HttpPostAsync <string, PlanDTO>(solutionCreateUrl, null);

            var solution = plan.SubPlans.FirstOrDefault().Activities.FirstOrDefault();

            //
            // Send configuration request without authentication token
            //
            _solution = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/configure?id=" + solution.Id, solution);

            _crateStorage = Crate.FromDto(_solution.CrateStorage);
            var authTokenId = await ResolveAuth(_solution, _crateStorage);

            //
            // Send configuration request with authentication token
            //
            _solution = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/configure?id=" + _solution.Id, _solution);

            _crateStorage = Crate.FromDto(_solution.CrateStorage);
            Assert.True(_crateStorage.CratesOfType <StandardConfigurationControlsCM>().Any(), "Crate StandardConfigurationControlsCM is missing in API response.");

            var controlsCrate = _crateStorage.CratesOfType <StandardConfigurationControlsCM>().First();
            var controls      = controlsCrate.Content.Controls;

            //let's make some selections and go for re-configure
            var dataSource = controls.OfType <DropDownList>().FirstOrDefault(c => c.Name == "FinalActionsList");

            dataSource.Value       = "Send_DocuSign_Envelope";
            dataSource.selectedKey = "Send DocuSign Envelope";

            using (var updater = Crate.GetUpdatableStorage(_solution))
            {
                updater.Remove <StandardConfigurationControlsCM>();
                updater.Add(controlsCrate);
            }

            _solution = await HttpPostAsync <ActivityDTO, ActivityDTO>(baseUrl + "activities/configure?id=" + _solution.Id, _solution);

            _crateStorage = Crate.FromDto(_solution.CrateStorage);
            Assert.AreEqual(2, _solution.ChildrenActivities.Count(), "Solution child activities failed to create.");
            Assert.True(_solution.ChildrenActivities.Any(a => a.ActivityTemplate.Name == "Monitor_DocuSign_Envelope_Activity" && a.Ordering == 1),
                        "Failed to detect Monitor DocuSign Envelope Activity as the first child activity");
            Assert.True(_solution.ChildrenActivities.Any(a => a.ActivityTemplate.Name == "Send_DocuSign_Envelope" && a.Ordering == 2),
                        "Failed to detect Send DocuSign Envelope as the second child activity");


            var monitorDocuSignEnvelopeActivity = _solution.ChildrenActivities
                                                  .Single(x => x.ActivityTemplate.Name == "Monitor_DocuSign_Envelope_Activity");

            //
            // Apply auth-token to child MonitorDocuSignEvnelope activity.
            //

            var applyToken = new AuthenticationTokenGrantDTO()
            {
                ActivityId  = monitorDocuSignEnvelopeActivity.Id,
                AuthTokenId = authTokenId,
                IsMain      = false
            };

            await HttpPostAsync <AuthenticationTokenGrantDTO[], string>(
                _baseUrl + "authentication/tokens/grant",
                new AuthenticationTokenGrantDTO[] { applyToken }
                );


            monitorDocuSignEnvelopeActivity = await HttpPostAsync <ActivityDTO, ActivityDTO>(
                _baseUrl + "activities/configure?id=" + monitorDocuSignEnvelopeActivity.Id,
                monitorDocuSignEnvelopeActivity
                );

            //
            // Rename route
            //
            var newName = plan.Name + " | " + DateTime.UtcNow.ToShortDateString() + " " +
                          DateTime.UtcNow.ToShortTimeString();

            await HttpPostAsync <object, PlanDTO>(_baseUrl + "plans?id=" + plan.Id,
                                                  new { id = plan.Id, name = newName });

            //
            // Configure Monitor DocuSign Envelope action
            //
            _crateStorage = Crate.FromDto(monitorDocuSignEnvelopeActivity.CrateStorage);

            controlsCrate = _crateStorage.CratesOfType <StandardConfigurationControlsCM>().First();

            var checkbox = (CheckBox)controlsCrate.Content.Controls.Single(c => c.Type == ControlTypes.CheckBox && c.Name == "EnvelopeSent");

            checkbox.Selected = true;

            var radioButtonGroup = (RadioButtonGroup)controlsCrate.Content.Controls.Single(c => c.Type == ControlTypes.RadioButtonGroup && c.Name == "TemplateRecipientPicker");

            radioButtonGroup.Radios[1].Selected = true;

            using (var updatableStorage = Crate.GetUpdatableStorage(monitorDocuSignEnvelopeActivity))
            {
                updatableStorage.Remove <StandardConfigurationControlsCM>();
                updatableStorage.Add(controlsCrate);
            }

            monitorDocuSignEnvelopeActivity = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/save", monitorDocuSignEnvelopeActivity);

            monitorDocuSignEnvelopeActivity = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/configure", monitorDocuSignEnvelopeActivity);

            radioButtonGroup = (RadioButtonGroup)controlsCrate.Content.Controls.Single(c => c.Type == ControlTypes.RadioButtonGroup && c.Name == "TemplateRecipientPicker");
            var docuSignTemplate = radioButtonGroup.Radios[1].Controls.OfType <DropDownList>().First();

            docuSignTemplate.Value       = "9a4d2154-5b18-4316-9824-09432e62f458";
            docuSignTemplate.selectedKey = "Medical_Form_v1";
            docuSignTemplate.ListItems.Add(new ListItem()
            {
                Value = "9a4d2154-5b18-4316-9824-09432e62f458", Key = "Medical_Form_v1"
            });

            using (var updatableStorage = Crate.GetUpdatableStorage(monitorDocuSignEnvelopeActivity))
            {
                updatableStorage.Remove <StandardConfigurationControlsCM>();
                updatableStorage.Add(controlsCrate);
            }

            monitorDocuSignEnvelopeActivity = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/save", monitorDocuSignEnvelopeActivity);

            monitorDocuSignEnvelopeActivity = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/configure", monitorDocuSignEnvelopeActivity);

            _crateStorage    = Crate.FromDto(monitorDocuSignEnvelopeActivity.CrateStorage);
            controlsCrate    = _crateStorage.CratesOfType <StandardConfigurationControlsCM>().First();
            radioButtonGroup = (RadioButtonGroup)controlsCrate.Content.Controls.Single(c => c.Type == ControlTypes.RadioButtonGroup && c.Name == "TemplateRecipientPicker");
            docuSignTemplate = radioButtonGroup.Radios[1].Controls.OfType <DropDownList>().First();

            Assert.AreEqual("9a4d2154-5b18-4316-9824-09432e62f458", docuSignTemplate.Value, "Selected DocuSign Template did not save on Send DocuSign Envelope activity.");
            Assert.AreEqual("Medical_Form_v1", docuSignTemplate.selectedKey, "Selected DocuSign Template did not save on Send DocuSign Envelope activity.");

            //
            // Configure Send DocuSign Envelope action
            //
            var sendEnvelopeAction = _solution.ChildrenActivities.Single(a => a.ActivityTemplate.Name == "Send_DocuSign_Envelope");

            var sendEnvelopeApplyToken = new AuthenticationTokenGrantDTO()
            {
                ActivityId  = sendEnvelopeAction.Id,
                AuthTokenId = authTokenId,
                IsMain      = false
            };

            await HttpPostAsync <AuthenticationTokenGrantDTO[], string>(
                _baseUrl + "authentication/tokens/grant",
                new AuthenticationTokenGrantDTO[] { sendEnvelopeApplyToken }
                );

            sendEnvelopeAction = await HttpPostAsync <ActivityDTO, ActivityDTO>(
                _baseUrl + "activities/configure?id=" + sendEnvelopeAction.Id,
                sendEnvelopeAction
                );


            using (var updatableStorage = Crate.GetUpdatableStorage(sendEnvelopeAction))
            {
                controlsCrate = updatableStorage.CratesOfType <StandardConfigurationControlsCM>().First();

                docuSignTemplate             = controlsCrate.Content.Controls.OfType <DropDownList>().First();
                docuSignTemplate.Value       = "9a4d2154-5b18-4316-9824-09432e62f458";
                docuSignTemplate.selectedKey = "Medical_Form_v1";
                docuSignTemplate.ListItems.Add(new ListItem()
                {
                    Value = "9a4d2154-5b18-4316-9824-09432e62f458", Key = "Medical_Form_v1"
                });
            }

            sendEnvelopeAction = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/save", sendEnvelopeAction);

            sendEnvelopeAction = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/configure", sendEnvelopeAction);

            // Follow-up Configuration

            TextSource emailField;
            TextSource emailNameField;

            using (var updatableStorage = Crate.GetUpdatableStorage(sendEnvelopeAction))
            {
                controlsCrate          = updatableStorage.CratesOfType <StandardConfigurationControlsCM>().First();
                emailField             = controlsCrate.Content.Controls.OfType <TextSource>().First(f => f.InitialLabel == "freight testing role email");
                emailField.ValueSource = "specific";
                emailField.Value       = TestEmail;
                emailField.TextValue   = TestEmail;

                emailNameField             = controlsCrate.Content.Controls.OfType <TextSource>().First(f => f.InitialLabel == "freight testing role name");
                emailNameField.ValueSource = "specific";
                emailNameField.Value       = TestEmailName;
                emailNameField.TextValue   = TestEmailName;
            }

            sendEnvelopeAction = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/save", sendEnvelopeAction);

            _crateStorage = Crate.FromDto(sendEnvelopeAction.CrateStorage);
            controlsCrate = _crateStorage.CratesOfType <StandardConfigurationControlsCM>().First();

            docuSignTemplate = controlsCrate.Content.Controls.OfType <DropDownList>().First();
            Assert.AreEqual("9a4d2154-5b18-4316-9824-09432e62f458", docuSignTemplate.Value, "Selected DocuSign Template did not save on Send DocuSign Envelope action.");
            Assert.AreEqual("Medical_Form_v1", docuSignTemplate.selectedKey, "Selected DocuSign Template did not save on Send DocuSign Envelope action.");

            emailField = controlsCrate.Content.Controls.OfType <TextSource>().First(f => f.InitialLabel == "freight testing role email");
            Assert.AreEqual(TestEmail, emailField.Value, "Email did not save on Send DocuSign Envelope action.");
            Assert.AreEqual(TestEmail, emailField.TextValue, "Email did not save on Send DocuSign Envelope action.");

            emailNameField = controlsCrate.Content.Controls.OfType <TextSource>().First(f => f.InitialLabel == "freight testing role name");
            Assert.AreEqual(TestEmailName, emailNameField.Value, "Email Name did not save on Send DocuSign Envelope action.");
            Assert.AreEqual(TestEmailName, emailNameField.TextValue, "Email Name did not save on Send DocuSign Envelope action.");

            // Delete Monitor action
            await HttpDeleteAsync(_baseUrl + "activities?id=" + _solution.ChildrenActivities[0].Id);

            // Add Add Payload Manually action
            var activityCategoryParam = ActivityCategories.ProcessId.ToString();
            var activityTemplates     = await HttpGetAsync <List <WebServiceActivitySetDTO> >(_baseUrl + "webservices?id=" + activityCategoryParam);

            var apmActivityTemplate = activityTemplates
                                      .SelectMany(a => a.Activities)
                                      .Single(a => a.Name == "Add_Payload_Manually");
            var activityTemplateSummary = new ActivityTemplateSummaryDTO
            {
                Name            = apmActivityTemplate.Name,
                Version         = apmActivityTemplate.Version,
                TerminalName    = apmActivityTemplate.Terminal.Name,
                TerminalVersion = apmActivityTemplate.Terminal.Version
            };
            var apmAction = new ActivityDTO()
            {
                ActivityTemplate = activityTemplateSummary,
                ParentPlanNodeId = _solution.Id,
                RootPlanNodeId   = plan.Id
            };

            apmAction = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/save", apmAction);

            Assert.NotNull(apmAction, "Add Payload Manually action failed to create");
            Assert.IsTrue(apmAction.Id != default(Guid), "Add Payload Manually activity failed to create");

            //Add rows to Add Payload Manually action
            apmAction = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/configure", apmAction);

            _crateStorage = Crate.FromDto(apmAction.CrateStorage);
            controlsCrate = _crateStorage.CratesOfType <StandardConfigurationControlsCM>().First();
            var fieldList = controlsCrate.Content.Controls.OfType <FieldList>().First();

            fieldList.Value = @"[{""Key"":""Doctor"",""Value"":""Doctor1""},{""Key"":""Condition"",""Value"":""Condition1""}]";

            using (var updatableStorage = Crate.GetUpdatableStorage(apmAction))
            {
                updatableStorage.Remove <StandardConfigurationControlsCM>();
                updatableStorage.Add(controlsCrate);
            }

            // Move Add Payload Manually action to the beginning of the plan
            apmAction.Ordering = 1;
            apmAction          = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/save", apmAction);

            apmAction = await HttpPostAsync <ActivityDTO, ActivityDTO>(_baseUrl + "activities/configure", apmAction);

            Assert.AreEqual(1, apmAction.Ordering, "Failed to reoder the activity Add Payload Manually");

            //
            // Activate and run plan
            //
            await HttpPostAsync <string, ContainerDTO>(_baseUrl + "plans/run?planId=" + plan.Id, null);

            //
            // Deactivate plan
            //
            await HttpPostAsync <string, string>(_baseUrl + "plans/deactivate?planId=" + plan.Id, null);

            //
            // Delete plan
            //
            //await HttpDeleteAsync(_baseUrl + "plans?id=" + plan.Id);
        }