Skip to content

Commit cdf41d2

Browse files
committed
Extensions: Configuration reading from new IConfigurationSections
*Microsoft.Extensions.Configuration.IConfigurationSection
1 parent 8a03ac0 commit cdf41d2

25 files changed

Lines changed: 2404 additions & 40 deletions
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using Microsoft.Extensions.Configuration;
8+
using NUnit.Framework;
9+
10+
namespace TestCommon
11+
{
12+
public abstract class ModernConfigurationTestBase
13+
{
14+
protected enum ConfigTypes
15+
{
16+
Json,
17+
Xml,
18+
}
19+
20+
protected IConfiguration configuration;
21+
22+
protected abstract ConfigTypes ConfigFormat { get; }
23+
24+
protected abstract void AddConfigurationFile(IConfigurationBuilder configurationBuilder);
25+
26+
[OneTimeSetUp]
27+
public virtual void BeforeAllTestsSetUp()
28+
{
29+
var configurationBuilder = new ConfigurationBuilder();
30+
configurationBuilder.SetBasePath(Directory.GetCurrentDirectory());
31+
AddConfigurationFile(configurationBuilder);
32+
configuration = (ConfigurationRoot) configurationBuilder.Build();
33+
}
34+
35+
protected void IgnoreIfXml()
36+
{
37+
if (ConfigFormat == ConfigTypes.Xml)
38+
throw new IgnoreException("Not valid for Xml format");
39+
}
40+
protected void IgnoreIfJson()
41+
{
42+
if (ConfigFormat == ConfigTypes.Json)
43+
throw new IgnoreException("Not valid for JSON format");
44+
}
45+
46+
protected IConfigurationSection GetAndCheckConfigurationSection(string sectionName)
47+
{
48+
var section = configuration.GetSection(sectionName);
49+
Assert.That(section, Is.Not.Null);
50+
return section;
51+
}
52+
}
53+
}

