aboutsummaryrefslogtreecommitdiff
path: root/src/test/msi/WixToolsetTest.MsiE2E/XmlConfigTests.cs
blob: 9b90cf46a267d9c03ac84018d56e2dd39283199e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.

namespace WixToolsetTest.MsiE2E;

using System;
using System.IO;
using System.Xml.Linq;
using WixTestTools;
using Xunit;
using Xunit.Abstractions;

public class XmlConfigTests : MsiE2ETests
{
    public XmlConfigTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper)
    {
    }

    [RuntimeFact]
    public void CanModifyXmlFileWithXmlConfig()
    {
        var product = this.CreatePackageInstaller("XmlConfig");

        product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);

        // Validate the expected changes in my.xml.
        var myXmlPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "XmlConfig", "my.xml");
        var content = File.ReadAllText(myXmlPath);
        var xDoc = XDocument.Parse(content);

        var xRoot = xDoc.Element("root");
        var xChild1 = xRoot.Element("child1");
        Assert.NotNull(xChild1);

        var xGrandchild1 = xChild1.Element("grandchild1");
        Assert.Null(xGrandchild1);

        var xChild2 = xRoot.Element("child2");
        Assert.NotNull(xChild2);

        var xGrandchild3 = xChild2.Element("grandchild3");
        Assert.NotNull(xGrandchild3);
        Assert.True(xGrandchild3.HasAttributes);

        var xAttribute1 = xGrandchild3.Attribute("TheAttribute1");
        Assert.NotNull(xAttribute1);
        Assert.Equal("AttributeValue1", xAttribute1.Value);

        var xAttribute2 = xGrandchild3.Attribute("TheAttribute2");
        Assert.NotNull(xAttribute2);
        Assert.Equal("AttributeValue2", xAttribute2.Value);

        product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
    }
}