File: ConfigurationFileUpdaterTests.cs

package info (click to toggle)
mono-reference-assemblies 3.12.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 604,240 kB
  • ctags: 625,505
  • sloc: cs: 3,967,741; xml: 2,793,081; ansic: 418,042; java: 60,435; sh: 14,833; makefile: 11,576; sql: 7,956; perl: 1,467; cpp: 1,446; yacc: 1,203; python: 598; asm: 422; sed: 16; php: 1
file content (144 lines) | stat: -rw-r--r-- 5,266 bytes parent folder | download | duplicates (2)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.

namespace System.Data.Entity.Migrations.Utilities
{
    using System.Configuration;
    using System.IO;
    using System.Linq;
    using Xunit;

    public class ConfigurationFileUpdaterTests
    {
        [Fact]
        public void Update_adds_entity_framework_codebase_to_config()
        {
            var configurationFile = Path.GetTempFileName();

            try
            {
                File.WriteAllText(
                    configurationFile,
                    @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<configuration>
</configuration>");

                var updatedConfigurationFile = new ConfigurationFileUpdater().Update(configurationFile);
                Assert.True(File.Exists(updatedConfigurationFile));

                try
                {
                    var updatedConfiguration = File.ReadAllText(updatedConfigurationFile);
                    var entityFrameworkAssemblyName = typeof(DbContext).Assembly.GetName();

                    Assert.Equal(
                        @"<?xml version=""1.0"" encoding=""utf-8""?>
<configuration>
  <runtime>
    <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1"">
      <dependentAssembly>
        <assemblyIdentity name=""EntityFramework"" culture=""neutral"" publicKeyToken=""b77a5c561934e089"" />
        <codeBase version=""" + entityFrameworkAssemblyName.Version + @""" href="""
                        + entityFrameworkAssemblyName.CodeBase + @""" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>",
                        updatedConfiguration);
                }
                finally
                {
                    File.Delete(updatedConfigurationFile);
                }
            }
            finally
            {
                File.Delete(configurationFile);
            }
        }

        [Fact]
        public void Update_creates_new_config_file_if_missing()
        {
            var configurationFile = Path.GetTempFileName();
            File.Delete(configurationFile);

            var updatedConfigurationFile = new ConfigurationFileUpdater().Update(configurationFile);
            Assert.True(File.Exists(updatedConfigurationFile));

            try
            {
                var updatedConfiguration = File.ReadAllText(updatedConfigurationFile);
                var entityFrameworkAssemblyName = typeof(DbContext).Assembly.GetName();

                Assert.Equal(
                    @"<?xml version=""1.0"" encoding=""utf-8""?>
<configuration>
  <runtime>
    <assemblyBinding xmlns=""urn:schemas-microsoft-com:asm.v1"">
      <dependentAssembly>
        <assemblyIdentity name=""EntityFramework"" culture=""neutral"" publicKeyToken=""b77a5c561934e089"" />
        <codeBase version=""" + entityFrameworkAssemblyName.Version + @""" href="""
                    + entityFrameworkAssemblyName.CodeBase + @""" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>",
                    updatedConfiguration);
            }
            finally
            {
                File.Delete(updatedConfigurationFile);
            }
        }

        [Fact]
        public void Updated_file_can_resolve_sourceConfigs()
        {
            var directory = Path.GetTempFileName();
            File.Delete(directory);
            Directory.CreateDirectory(directory);

            try
            {
                var configPath = Path.Combine(directory, "App.config");
                File.WriteAllText(
                    configPath,
                    @"<?xml version='1.0' encoding='utf-8' ?>
<configuration>
  <connectionStrings configSource='connectionStrings.config' />
</configuration>");

                File.WriteAllText(
                    Path.Combine(directory, "connectionStrings.config"),
                    @"<?xml version='1.0' encoding='utf-8' ?>
<connectionStrings>
  <add name='MyConnectionString' connectionString='Data Source=.\SQLEXPRESS; Data Source=MyDatabase; Integrated Security=True' providerName='System.Data.SqlClient'/>
</connectionStrings>");

                var updatedConfigPath = new ConfigurationFileUpdater().Update(configPath);

                try
                {
                    var config = ConfigurationManager.OpenMappedExeConfiguration(
                        new ExeConfigurationFileMap
                            {
                                ExeConfigFilename = updatedConfigPath
                            },
                        ConfigurationUserLevel.None);

                    Assert.True(
                        config.ConnectionStrings.ConnectionStrings.Cast<ConnectionStringSettings>().Any(
                            css => css.Name == "MyConnectionString"));
                }
                finally
                {
                    File.Delete(updatedConfigPath);
                }
            }
            finally
            {
                Directory.Delete(directory, true);
            }
        }
    }
}