private void AssertCrateTypes(ICrateStorage crateStorage)
        {
            Assert.AreEqual(2, crateStorage.Count);

            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count(x => x.Label == "Configuration_Controls"));
            Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "Available Groups"));
        }
示例#2
0
        private void AssertCrateTypes(ICrateStorage crateStorage)
        {
            Assert.AreEqual(2, crateStorage.Count);

            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count());
            Assert.AreEqual(1, crateStorage.CratesOfType <EventSubscriptionCM>().Count());
        }
        private void AssertConfigureCrate(ICrateStorage crateStorage)
        {
            Assert.AreEqual(2, crateStorage.Count, "Crate storage count is not equal to 2");
            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count(), "StandardConfigurationControlsCM count is not 1");
            Assert.AreEqual(1, crateStorage.CratesOfType <CrateDescriptionCM>().Count(), "FieldDescriptionsCM count is not 1");
            AssertConfigureControls(crateStorage.CrateContentsOfType <StandardConfigurationControlsCM>().Single());
            var fieldDescriptions = crateStorage.CratesOfType <CrateDescriptionCM>().Single();

            Assert.AreEqual("Runtime Available Crates", fieldDescriptions.Label, "Monitor Atlassian Runtime Fields labeled FieldDescriptionsCM was not found");
            Assert.AreEqual(2, fieldDescriptions.Content.CrateDescriptions.Count(), "CrateDescriptions count is not 2");
            var crateDescription = fieldDescriptions.Content.CrateDescriptions.Where(t => t.ManifestType.Equals("Standard Payload Data"));
            var fields           = crateDescription.Single().Fields;

            Assert.AreEqual("Monitor Atlassian Runtime Fields", crateDescription.Single().Label, "Monitor Atlassian Runtime Fields labeled CrateDescription was not found");
            Assert.AreEqual(9, crateDescription.Single().Fields.Count, "Published runtime field count is not 9");


            Assert.IsTrue(fields.Exists(x => x.Name == IssueKey), "IssueKey is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == ProjectName), "ProjectName is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == IssueResolution), "IssueResolution is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == IssuePriority), "IssuePriority is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == IssueAssignee), "IssueAssignee is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == IssueSummary), "IssueSummary is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == IssueStatus), "IssueStatus is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == IssueDescription), "IssueDescription is not signalled");
            Assert.IsTrue(fields.Exists(x => x.Name == EventType), "EventType is not signalled");
        }
        public TextSourceMappingBehavior(ICrateStorage crateStorage, string behaviorName, bool requestUpstream)
            : base(crateStorage, behaviorName)
        {
            _reqeustUpstream = requestUpstream;

            //BehaviorPrefix = "TextSourceMappingBehavior-";
        }
        protected bool IsNewTemplateIdChoosen(ICrateStorage crateStorage, string docusignTemplateId)
        {
            // Get previous DocuSign Template Id
            string previousTemplateId      = "";
            var    previousTemplateIdCrate = crateStorage.FirstCrateOrDefault <StandardPayloadDataCM>(a => a.Label == "ChosenTemplateId");

            if (previousTemplateIdCrate != null)
            {
                previousTemplateId = previousTemplateIdCrate.Get <StandardPayloadDataCM>().GetValueOrDefault("TemplateId");
            }

            crateStorage.ReplaceByLabel(Crate.FromContent("ChosenTemplateId", new StandardPayloadDataCM()
            {
                PayloadObjects = new List <PayloadObjectDTO>()
                {
                    new PayloadObjectDTO()
                    {
                        PayloadObject = new List <KeyValueDTO>()
                        {
                            new KeyValueDTO("TemplateId", docusignTemplateId)
                        }
                    }
                }
            }));

            return(docusignTemplateId != previousTemplateId);
        }
示例#6
0
 /**********************************************************************************/
 /// <summary>
 /// Add collection of crates to storage
 /// </summary>
 /// <param name="crates"></param>
 public static void AddRange(this ICrateStorage storage, IEnumerable <Crate> crates)
 {
     foreach (var crate in crates)
     {
         storage.Add(crate);
     }
 }
