-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
StackSettingsConfigValueJsonConverterTests.cs
126 lines (108 loc) · 3.51 KB
/
StackSettingsConfigValueJsonConverterTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Copyright 2016-2021, Pulumi Corporation
using System;
using System.Text.Json;
using Pulumi.Automation.Serialization;
using Xunit;
namespace Pulumi.Automation.Tests.Serialization
{
public class StackSettingsConfigValueJsonConverterTests
{
private static readonly LocalSerializer _serializer = new LocalSerializer();
[Fact]
public void CanDeserializePlainString()
{
const string json = @"
{
""config"": {
""test"": ""plain""
}
}
";
var settings = _serializer.DeserializeJson<StackSettings>(json);
Assert.NotNull(settings.Config);
Assert.True(settings!.Config!.ContainsKey("test"));
var value = settings.Config["test"];
Assert.NotNull(value);
Assert.Equal("plain", value.Value);
Assert.False(value.IsSecure);
}
[Fact]
public void CanDeserializeSecureString()
{
const string json = @"
{
""config"": {
""test"": {
""secure"": ""secret""
}
}
}
";
var settings = _serializer.DeserializeJson<StackSettings>(json);
Assert.NotNull(settings.Config);
Assert.True(settings!.Config!.ContainsKey("test"));
var value = settings.Config["test"];
Assert.NotNull(value);
Assert.Equal("secret", value.Value);
Assert.True(value.IsSecure);
}
[Fact]
public void DeserializeObjectWorks()
{
const string json = @"
{
""config"": {
""value"": {
""hello"": ""world""
}
}
}
";
var settings = _serializer.DeserializeJson<StackSettings>(json);
Assert.NotNull(settings.Config);
Assert.True(settings!.Config!.ContainsKey("value"));
var value = settings.Config["value"];
Assert.NotNull(value);
Assert.Equal("{\"hello\":\"world\"}", value.Value);
Assert.False(value.IsSecure);
}
[Fact]
public void DeserializeArrayWorks()
{
const string json = @"
{
""config"": {
""value"": [1,2,3,4,5]
}
}
";
var settings = _serializer.DeserializeJson<StackSettings>(json);
Assert.NotNull(settings.Config);
Assert.True(settings!.Config!.ContainsKey("value"));
var value = settings.Config["value"];
Assert.NotNull(value);
Assert.Equal("[1,2,3,4,5]", value.Value);
Assert.False(value.IsSecure);
}
[Fact]
public void SerializesPlainStringAsString()
{
var value = new StackSettingsConfigValue("test", false);
var json = _serializer.SerializeJson(value);
var element = JsonSerializer.Deserialize<JsonElement>(json);
Assert.Equal(JsonValueKind.String, element.ValueKind);
Assert.Equal("test", element.GetString());
}
[Fact]
public void SerializesSecureStringAsObject()
{
var value = new StackSettingsConfigValue("secret", true);
var json = _serializer.SerializeJson(value);
var element = JsonSerializer.Deserialize<JsonElement>(json);
Assert.Equal(JsonValueKind.Object, element.ValueKind);
Assert.True(element.TryGetProperty("secure", out var secureProperty));
Assert.Equal(JsonValueKind.String, secureProperty.ValueKind);
Assert.Equal("secret", secureProperty.GetString());
}
}
}