winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }