public void TestMandatoryField()
        {
            const string messageProcessed = "Processed by VersionOne";
            const string messageClosed = "Was closed in the VersionOne system";

            string mandatoryFields = string.Format("<ClearQuestMandatoryFields><!--- testing --><Field name=\"Description\">{0}</Field><Field name=\"Reason\">{1}</Field></ClearQuestMandatoryFields>",
                messageProcessed, messageClosed);
            ClearQuestServiceConfiguration config = new ClearQuestServiceConfiguration();
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(mandatoryFields);
            ClearQuestHostedService service = new ClearQuestHostedService();

            service.ProcessMandatoryFieldsSettings(doc.DocumentElement, config);

            Assert.AreEqual(messageProcessed, config.MandatoryFields["Description"]);
            Assert.AreEqual(messageClosed, config.MandatoryFields["Reason"]);
        }
        public IOAdSession Create(ClearQuestServiceConfiguration config) 
		{
            if (session == null) 
            {
                session = new SessionClass();
				try
				{
					session.UserLogon(config.Username, config.Password, config.Database, Constants.SessionTypePrivate,
								  config.ConnectionName);
				}
				catch (COMException ex)
				{
					throw new ClearQuestLoginException("Connection to the ClearQuest system failed: " + ex.Message);
				}
            }

            return session;
        }
        private static ClearQuestServiceConfiguration CreateConfig()
        {
            ClearQuestServiceConfiguration config = new ClearQuestServiceConfiguration();
            config.SourceFieldValue = DefectSource;
            config.WebUrlTemplate = "http://example.com/defect/#defectid#";
            config.WebUrlTitle = "Link to defect";

            config.ClearQuestEntityType   = "defect";
            config.IdField                = "id";
            config.DefectTitleField       = "Headline";
            config.DescriptionField       = "Description";
            config.ProjectNameField       = "Project.Name";
            config.OwnerLoginField        = "Owner.login_name";
            config.StateField             = "State";
            config.ClearQuestPriorityField= "Priority";
            config.ClearQuestModifyAction = "modify";

            //Priority mapping data
            MappingInfo cqPriority1 = new MappingInfo(null, "CQ Priority 1");
            MappingInfo cqPriority2 = new MappingInfo(null, ClearQuestPriorityName);
            MappingInfo v1Priority1 = new MappingInfo("WorkitemPriority:1", "V1 Priority 1");
            MappingInfo v1Priority2 = new MappingInfo(VersionOnePriorityId, "V1 Priority 2");
            config.PriorityMappings.Add(cqPriority1, v1Priority1);
            config.PriorityMappings.Add(cqPriority2, v1Priority2);

            //Project mapping data
            MappingInfo cqProject1 = new MappingInfo(null, "CQ Project 1");
            MappingInfo cqProject2 = new MappingInfo(null, ClearQuestProjectName);
            MappingInfo v1Project1 = new MappingInfo("Scope:1", "V1 Project 1");
            MappingInfo v1Project2 = new MappingInfo(VersionOneProjectId, "V1 Project 2");
            config.ProjectMappings.Add(cqProject1, v1Project1);
            config.ProjectMappings.Add(cqProject2, v1Project2);

            return config;
        }
        public void ProcessMandatoryFieldsSettings(XmlElement config, ClearQuestServiceConfiguration clearQuestConfig) {
            XmlNodeList nodeList = config.SelectNodes("Field");

            for(int i = 0; i < nodeList.Count; i++) {
                XmlNode node = nodeList.Item(i);
                clearQuestConfig.MandatoryFields.Add(node.Attributes.GetNamedItem("name").Value, node.InnerText);
            }
        }
		public ClearQuestReaderUpdater(ClearQuestQuery query, ClearQuestServiceConfiguration config, ILogger logger)
		{
			this.query = query;
			this.logger = logger;
		    this.config = config;
		}