winget-cli

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

DscResourceMapTests.cs (8205B)


      1 // -----------------------------------------------------------------------------
      2 // <copyright file="DscResourceMapTests.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;
     10     using System.Collections.Generic;
     11     using Microsoft.Management.Configuration.Processor.PowerShell.DscResourcesInfo;
     12     using Microsoft.Management.Configuration.Processor.PowerShell.Helpers;
     13     using Microsoft.Management.Configuration.UnitTests.Fixtures;
     14     using Microsoft.Management.Configuration.UnitTests.Helpers;
     15     using Xunit;
     16     using Xunit.Abstractions;
     17 
     18     /// <summary>
     19     /// DscResourceMap tests.
     20     /// </summary>
     21     [Collection("UnitTestCollection")]
     22     [InProc]
     23     public class DscResourceMapTests
     24     {
     25         private const string ResourceZoro = "xResourceZoro";
     26 
     27         private const string ModuleMugiwara = "xMugiwaraModule";
     28         private const string ModuleMugiwaraResourceLuffy = "xResourceLuffy";
     29 
     30         private const string ModuleOni = "xModuleOni";
     31         private const string ModuleOniResourceKaido = "xResourceKaido";
     32         private const string ModuleOniResourceYamato = "xResourceYamato";
     33 
     34         private static readonly Version VersionZoro = new Version("1.0.0.0");
     35 
     36         private static readonly Version VersionLuffyGear4 = new Version("4.0.0.1");
     37         private static readonly Version VersionLuffyGear5 = new Version("5.0.0.0");
     38 
     39         private static readonly Version VersionKaido = new Version("0.0.0.4");
     40         private static readonly Version VersionYamato = new Version("0.0.0.11");
     41 
     42         private readonly UnitTestFixture fixture;
     43         private readonly ITestOutputHelper log;
     44 
     45         /// <summary>
     46         /// Initializes a new instance of the <see cref="DscResourceMapTests"/> class.
     47         /// </summary>
     48         /// <param name="fixture">Unit test fixture.</param>
     49         /// <param name="log">Log.</param>
     50         public DscResourceMapTests(UnitTestFixture fixture, ITestOutputHelper log)
     51         {
     52             this.fixture = fixture;
     53             this.log = log;
     54         }
     55 
     56         /// <summary>
     57         /// Test GetResource for resources in the map.
     58         /// </summary>
     59         [Fact]
     60         public void DscResourcesMap_GetResource()
     61         {
     62             var dscResourceMap = new DscResourcesMap(this.CreateDscResourceInfo());
     63 
     64             // Get just by name.
     65             var zoroResult = dscResourceMap.GetResource(ResourceZoro, null, null);
     66             Assert.NotNull(zoroResult);
     67             Assert.Equal(ResourceZoro, zoroResult.Name);
     68             Assert.Equal(VersionZoro, zoroResult.Version);
     69 
     70             // Name not normalized.
     71             var zoroResultNormalize = dscResourceMap.GetResource("XRESOURCEZORO", null, null);
     72             Assert.NotNull(zoroResultNormalize);
     73             Assert.Equal(ResourceZoro, zoroResultNormalize.Name);
     74             Assert.Equal(VersionZoro, zoroResultNormalize.Version);
     75 
     76             var yamatoResult = dscResourceMap.GetResource(ModuleOniResourceYamato, null, null);
     77             Assert.NotNull(yamatoResult);
     78             Assert.Equal(ModuleOniResourceYamato, yamatoResult.Name);
     79             Assert.Equal(ModuleOni, yamatoResult.ModuleName);
     80             Assert.Equal(VersionYamato, yamatoResult.Version);
     81 
     82             // Just by name and module get latest.
     83             var luffyResult5 = dscResourceMap.GetResource(ModuleMugiwaraResourceLuffy, ModuleMugiwara, null);
     84             Assert.NotNull(luffyResult5);
     85             Assert.Equal(ModuleMugiwaraResourceLuffy, luffyResult5.Name);
     86             Assert.Equal(ModuleMugiwara, luffyResult5.ModuleName);
     87             Assert.Equal(VersionLuffyGear5, luffyResult5.Version);
     88 
     89             // Specific version.
     90             var luffyResult4 = dscResourceMap.GetResource(ModuleMugiwaraResourceLuffy, ModuleMugiwara, VersionLuffyGear4);
     91             Assert.NotNull(luffyResult4);
     92             Assert.Equal(ModuleMugiwaraResourceLuffy, luffyResult4.Name);
     93             Assert.Equal(ModuleMugiwara, luffyResult4.ModuleName);
     94             Assert.Equal(VersionLuffyGear4, luffyResult4.Version);
     95 
     96             // Module name not normalized
     97             var luffyResult4Normalized = dscResourceMap.GetResource(ModuleMugiwaraResourceLuffy, "XMUGIWARAMODULE", VersionLuffyGear4);
     98             Assert.NotNull(luffyResult4Normalized);
     99             Assert.Equal(ModuleMugiwaraResourceLuffy, luffyResult4Normalized.Name);
    100             Assert.Equal(ModuleMugiwara, luffyResult4Normalized.ModuleName);
    101             Assert.Equal(VersionLuffyGear4, luffyResult4Normalized.Version);
    102         }
    103 
    104         /// <summary>
    105         /// Tests GetResource when resources are not in the maps.
    106         /// </summary>
    107         [Fact]
    108         public void DscResourcesMap_GetResource_NoResource()
    109         {
    110             var dscResourceMap = new DscResourcesMap(this.CreateDscResourceInfo());
    111 
    112             // Zoro is lost.
    113             var zoroResult = dscResourceMap.GetResource(ResourceZoro, ModuleMugiwara, null);
    114             Assert.Null(zoroResult);
    115 
    116             // Yamato didn't join (spoilers)
    117             var yamatoResult = dscResourceMap.GetResource(ModuleOniResourceYamato, ModuleMugiwara, VersionYamato);
    118             Assert.Null(yamatoResult);
    119 
    120             // Gear 6 is not a thing (?)
    121             var luffyResult = dscResourceMap.GetResource(ModuleMugiwaraResourceLuffy, ModuleMugiwara, Version.Parse("6.0.0.0"));
    122             Assert.Null(luffyResult);
    123 
    124             // Wrong universe.
    125             var gokuResult = dscResourceMap.GetResource("xResourceGoku", null, null);
    126             Assert.Null(gokuResult);
    127         }
    128 
    129         /// <summary>
    130         /// Test Exists for resources in the map.
    131         /// </summary>
    132         [Fact]
    133         public void DscResourcesMap_Exists()
    134         {
    135             var dscResourceMap = new DscResourcesMap(this.CreateDscResourceInfo());
    136 
    137             Assert.True(dscResourceMap.Exists(ResourceZoro, null, null));
    138             Assert.True(dscResourceMap.Exists(ModuleOniResourceYamato, null, null));
    139             Assert.True(dscResourceMap.Exists(ModuleMugiwaraResourceLuffy, ModuleMugiwara, null));
    140             Assert.True(dscResourceMap.Exists(ModuleMugiwaraResourceLuffy, ModuleMugiwara, VersionLuffyGear4));
    141         }
    142 
    143         /// <summary>
    144         /// Tests Exists when resources are not in the maps.
    145         /// </summary>
    146         [Fact]
    147         public void DscResourcesMap_Exists_NoResource()
    148         {
    149             var dscResourceMap = new DscResourcesMap(this.CreateDscResourceInfo());
    150 
    151             Assert.False(dscResourceMap.Exists(ResourceZoro, ModuleMugiwara, null));
    152             Assert.False(dscResourceMap.Exists(ModuleOniResourceYamato, ModuleMugiwara, VersionYamato));
    153             Assert.False(dscResourceMap.Exists(ModuleMugiwaraResourceLuffy, ModuleMugiwara, Version.Parse("6.0.0.0")));
    154             Assert.False(dscResourceMap.Exists("xResourceGoku", null, null));
    155         }
    156 
    157         /// <summary>
    158         /// Creates 5 fake resources.
    159         /// 1 resource without module name.
    160         /// 2 resources module A same resource v1 v2.
    161         /// 2 resources module B different resources.
    162         /// </summary>
    163         /// <returns>Fake resources.</returns>
    164         private IReadOnlyList<DscResourceInfoInternal> CreateDscResourceInfo()
    165         {
    166             return new List<DscResourceInfoInternal>()
    167             {
    168                 new DscResourceInfoInternal(ResourceZoro, null, VersionZoro),
    169 
    170                 new DscResourceInfoInternal(ModuleMugiwaraResourceLuffy, ModuleMugiwara, VersionLuffyGear4),
    171                 new DscResourceInfoInternal(ModuleMugiwaraResourceLuffy, ModuleMugiwara, VersionLuffyGear5),
    172 
    173                 new DscResourceInfoInternal(ModuleOniResourceKaido, ModuleOni, VersionKaido),
    174                 new DscResourceInfoInternal(ModuleOniResourceYamato, ModuleOni, VersionYamato),
    175             };
    176         }
    177     }
    178 }