示例#7
0
        private Crate <StandardQueryCM> ExtractQueryCrate(ICrateStorage storage)
        {
            var configurationControls = storage
                                        .CrateContentsOfType <StandardConfigurationControlsCM>()
                                        .SingleOrDefault();

            if (configurationControls == null)
            {
                throw new ApplicationException("Action was not configured correctly");
            }

            var actionUi = new ActivityUi();

            actionUi.ClonePropertiesFrom(configurationControls);

            var criteria = JsonConvert.DeserializeObject <List <FilterConditionDTO> >(
                actionUi.QueryBuilder.Value
                );

            // This is weird to use query's name as the way to address MT type.
            // MT type has unique ID that should be used for this reason. Query name is something that is displayed to user. It should not contain any internal data.
            var queryCM = new StandardQueryCM(
                new QueryDTO()
            {
                Name     = MT.DocuSignEnvelope.GetEnumDisplayName(),
                Criteria = criteria
            }
                );

            return(Crate <StandardQueryCM> .FromContent(QueryCrateLabel, queryCM));
        }
示例#8
0
        public static void AssertPayloadHasError(ICrateStorage storage)
        {
            var      operationalStateCM = storage.CrateContentsOfType <OperationalStateCM>().Single();
            ErrorDTO errorMessage;

            Assert.IsTrue(operationalStateCM.CurrentActivityResponse.TryParseErrorDTO(out errorMessage));
        }
        private void AssertConfigureCrate(ICrateStorage crateStorage)
        {
            Assert.AreEqual(1, crateStorage.Count);
            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count());

            AssertConfigureControls(crateStorage.CrateContentsOfType <StandardConfigurationControlsCM>().Single());
        }
示例#10
0
        //This method returns one crate of the specified Manifest Type from the payload
        public T GetByManifest <T>(PayloadDTO payloadDTO) where T : Manifest
        {
            ICrateStorage curCrateStorage = FromDto(payloadDTO.CrateStorage);
            var           curCrate        = curCrateStorage.CratesOfType <T>().Single().Content;

            return(curCrate);
        }
示例#11
0
        /// <summary>
        /// Returns a copy of AcvitityUI for the given activity
        /// </summary>
        public static TActivityUi GetReadonlyActivityUi <TActivityUi>(this ICrateStorage storage) where TActivityUi : StandardConfigurationControlsCM, new()
        {
            var controls   = storage.FirstCrateOrDefault <StandardConfigurationControlsCM>()?.Content;
            var activityUi = new TActivityUi().ClonePropertiesFrom(controls) as TActivityUi;

            activityUi.RestoreDynamicControlsFrom(controls);
            return(activityUi);
        }
示例#12
0
        /**********************************************************************************/

        public static Crate <T> Add <T>(this ICrateStorage storage, string label, T content)
        {
            var crate = Crate.FromContent(label, content);

            storage.Add(crate);

            return(crate);
        }
示例#13
0
        private void AssertCrateTypes(ICrateStorage crateStorage)
        {
            Assert.AreEqual(1, crateStorage.Count,
                            "There should be only one crate storage in initial and follow up configuration of Write To Log action.");

            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count(),
                            "The target URL text box is missing in the configuration of Write To Log action.");
        }
 private void AssertCrateTypes(ICrateStorage crateStorage)
 {
     Assert.AreEqual(5, crateStorage.Count);
     Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count());
     Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "AvailableTemplates"));
     Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "AvailableHandlers"));
     Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "AvailableRecipientEvents"));
     Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "AvailableRunTimeDataFields"));
 }
示例#15
0
        public static void AssertPayloadHasAuthenticationError(ICrateStorage storage)
        {
            var      operationalStateCM = storage.CrateContentsOfType <OperationalStateCM>().Single();
            ErrorDTO errorMessage;

            operationalStateCM.CurrentActivityResponse.TryParseErrorDTO(out errorMessage);
            Assert.AreEqual(ActivityResponse.Error.ToString(), operationalStateCM.CurrentActivityResponse.Type);
            Assert.AreEqual(ActivityErrorCode.AUTH_TOKEN_NOT_PROVIDED_OR_INVALID.ToString(), errorMessage.ErrorCode);
            Assert.AreEqual("No AuthToken provided.", errorMessage.Message);
        }
