public void ProviderThrowsInvalidDataExceptionWhenLoadFails()
        {
            var tempFile = Path.GetTempFileName();

            try
            {
                File.WriteAllText(tempFile, "Test::FileData");

                var fileProviderMock = new Mock <IFileProvider>();
                fileProviderMock.Setup(fp => fp.Watch(It.IsAny <string>())).Returns(new ConfigurationRootTest.ChangeToken());
                fileProviderMock.Setup(fp => fp.GetFileInfo(It.IsAny <string>())).Returns(new FileInfoImpl(tempFile));

                var source = new FileConfigurationSourceImpl
                {
                    FileProvider   = fileProviderMock.Object,
                    ReloadOnChange = true,
                };
                var provider = new ThrowOnLoadFileConfigurationProviderImpl(source);

                var exception = Assert.Throws <InvalidDataException>(() => provider.Load());
                Assert.Contains($"Failed to load configuration from file '{tempFile}'", exception.Message);
            }
            finally
            {
                if (File.Exists(tempFile))
                {
                    File.Delete(tempFile);
                }
            }
        }
        public void ProviderThrowsDirectoryNotFoundExceptionWhenNotFound(string physicalPath)
        {
            var fileProviderMock = new Mock <IFileProvider>();

            fileProviderMock.Setup(fp => fp.Watch(It.IsAny <string>())).Returns(new ConfigurationRootTest.ChangeToken());
            fileProviderMock.Setup(fp => fp.GetFileInfo(It.IsAny <string>())).Returns(new FileInfoImpl(physicalPath));

            var source = new FileConfigurationSourceImpl
            {
                FileProvider   = fileProviderMock.Object,
                ReloadOnChange = true,
            };
            var provider = new FileConfigurationProviderImpl(source);

            var exception = Assert.Throws <DirectoryNotFoundException>(() => provider.Load());

            Assert.Contains(physicalPath, exception.Message);
        }