Extensions/TestCommon/TestCommon.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@
1010
<Import Project="$(SolutionDir)MSBuild\DataObjects.Net.InternalBuild.targets" />
1111
<ItemGroup Condition="'$(TargetFramework)'=='net5.0'">
1212
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
13+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
14+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
15+
<PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="5.0.0" />
1316
</ItemGroup>
1417
<ItemGroup Condition="'$(TargetFramework)'=='net6.0'">
1518
<PackageReference Include="System.Configuration.ConfigurationManager" Version="6.0.1" />
19+
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0" />
20+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
21+
<PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="6.0.0" />
1622
</ItemGroup>
1723
<ItemGroup>
1824
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<configuration>
3+
<!-- No elements, all names should be default-->
4+
<Xtensive.Orm.Localization.Xml.Empty>
5+
</Xtensive.Orm.Localization.Xml.Empty>
6+
7+
<!--Names are empty, all names should be default-->
8+
<Xtensive.Orm.Localization.Xml.NameEmpty>
9+
<DefaultCulture></DefaultCulture>
10+
</Xtensive.Orm.Localization.Xml.NameEmpty>
11+
12+
<Xtensive.Orm.Localization.Xml.NameDefined>
13+
<DefaultCulture>es-ES</DefaultCulture>
14+
</Xtensive.Orm.Localization.Xml.NameDefined>
15+
16+
<Xtensive.Orm.Localization.Xml.FaultyValue>
17+
<DefaultCulture>ololo</DefaultCulture>
18+
</Xtensive.Orm.Localization.Xml.FaultyValue>
19+
20+
<!-- Different namings schemes of elements -->
21+
<!-- LC - lower case -->
22+
<!-- UC - upper case -->
23+
<!-- CC - camel case -->
24+
<!-- PC - pascal case-->
25+
<Xtensive.Orm.Localization.Xml.Naming.LC>
26+
<defaultculture>es-ES</defaultculture>
27+
</Xtensive.Orm.Localization.Xml.Naming.LC>
28+
29+
<Xtensive.Orm.Localization.Xml.Naming.UC>
30+
<DEFAULTCULTURE>es-ES</DEFAULTCULTURE>
31+
</Xtensive.Orm.Localization.Xml.Naming.UC>
32+
33+
<Xtensive.Orm.Localization.Xml.Naming.CC>
34+
<defaultCulture>es-ES</defaultCulture>
35+
</Xtensive.Orm.Localization.Xml.Naming.CC>
36+
37+
<Xtensive.Orm.Localization.Xml.Naming.PC>
38+
<DefaultCulture>es-ES</DefaultCulture>
39+
</Xtensive.Orm.Localization.Xml.Naming.PC>
40+
41+
<!-- Cases of mistyping of element names -->
42+
<!-- LC - lower case -->
43+
<!-- UC - upper case -->
44+
<!-- CC - camel case -->
45+
<!-- PC - pascal case-->
46+
<Xtensive.Orm.Localization.Xml.Mistype.LC>
47+
<defailtculture>es-ES</defailtculture>
48+
</Xtensive.Orm.Localization.Xml.Mistype.LC>
49+
50+
<Xtensive.Orm.Localization.Xml.Mistype.UC>
51+
<DEFAILTCULTURE>es-ES</DEFAILTCULTURE>
52+
</Xtensive.Orm.Localization.Xml.Mistype.UC>
53+
54+
<Xtensive.Orm.Localization.Xml.Mistype.CC>
55+
<defailtCulture>es-ES</defailtCulture>
56+
</Xtensive.Orm.Localization.Xml.Mistype.CC>
57+
58+
<Xtensive.Orm.Localization.Xml.Mistype.PC>
59+
<DefailtCulture>es-ES</DefailtCulture>
60+
</Xtensive.Orm.Localization.Xml.Mistype.PC>
61+
62+
<!-- Cases of configuration when service name is represented by Name child node -->
63+
<Xtensive.Orm.Localization.Xml.NameNode.NameEmpty>
64+
<DefaultCulture>
65+
<Name></Name>
66+
</DefaultCulture>
67+
</Xtensive.Orm.Localization.Xml.NameNode.NameEmpty>
68+
69+
<Xtensive.Orm.Localization.Xml.NameNode.Espaniol>
70+
<DefaultCulture>
71+
<Name>es-ES</Name>
72+
</DefaultCulture>
73+
</Xtensive.Orm.Localization.Xml.NameNode.Espaniol>
74+
75+
<Xtensive.Orm.Localization.Xml.NameNode.FaultyValue>
76+
<DefaultCulture>
77+
<Name>ololo</Name>
78+
</DefaultCulture>
79+
</Xtensive.Orm.Localization.Xml.NameNode.FaultyValue>
80+
81+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.LC>
82+
<DefaultCulture>
83+
<name>es-ES</name>
84+
</DefaultCulture>
85+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.LC>
86+
87+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.UC>
88+
<DefaultCulture>
89+
<NAME>es-ES</NAME>
90+
</DefaultCulture>
91+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.UC>
92+
93+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.CC>
94+
<DefaultCulture>
95+
<naMe>es-ES</naMe>
96+
</DefaultCulture>
97+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.CC>
98+
99+
<Xtensive.Orm.Localization.Xml.NameNode.Naming.PC>
100+
<DefaultCulture>
101+
<NaMe>es-ES</NaMe>
102+
</DefaultCulture>
103+
</Xtensive.Orm.Localization.Xml.NameNode.Naming.PC>
104+
105+
106+
<!-- combinations of Xml-specifit cases, mostly old-fashion attributes -->
107+
<Xtensive.Orm.Localization.NameAttribute.NameEmpty>
108+
<defaultCulture name="" />
109+
</Xtensive.Orm.Localization.NameAttribute.NameEmpty>
110+
111+
<Xtensive.Orm.Localization.NameAttribute.None>
112+
<defaultCulture />
113+
</Xtensive.Orm.Localization.NameAttribute.None>
114+
115+
<Xtensive.Orm.Localization.NameAttribute.Defined>
116+
<defaultCulture name="es-ES" />
117+
</Xtensive.Orm.Localization.NameAttribute.Defined>
118+
119+
<Xtensive.Orm.Localization.NameAttribute.FaultyValue>
120+
<defaultCulture name="ololo" />
121+
</Xtensive.Orm.Localization.NameAttribute.FaultyValue>
122+
123+
<Xtensive.Orm.Localization.NameAttribute.LC>
124+
<defaultculture name="es-ES" />
125+
</Xtensive.Orm.Localization.NameAttribute.LC>
126+
127+
<Xtensive.Orm.Localization.NameAttribute.UC>
128+
<DEFAULTCULTURE name="es-ES" />
129+
</Xtensive.Orm.Localization.NameAttribute.UC>
130+
131+
<Xtensive.Orm.Localization.NameAttribute.PC>
132+
<DefaultCulture name="es-ES" />
133+
</Xtensive.Orm.Localization.NameAttribute.PC>
134+
135+
</configuration>

0 commit comments

Comments
 (0)