mirror of https://github.com/pulumi/pulumi.git
70 lines
3.0 KiB
C#
70 lines
3.0 KiB
C#
// Copyright 2016-2021, Pulumi Corporation
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Immutable;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
using Pulumi.Testing;
|
|
|
|
namespace Pulumi.Mypkg
|
|
{
|
|
public class Mocks : IMocks
|
|
{
|
|
public Task<object> CallAsync(MockCallArgs args)
|
|
{
|
|
|
|
if (args.Token == "mypkg::listStorageAccountKeys")
|
|
{
|
|
var argsString = string.Join(", ", args.Args.Keys.OrderBy(k => k).Select(k => $"{k}: {args.Args[k]}"));
|
|
var dictBuilder = ImmutableDictionary.CreateBuilder<string,Object>();
|
|
var arrayBuilder = ImmutableArray.CreateBuilder<object>();
|
|
var elemBuilder = ImmutableDictionary.CreateBuilder<string,Object>();
|
|
elemBuilder.Add("creationTime", "my-creation-time");
|
|
elemBuilder.Add("keyName", "my-key-name");
|
|
elemBuilder.Add("permissions", "my-permissions");
|
|
elemBuilder.Add("value", "[" + argsString + "]");
|
|
arrayBuilder.Add(elemBuilder.ToImmutableDictionary());
|
|
dictBuilder.Add("keys", arrayBuilder.ToImmutableArray());
|
|
var result = dictBuilder.ToImmutableDictionary();
|
|
return Task.FromResult((Object)result);
|
|
}
|
|
|
|
if (args.Token == "mypkg::getAmiIds")
|
|
{
|
|
// NOTE: only subset of possible fields are tested here in the smoke-test.
|
|
var filters = (ImmutableArray<object>)args.Args["filters"];
|
|
var filterString = string.Join(
|
|
", ",
|
|
filters
|
|
.Select(f => (ImmutableDictionary<string,object>)f)
|
|
.Select(d =>
|
|
{
|
|
var name = (string)d["name"];
|
|
var values = string.Join(", ", ((ImmutableArray<object>)d["values"]).Select(x => (string)x));
|
|
return $"name={name} values=[{values}]";
|
|
}));
|
|
filterString = $"[{filterString}]";
|
|
var owners = (ImmutableArray<object>)args.Args["owners"];
|
|
var ownersString = string.Join(", ", owners.Select(x => (string)x));
|
|
var sortAscending = (bool)args.Args["sortAscending"];
|
|
var nameRegex = (string)args.Args["nameRegex"];
|
|
var dictBuilder = ImmutableDictionary.CreateBuilder<string,Object>();
|
|
dictBuilder.Add("id", $"my-id [owners: {ownersString}] [filters: {filterString}]");
|
|
dictBuilder.Add("nameRegex", nameRegex);
|
|
dictBuilder.Add("sortAscending", sortAscending);
|
|
var result = dictBuilder.ToImmutableDictionary();
|
|
return Task.FromResult((Object)result);
|
|
}
|
|
|
|
throw new Exception($"CallAsync not implemented for {args.Token}..");
|
|
}
|
|
|
|
public Task<(string? id, object state)> NewResourceAsync(MockResourceArgs args)
|
|
{
|
|
throw new Exception("NewResourceAsync not implemented..");
|
|
}
|
|
}
|
|
}
|