ConfigurationProcessorGetTests.cs (10225B)
1 // ----------------------------------------------------------------------------- 2 // <copyright file="ConfigurationProcessorGetTests.cs" company="Microsoft Corporation"> 3 // Copyright (c) Microsoft Corporation. Licensed under the MIT License. 4 // </copyright> 5 // ----------------------------------------------------------------------------- 6 7 namespace Microsoft.Management.Configuration.UnitTests.Tests 8 { 9 using System.IO; 10 using Microsoft.Management.Configuration.UnitTests.Fixtures; 11 using Microsoft.Management.Configuration.UnitTests.Helpers; 12 using Microsoft.VisualBasic; 13 using Xunit; 14 using Xunit.Abstractions; 15 16 /// <summary> 17 /// Unit tests for getting details on processors. 18 /// </summary> 19 [Collection("UnitTestCollection")] 20 [InProc] 21 [OutOfProc] 22 public class ConfigurationProcessorGetTests : ConfigurationProcessorTestBase 23 { 24 /// <summary> 25 /// Initializes a new instance of the <see cref="ConfigurationProcessorGetTests"/> class. 26 /// </summary> 27 /// <param name="fixture">Unit test fixture.</param> 28 /// <param name="log">Log helper.</param> 29 public ConfigurationProcessorGetTests(UnitTestFixture fixture, ITestOutputHelper log) 30 : base(fixture, log) 31 { 32 } 33 34 /// <summary> 35 /// Getting unit details throws an error. 36 /// </summary> 37 [Fact] 38 public void GetUnitDetailsError() 39 { 40 ConfigurationUnit configurationUnitThrows = this.ConfigurationUnit(); 41 42 TestConfigurationProcessorFactory factory = new TestConfigurationProcessorFactory(); 43 factory.NullProcessor = new TestConfigurationSetProcessor(null); 44 var thrownException = new FileNotFoundException(); 45 factory.NullProcessor.Exceptions.Add(configurationUnitThrows, thrownException); 46 47 ConfigurationProcessor processor = this.CreateConfigurationProcessorWithDiagnostics(factory); 48 49 GetConfigurationUnitDetailsResult result = processor.GetUnitDetails(configurationUnitThrows, ConfigurationUnitDetailFlags.Local); 50 51 Assert.Null(result.Details); 52 Assert.Equal(configurationUnitThrows, result.Unit); 53 Assert.Equal(thrownException.HResult, result.ResultInformation.ResultCode.HResult); 54 Assert.Equal(ConfigurationUnitResultSource.Internal, result.ResultInformation.ResultSource); 55 } 56 57 /// <summary> 58 /// Getting unit details retrieves a value. 59 /// </summary> 60 [Fact] 61 public void GetUnitDetailsSuccess() 62 { 63 ConfigurationUnit configurationUnit = this.ConfigurationUnit(); 64 TestConfigurationProcessorFactory factory = new TestConfigurationProcessorFactory(); 65 66 ConfigurationProcessor processor = this.CreateConfigurationProcessorWithDiagnostics(factory); 67 68 Assert.Null(configurationUnit.Details); 69 processor.GetUnitDetails(configurationUnit, ConfigurationUnitDetailFlags.Local); 70 Assert.NotNull(configurationUnit.Details); 71 } 72 73 /// <summary> 74 /// Getting set details throws an error. 75 /// </summary> 76 [Fact] 77 public void GetSetDetailsError() 78 { 79 ConfigurationSet configurationSet = this.ConfigurationSet(); 80 ConfigurationUnit configurationUnitWorks = this.ConfigurationUnit(); 81 ConfigurationUnit configurationUnitThrows = this.ConfigurationUnit(); 82 configurationSet.Units = new ConfigurationUnit[] { configurationUnitWorks, configurationUnitThrows }; 83 84 TestConfigurationProcessorFactory factory = new TestConfigurationProcessorFactory(); 85 TestConfigurationSetProcessor setProcessor = factory.CreateTestProcessor(configurationSet); 86 var thrownException = new InvalidDataException(); 87 setProcessor.Exceptions.Add(configurationUnitThrows, thrownException); 88 89 ConfigurationProcessor processor = this.CreateConfigurationProcessorWithDiagnostics(factory); 90 91 GetConfigurationSetDetailsResult result = processor.GetSetDetails(configurationSet, ConfigurationUnitDetailFlags.Local); 92 var unitResults = result.UnitResults; 93 Assert.Equal(2, unitResults.Count); 94 95 Assert.Equal(configurationUnitWorks, unitResults[0].Unit); 96 Assert.Null(unitResults[0].ResultInformation.ResultCode); 97 Assert.NotNull(configurationUnitWorks.Details); 98 99 Assert.Equal(configurationUnitThrows, unitResults[1].Unit); 100 Assert.NotNull(unitResults[1].ResultInformation.ResultCode); 101 Assert.Equal(thrownException.HResult, unitResults[1].ResultInformation.ResultCode.HResult); 102 Assert.Null(configurationUnitThrows.Details); 103 } 104 105 /// <summary> 106 /// Getting set details retrieves all values. 107 /// </summary> 108 [Fact] 109 public void GetSetDetailsSuccess() 110 { 111 ConfigurationSet configurationSet = this.ConfigurationSet(); 112 ConfigurationUnit configurationUnit1 = this.ConfigurationUnit(); 113 ConfigurationUnit configurationUnit2 = this.ConfigurationUnit(); 114 configurationSet.Units = new ConfigurationUnit[] { configurationUnit1, configurationUnit2 }; 115 116 TestConfigurationProcessorFactory factory = new TestConfigurationProcessorFactory(); 117 118 ConfigurationProcessor processor = this.CreateConfigurationProcessorWithDiagnostics(factory); 119 120 processor.GetSetDetails(configurationSet, ConfigurationUnitDetailFlags.Local); 121 Assert.NotNull(configurationUnit1.Details); 122 Assert.NotNull(configurationUnit2.Details); 123 } 124 125 /// <summary> 126 /// The unit settings processor returns an error HRESULT. 127 /// </summary> 128 [Fact] 129 public void GetSettings_ProcessorSettingsError() 130 { 131 ConfigurationUnit configurationUnit = this.ConfigurationUnit(); 132 133 TestConfigurationProcessorFactory factory = new TestConfigurationProcessorFactory(); 134 factory.NullProcessor = new TestConfigurationSetProcessor(null); 135 TestConfigurationUnitProcessor unitProcessor = factory.NullProcessor.CreateTestProcessor(configurationUnit); 136 unitProcessor.GetSettingsDelegate = () => throw new FileNotFoundException(); 137 138 ConfigurationProcessor processor = this.CreateConfigurationProcessorWithDiagnostics(factory); 139 140 GetConfigurationUnitSettingsResult result = processor.GetUnitSettings(configurationUnit); 141 142 Assert.NotNull(result); 143 Assert.NotNull(result.Settings); 144 Assert.NotNull(result.ResultInformation); 145 Assert.NotNull(result.ResultInformation.ResultCode); 146 Assert.IsType<FileNotFoundException>(result.ResultInformation.ResultCode); 147 } 148 149 /// <summary> 150 /// The unit settings processor returns an error in it's result. 151 /// </summary> 152 [Fact] 153 public void GetSettings_ProcessorSettingsFailedResult() 154 { 155 ConfigurationUnit configurationUnit = this.ConfigurationUnit(); 156 157 TestConfigurationProcessorFactory factory = new TestConfigurationProcessorFactory(); 158 factory.NullProcessor = new TestConfigurationSetProcessor(null); 159 TestConfigurationUnitProcessor unitProcessor = factory.NullProcessor.CreateTestProcessor(configurationUnit); 160 GetSettingsResultInstance getSettingsResult = new GetSettingsResultInstance(configurationUnit); 161 getSettingsResult.InternalResult.ResultCode = new InvalidDataException(); 162 getSettingsResult.InternalResult.Description = "We fail because we must"; 163 unitProcessor.GetSettingsDelegate = () => getSettingsResult; 164 165 ConfigurationProcessor processor = this.CreateConfigurationProcessorWithDiagnostics(factory); 166 167 GetConfigurationUnitSettingsResult result = processor.GetUnitSettings(configurationUnit); 168 169 Assert.NotNull(result); 170 Assert.Null(result.Settings); 171 Assert.NotNull(result.ResultInformation); 172 Assert.Equal(getSettingsResult.ResultInformation.ResultCode.HResult, result.ResultInformation.ResultCode.HResult); 173 Assert.Equal(getSettingsResult.ResultInformation.Description, result.ResultInformation.Description); 174 } 175 176 /// <summary> 177 /// The unit settings processor returns good settings. 178 /// </summary> 179 [Fact] 180 public void GetSettings_ProcessorSettingsSuccess() 181 { 182 ConfigurationUnit configurationUnit = this.ConfigurationUnit(); 183 184 TestConfigurationProcessorFactory factory = new TestConfigurationProcessorFactory(); 185 factory.NullProcessor = new TestConfigurationSetProcessor(null); 186 TestConfigurationUnitProcessor unitProcessor = factory.NullProcessor.CreateTestProcessor(configurationUnit); 187 GetSettingsResultInstance getSettingsResult = new GetSettingsResultInstance(configurationUnit); 188 getSettingsResult.Settings = new Windows.Foundation.Collections.ValueSet(); 189 getSettingsResult.Settings.Add("key", "value"); 190 unitProcessor.GetSettingsDelegate = () => getSettingsResult; 191 192 ConfigurationProcessor processor = this.CreateConfigurationProcessorWithDiagnostics(factory); 193 194 GetConfigurationUnitSettingsResult result = processor.GetUnitSettings(configurationUnit); 195 196 Assert.NotNull(result); 197 Assert.NotNull(result.ResultInformation); 198 Assert.Null(result.ResultInformation.ResultCode); 199 Assert.Empty(result.ResultInformation.Description); 200 Assert.NotNull(result.Settings); 201 Assert.NotEmpty(result.Settings); 202 Assert.Contains("key", result.Settings); 203 Assert.IsType<string>(result.Settings["key"]); 204 Assert.Equal("value", (string)result.Settings["key"]); 205 } 206 } 207 }