public void CommitMethodUpdatesValues() { var xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <Data> <DefaultConnection> <ConnectionString>TestConnectionString</ConnectionString> <Provider>SqlClient</Provider> </DefaultConnection> <Inventory> <ConnectionString>AnotherTestConnectionString</ConnectionString> <Provider>MySql</Provider> </Inventory> </Data> </settings>"; var xmlConfigSrc = new XmlConfigurationSource(ArbitraryFilePath); var outputCacheStream = new MemoryStream(); xmlConfigSrc.Load(StringToStream(xml)); xmlConfigSrc.Set("Data:DefaultConnection:Provider", "NewSqlClient"); xmlConfigSrc.Set("Data:Inventory:Provider", "NewMySql"); xmlConfigSrc.Commit(StringToStream(xml), outputCacheStream); var newContents = StreamToString(outputCacheStream); Assert.Equal(xml.Replace("SqlClient", "NewSqlClient").Replace("MySql", "NewMySql"), newContents); }
public void CommitMethodCanHandleEmptyValue() { var xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <Key1></Key1> <Key2 Key3="""" /> </settings>"; var expectedXml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <Key1>Value1</Key1> <Key2 Key3=""Value2"" /> </settings>"; var xmlConfigSrc = new XmlConfigurationSource(ArbitraryFilePath); var outputCacheStream = new MemoryStream(); xmlConfigSrc.Load(StringToStream(xml)); xmlConfigSrc.Set("Key1", "Value1"); xmlConfigSrc.Set("Key2:Key3", "Value2"); xmlConfigSrc.Commit(StringToStream(xml), outputCacheStream); var newContents = StreamToString(outputCacheStream); Assert.Equal(expectedXml, newContents); }
public void CommitMethodPreservesCommmentsAndProcessingInstructionsAndWhiteSpaces() { var xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <Data> <DefaultConnection> <ConnectionString>TestConnectionString</ConnectionString> <Provider>SqlClient</Provider> </DefaultConnection> <Inventory> <ConnectionString>AnotherTestConnectionString</ConnectionString> <Provider>MySql</Provider> </Inventory> </Data> </settings>"; var xmlConfigSrc = new XmlConfigurationSource(ArbitraryFilePath); var outputCacheStream = new MemoryStream(); xmlConfigSrc.Load(StringToStream(xml)); xmlConfigSrc.Commit(StringToStream(xml), outputCacheStream); var newContents = StreamToString(outputCacheStream); Assert.Equal(xml, newContents); }
public void CommitOperationThrowsExceptionWhenFindNewlyAddedKeyAfterLoadOperation() { var xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <Data> <DefaultConnection> <ConnectionString>TestConnectionString</ConnectionString> <Provider>SqlClient</Provider> </DefaultConnection> <Inventory> <ConnectionString>AnotherTestConnectionString</ConnectionString> <Provider>MySql</Provider> </Inventory> </Data> </settings>"; var modifiedXml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <Data> <DefaultConnection> <ConnectionString>TestConnectionString</ConnectionString> <Provider>SqlClient</Provider> <NewKey>NewValue</NewKey> </DefaultConnection> <Inventory> <ConnectionString>AnotherTestConnectionString</ConnectionString> <Provider>MySql</Provider> </Inventory> </Data> </settings>"; var xmlConfigSrc = new XmlConfigurationSource(ArbitraryFilePath); var outputCacheStream = new MemoryStream(); xmlConfigSrc.Load(StringToStream(xml)); var exception = Assert.Throws <InvalidOperationException>( () => xmlConfigSrc.Commit(StringToStream(modifiedXml), outputCacheStream)); Assert.Equal( Resources.FormatError_CommitWhenNewKeyFound("Data:DefaultConnection:NewKey"), exception.Message); }
public void CommitOperationThrowsExceptionWhenFindInvalidModificationAfterLoadOperation() { var xml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <Data> <DefaultConnection> <ConnectionString>TestConnectionString</ConnectionString> <Provider>SqlClient</Provider> </DefaultConnection> <Inventory> <ConnectionString>AnotherTestConnectionString</ConnectionString> <Provider>MySql</Provider> </Inventory> </Data> </settings>"; var modifiedXml = @"<?xml version=""1.0"" encoding=""UTF-8""?> <?xml-stylesheet type=""text/xsl"" href=""style1.xsl""?> <settings xmlns:MyNameSpace=""http://microsoft.com/wwa/mynamespace""> <?xml-stylesheet type=""text/xsl"" href=""style2.xsl""?> <MyNameSpace:Data> <DefaultConnection> <ConnectionString>TestConnectionString</ConnectionString> <Provider>SqlClient</Provider> </DefaultConnection> <Inventory> <ConnectionString>AnotherTestConnectionString</ConnectionString> <Provider>MySql</Provider> </Inventory> </MyNameSpace:Data> </settings>"; var xmlConfigSrc = new XmlConfigurationSource(ArbitraryFilePath); var outputCacheStream = new MemoryStream(); xmlConfigSrc.Load(StringToStream(xml)); var exception = Assert.Throws <FormatException>( () => xmlConfigSrc.Commit(StringToStream(modifiedXml), outputCacheStream)); Assert.Equal(Resources.FormatError_NamespaceIsNotSupported(Resources.FormatMsg_LineInfo(3, 31)), exception.Message); }