public IPolicySet ConvertPolicySet(AddPolicyLoadConversionMessageDelegate AddConversionMessage) { const decimal currentVersion = 2.1M; PolicyConverterBase converter = null; decimal version = decimal.Parse(GetPolicySetVersion(), CultureInfo.InvariantCulture); if (0 < decimal.Compare(currentVersion, version)) { PolicySetVersionStatus status = LatestVersion.Status; converter = new PolicySetVersionConverter_2_1(m_policySetCache, AddConversionMessage); converter.CreateCopyOfLatestVersion(); SetVersionStatus(LatestVersion, PolicySetVersionStatus.Disabled); converter.Convert(); converter.ConvertCompiledPolicySets(); // Restore status in the latest version SetVersionStatus(LatestVersion, status); } else if (0 == decimal.Compare(currentVersion, version)) { converter = new PolicyConverterBase(m_policySetCache, AddConversionMessage); } else { ErrorMessage errorMessage = new ErrorMessage("POLICY_VERSION_NOT_SUPPORTED", "Workshare.Policy.Properties.Resources", Assembly.GetExecutingAssembly()); Logger.LogError(errorMessage.LogString); throw new Exceptions.PolicyException(errorMessage.DisplayString); } IPolicySet result = converter.LatestPolicySet; if (result.PolicyType != m_policySetCache.LatestPolicyType) { string error = string.Format(CultureInfo.CurrentCulture, Properties.Resources.POLICY_TYPES_DISAGREE, m_policySetCache.LatestPolicyType, result.PolicyType); Logger.LogError(error); throw new Exceptions.PolicyException(error); } return result; }
public void TestUpgradeLDAPVersion_1_1_ToLatest() { IPolicySetCache policySetCache = ReadPolicySetCache(m_testPath + "Test Policy Set based on version 1.1 format for LDAP.policy"); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); int compiledPolicySetsCount = policySetCache.LatestVersion.CompiledPolicySets.Count; PolicySetVersionStatus policySetVersionStatus = policySetCache.LatestVersion.Status; System.Xml.XmlDocument originalCatalogue = new System.Xml.XmlDocument(); originalCatalogue.LoadXml(policySetCache.LatestVersion.MasterCatalogue.Content); string[] searchTokens = new string[] { "Addresses", "Address", "AddressGroup", "AddressCollection", "SenderAddressCollectionId", "RecipientAddressCollectionId" }; CheckCatalogueTokens(policySetCache.LatestVersion.MasterCatalogue, true, searchTokens); PolicyConverterBase converter = new PolicySetVersionConverter_2_1(policySetCache, AddConversionMessage); converter.Convert(); converter.ConvertCompiledPolicySets(); Assert.AreEqual(policySetVersionStatus, policySetCache.LatestVersion.Status, "Expected the status to be unchanged"); XmlDocument convertedCatalogue = new XmlDocument(); convertedCatalogue.LoadXml(policySetCache.LatestVersion.MasterCatalogue.Content); Dictionary<string, int> expectedRoutingTableAttributes = new Dictionary<string, int>(); expectedRoutingTableAttributes["{40AD6174-72D2-4C97-8CF6-FC67FE786302}"] = 3; expectedRoutingTableAttributes["{BC39CB1E-D597-4675-BE38-27752FD42A99}"] = 3; expectedRoutingTableAttributes["{A4CFB401-4F07-4D87-96AB-D557ED8A26CB}"] = 3; expectedRoutingTableAttributes["{9D86AC33-1754-4EB4-B6E0-3C283B52B414}"] = 3; CheckConvertedRoutingTableData(originalCatalogue, convertedCatalogue, expectedRoutingTableAttributes); CheckRoutingItemCollections(convertedCatalogue, "Workshare.DirectorySearcher.dll", "Workshare.Policy.Routing.LDAPRouter"); CheckCatalogueTokens(policySetCache.LatestVersion.MasterCatalogue, false, searchTokens); Assert.IsFalse(policySetCache.LatestVersion.Content.Contains("SenderAddressCollectionId")); Assert.IsFalse(policySetCache.LatestVersion.Content.Contains("RecipientAddressCollectionId")); Assert.AreEqual(2, policySetCache.LatestVersion.CompiledPolicySets.Count, "Expected the same amount of compiled policy sets after a conversion"); PolicyConverterFactory policySetConverter = new PolicyConverterFactory(policySetCache); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); Assert.AreEqual("2.1", policySetConverter.GetPolicySetVersion()); policySetConverter.ConvertPolicySet(AddConversionMessage); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); Assert.AreEqual(m_latestVersion, policySetConverter.GetPolicySetVersion()); policySetConverter.ConvertPolicySet(AddConversionMessage); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); Assert.AreEqual(m_latestVersion, policySetConverter.GetPolicySetVersion()); }
public void TestUpgradeWorkshareDefaultToLatest() { IPolicySetCache policySetCache = ReadPolicySetCache(m_testPath + "WorkshareClient.policy"); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); int compiledPolicySetsCount = policySetCache.LatestVersion.CompiledPolicySets.Count; Assert.AreEqual(10, compiledPolicySetsCount); policySetCache.LatestVersion.CompiledPolicySets.Clear(); PolicySetVersionStatus policySetVersionStatus = policySetCache.LatestVersion.Status; PolicyConverterBase converter = new PolicySetVersionConverter_2_1(policySetCache, AddConversionMessage); converter.Convert(); converter.ConvertCompiledPolicySets(); Assert.AreEqual(2, policySetCache.LatestVersion.CompiledPolicySets.Count); }
public void TestUpgradeBinaryCleanUserAction_1_4_ToLatest() { IPolicySetCache policySetCache = ReadPolicySetCache(m_testPath + "Test Policy Set Containing BinaryCleanUserAction assembly.policy"); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); int compiledPolicySetsCount = policySetCache.LatestVersion.CompiledPolicySets.Count; PolicySetVersionStatus policySetVersionStatus = policySetCache.LatestVersion.Status; string[] searchTokens = new string[] { "Workshare.Policy.Actions.BinaryCleanUserAction.dll", "Workshare.Policy.Actions.BinaryCleanUserAction"}; CheckCatalogueTokens(policySetCache.LatestVersion.MasterCatalogue, true, searchTokens); PolicyConverterBase converter = new PolicySetVersionConverter_2_1(policySetCache, AddConversionMessage); converter.Convert(); converter.ConvertCompiledPolicySets(); CheckCatalogueTokens(policySetCache.LatestVersion.MasterCatalogue, false, searchTokens); Assert.IsTrue(policySetCache.LatestVersion.MasterCatalogue.Content.Contains("Workshare.Policy.Actions.LightSpeedCleanUserAction.dll")); Assert.IsTrue(policySetCache.LatestVersion.MasterCatalogue.Content.Contains("Workshare.Policy.Actions.LightSpeedCleanUserAction")); Assert.IsTrue(policySetCache.LatestVersion.MasterCatalogue.Content.Contains("LightSpeed Clean Action")); //Check nothing else broken \ changed in this upgrade Assert.AreEqual(policySetVersionStatus, policySetCache.LatestVersion.Status, "Expected the status to be unchanged"); Assert.AreEqual(2, policySetCache.LatestVersion.CompiledPolicySets.Count, "Expected the same amount of compiled policy sets after a conversion"); PolicyConverterFactory policySetConverter = new PolicyConverterFactory(policySetCache); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); Assert.AreEqual(m_latestVersion, policySetConverter.GetPolicySetVersion()); }
public void TestUpgradeInternalExternalVersion_1_1_ToLatest() { IPolicySetCache policySetCache = ReadPolicySetCache(m_testPath + "Test Policy Set based on version 1.1 format for internal external.policy"); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); int compiledPolicySetsCount = policySetCache.LatestVersion.CompiledPolicySets.Count; PolicySetVersionStatus policySetVersionStatus = policySetCache.LatestVersion.Status; System.Xml.XmlDocument originalCatalogue = new System.Xml.XmlDocument(); originalCatalogue.LoadXml(policySetCache.LatestVersion.MasterCatalogue.Content); string[] searchTokens = new string[] { "Addresses", "Address", "AddressGroup", "AddressCollection", "SenderAddressCollectionId", "RecipientAddressCollectionId" }; CheckCatalogueTokens(policySetCache.LatestVersion.MasterCatalogue, true, searchTokens); m_conversionMessages.Clear(); PolicyConverterBase converter = new PolicySetVersionConverter_2_1(policySetCache, AddConversionMessage); converter.Convert(); converter.ConvertCompiledPolicySets(); Assert.AreEqual(policySetVersionStatus, policySetCache.LatestVersion.Status, "Expected the status to be unchanged"); Assert.AreEqual(1, m_conversionMessages.Count, "Incorrect number of conversion messages for conversion to 2.0"); XmlDocument convertedCatalogue = new XmlDocument(); convertedCatalogue.LoadXml(policySetCache.LatestVersion.MasterCatalogue.Content); Dictionary<string, int> expectedRoutingTableAttributes = new Dictionary<string, int>(); expectedRoutingTableAttributes["{76F28B5E-E458-45C4-BF68-42B075EE83C5}"] = 4; expectedRoutingTableAttributes["{79171CB4-014C-46EE-9CCA-B7D9418E6529}"] = 3; expectedRoutingTableAttributes["{C4E8D1C2-1E49-4BFD-8D8E-378A0C1D305E}"] = 3; expectedRoutingTableAttributes["{405E9F94-F72D-4AEE-9C0C-7BB3A4C090D9}"] = 3; CheckConvertedRoutingTableData(originalCatalogue, convertedCatalogue, expectedRoutingTableAttributes); CheckRoutingItemCollections(convertedCatalogue, "Workshare.InternalExternalResolver.dll", "Workshare.Policy.Routing.InternalExternalRouter"); CheckCatalogueTokens(policySetCache.LatestVersion.MasterCatalogue, false, searchTokens); Assert.IsFalse(policySetCache.LatestVersion.Content.Contains("SenderAddressCollectionId")); Assert.IsFalse(policySetCache.LatestVersion.Content.Contains("RecipientAddressCollectionId")); Assert.AreEqual(2, policySetCache.LatestVersion.CompiledPolicySets.Count, "Expected the same amount of compiled policy sets after a conversion"); PolicyConverterFactory policySetConverter = new PolicyConverterFactory(policySetCache); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); Assert.AreEqual("2.1", policySetConverter.GetPolicySetVersion()); policySetConverter.ConvertPolicySet(AddConversionMessage); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); Assert.AreEqual(m_latestVersion, policySetConverter.GetPolicySetVersion()); policySetConverter.ConvertPolicySet(AddConversionMessage); Assert.AreEqual(1, policySetCache.PolicySetVersions.Count); Assert.AreEqual(m_latestVersion, policySetConverter.GetPolicySetVersion()); }