I have an extension method which is used to read a particular claim from the current ClaimsPrincipal
. But I also need to check this value against a list of items which I have in the appsettings.json
.
I had this working by using a ConfigurationBuilder()
to read the appsettings
directly in much the same way as the startup does, although instead of using
.SetBasePath(Directory.GetCurrentDirectory())
as I do in the startup, I was using
.SetBasePath(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location))
Which although isn't pretty, works fine. However, when the Unit tests are run none of the following get me to where the appsettings are
Directory.GetCurrentDirectory()
Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
and I cannot see a way of getting the IHostingEnvironment
or something similar into the extension method to read out the appsettings
, or indeed to ditch the ConfigurationBuilder()
and get at IOptions
in the extension method, in such a way that the unit test and the running code will work correctly.
I assume there must be a way of doing this? Although I expect that I should simply not be trying at all and lift the check against the list of items into another class entirely...