示例#16
0
        private void ValidateConfigurationControls(ICrateStorage crateStorage)
        {
            var controls = crateStorage.CrateContentsOfType <StandardConfigurationControlsCM>().Single();

            Assert.AreEqual(ControlTypes.TextArea, controls.Controls[0].Type);
            Assert.AreEqual(ControlTypes.QueryBuilder, controls.Controls[1].Type);
            Assert.AreEqual("QueryBuilder", controls.Controls[1].Name);
            Assert.AreEqual(ControlTypes.Button, controls.Controls[2].Type);
            Assert.AreEqual("Continue", controls.Controls[2].Name);
        }
示例#17
0
        private Crate FindCrateToProcess(ICrateStorage payloadStorage)
        {
            var selectedCrateDescription = ConfigurationControls
                                           .ReportSelector
                                           .CrateDescriptions.Single(c => c.Selected);

            return(payloadStorage
                   .FirstOrDefault(c => c.ManifestType.Type == selectedCrateDescription.ManifestType &&
                                   c.Label == selectedCrateDescription.Label));
        }
        private void AssertFollowUpCrateTypes(ICrateStorage crateStorage)
        {
            Assert.AreEqual(4, crateStorage.Count);
            Assert.AreEqual(3, crateStorage.CratesOfType <KeyValueListCM>().Count());
            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count());

            Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "Sql Table Definitions"));
            Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "Sql Column Types"));
            Assert.AreEqual(1, crateStorage.CratesOfType <KeyValueListCM>().Count(x => x.Label == "Sql Connection String"));
        }
示例#19
0
        public Crate GetValue(ICrateStorage crateStorage)
        {
            var selectedCrate = CrateDescriptions?.FirstOrDefault(x => x.Selected);

            if (selectedCrate == null)
            {
                return(null);
            }

            return(crateStorage.FirstOrDefault(x => x.Label == selectedCrate.Label && x.ManifestType.Type == selectedCrate.ManifestType));
        }
            /**********************************************************************************/

            private OperationalStateCM GetOperationalState(ICrateStorage crateStorage)
            {
                var operationalState = crateStorage.CrateContentsOfType <OperationalStateCM>().FirstOrDefault();

                if (operationalState == null)
                {
                    throw new Exception("OperationalState was not found within the container payload.");
                }

                return(operationalState);
            }
示例#21
0
        /**********************************************************************************/
        /// <summary>
        /// Remove all crates with the content of given type
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static int Remove <T>(this ICrateStorage storage)
        {
            CrateManifestType manifestType;

            if (!ManifestTypeCache.TryResolveManifest(typeof(T), out manifestType))
            {
                return(0);
            }

            return(storage.Remove(x => x.ManifestType == manifestType));
        }
            public void RestoreCustomFields(ICrateStorage crateStorage)
            {
                var controls = crateStorage.CrateContentsOfType <StandardConfigurationControlsCM>().First();

                foreach (var control in controls.Controls)
                {
                    if (control.Name.StartsWith("CustomField_"))
                    {
                        Controls.Add(control);
                    }
                }
            }
示例#23
0
        private void AssertCrateTypes(ICrateStorage crateStorage, bool expectValidationErrors = false)
        {
            Assert.AreEqual(1, crateStorage.CratesOfType <StandardConfigurationControlsCM>().Count(), "Missing configuration controls");
            Assert.AreEqual(1, crateStorage.CratesOfType <EventSubscriptionCM>().Count(x => x.Label == "Standard Event Subscriptions"), "Missing Standard Event Subscriptions");

            if (expectValidationErrors)
            {
                Assert.AreEqual(1, crateStorage.CratesOfType <ValidationResultsCM>().Count(x => x.Content.HasErrors), "Missing validation errors");
            }

            Assert.AreEqual(expectValidationErrors ? 3 : 2, crateStorage.Count, "Unexpected crates present");
        }
示例#24
0
        private void AddFileDescriptionToStorage(ICrateStorage storage, List <ControlDefinitionDTO> file_pickers)
        {
            int labelless_filepickers = 0;

            storage.RemoveByManifestId((int)MT.StandardFileHandle);

            foreach (var filepicker in file_pickers)
            {
                string crate_label = GetFileDescriptionLabel(filepicker, labelless_filepickers);
                storage.Add(Crate.FromContent(crate_label, new StandardFileDescriptionCM()));
            }
        }
示例#25
0
 private void InitializeAccessors(MemberInfo memberInfo, object instance, Func <object, ICrateStorage> readConverter, Func <ICrateStorage, object> writeConverter)
 {
     if (memberInfo is FieldInfo)
     {
         _crateStorage = readConverter(((FieldInfo)memberInfo).GetValue(instance));
         _setValue     = x => ((FieldInfo)memberInfo).SetValue(instance, writeConverter(x));
     }
     else if (memberInfo is PropertyInfo)
     {
         _crateStorage = readConverter(((PropertyInfo)memberInfo).GetValue(instance));
         _setValue     = x => ((PropertyInfo)memberInfo).SetValue(instance, writeConverter(x));
     }
 }
示例#26
0
        private List <KeyValueDTO> ExtractPayloadFields(ICrateStorage currentPayload)
        {
            var eventReportMS = currentPayload.CrateContentsOfType <EventReportCM>().SingleOrDefault();

            var eventFieldsCrate = eventReportMS?.EventPayload.SingleOrDefault();

            if (eventFieldsCrate == null)
            {
                return(null);
            }

            return(eventReportMS.EventPayload.CrateContentsOfType <StandardPayloadDataCM>().SelectMany(x => x.AllValues()).ToList());
        }
        public EnhancedValidationManager(TerminalActivity <TActivityUi> activity, ICrateStorage payload)
            : base(payload)
        {
            if (activity == null)
            {
                throw new ArgumentNullException(nameof(activity));
            }

            _activityUi         = activity.ActivityUI;
            _ownerNameByControl = new Dictionary <IControlDefinition, string>();

            FillOwnerByControl();
        }
示例#28
0
        protected static object GetValue(ICrateStorage payloadStorage, FieldDTO fieldToMatch)
        {
            if (payloadStorage == null)
            {
                throw new ArgumentNullException(nameof(payloadStorage));
            }

            if (fieldToMatch == null)
            {
                throw new ArgumentNullException(nameof(fieldToMatch));
            }

            if (string.IsNullOrWhiteSpace(fieldToMatch.Name))
            {
                return(null);
            }

            IEnumerable <Crate> filteredCrates = payloadStorage;

            if (!string.IsNullOrWhiteSpace(fieldToMatch.SourceActivityId))
            {
                filteredCrates = filteredCrates.Where(x => x.SourceActivityId == fieldToMatch.SourceActivityId);
            }
            if (!string.IsNullOrEmpty(fieldToMatch.SourceCrateLabel))
            {
                filteredCrates = filteredCrates.Where(x => x.Label == fieldToMatch.SourceCrateLabel);
            }
            if (fieldToMatch.SourceCrateManifest != CrateManifestType.Any && fieldToMatch.SourceCrateManifest != CrateManifestType.Unknown)
            {
                filteredCrates = filteredCrates.Where(x => x.ManifestType.Equals(fieldToMatch.SourceCrateManifest));
            }

            //iterate through found crates and search for the field with the specified key
            foreach (var crate in filteredCrates)
            {
                // skip system crates
                if (crate.IsOfType <OperationalStateCM>() || crate.IsOfType <CrateDescriptionCM>() || crate.IsOfType <ValidationResultsCM>())
                {
                    continue;
                }

                var foundValue = GetValue(crate, fieldToMatch.Name);

                if (foundValue != null)
                {
                    return(foundValue);
                }
            }

            return(null);
        }
示例#29
0
        public List <RadioButtonGroup> GetValues(ICrateStorage payload = null)
        {
            var controlsCM = GetOrCreateStandardConfigurationControlsCM();

            var radioButtonGroups = controlsCM
                                    .Controls.Where(IsBehaviorControl).OfType <RadioButtonGroup>();

            foreach (var rbGroup in radioButtonGroups)
            {
                rbGroup.GroupName = GetFieldId(rbGroup);
            }

            return(radioButtonGroups.ToList());
        }
示例#30
0
        public bool CanGetValue(ICrateStorage payloadCrateStorage)
        {
            if (HasSpecificValue)
            {
                return(true);
            }

            if (ValueSource == UpstreamValueSrouce && payloadCrateStorage == null)
            {
                return(false);
            }

            return(true);
        }