fix(yaml): byte[] serialization (#1657)
* fix(yaml): byte[] serialization * fix: tests and code * chore: add null check * chore: add configmap tests
This commit is contained in:
@@ -78,7 +78,7 @@ namespace k8s
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Encoding.UTF8.GetBytes(scalar.Value);
|
return Convert.FromBase64String(scalar.Value);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@@ -91,19 +91,15 @@ namespace k8s
|
|||||||
|
|
||||||
public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerializer serializer)
|
public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerializer serializer)
|
||||||
{
|
{
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
emitter.Emit(new Scalar(string.Empty));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var obj = (byte[])value;
|
var obj = (byte[])value;
|
||||||
var strValue = Encoding.UTF8.GetString(obj);
|
var encoded = Convert.ToBase64String(obj);
|
||||||
|
emitter.Emit(new Scalar(encoded));
|
||||||
// Check if the string is multi-line by looking for a newline character.
|
|
||||||
var scalarStyle = strValue.Contains('\n') ? ScalarStyle.Literal : ScalarStyle.Any;
|
|
||||||
|
|
||||||
emitter.Emit(new Scalar(
|
|
||||||
AnchorName.Empty,
|
|
||||||
TagName.Empty,
|
|
||||||
strValue,
|
|
||||||
scalarStyle,
|
|
||||||
true,
|
|
||||||
true));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -804,12 +804,12 @@ spec:
|
|||||||
{
|
{
|
||||||
var kManifest = @"
|
var kManifest = @"
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
username: YlhrdFlYQnc=
|
||||||
|
password: TXprMU1qZ2tkbVJuTjBwaQ==
|
||||||
kind: Secret
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
name: test-secret
|
name: test-secret
|
||||||
data:
|
|
||||||
username: bXktYXBw
|
|
||||||
password: Mzk1MjgkdmRnN0pi
|
|
||||||
";
|
";
|
||||||
|
|
||||||
var result = KubernetesYaml.Deserialize<V1Secret>(kManifest, true);
|
var result = KubernetesYaml.Deserialize<V1Secret>(kManifest, true);
|
||||||
@@ -823,13 +823,8 @@ data:
|
|||||||
var kManifest = """
|
var kManifest = """
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
data:
|
data:
|
||||||
username: bXktYXBw
|
username: YlhrdFlYQnc=
|
||||||
tls2.crt: |
|
password: TXprMU1qZ2tkbVJuTjBwaQ==
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
FAKE CERT
|
|
||||||
FAKE CERT
|
|
||||||
FAKE CERT
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
kind: Secret
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
name: test-secret
|
name: test-secret
|
||||||
@@ -841,6 +836,45 @@ metadata:
|
|||||||
Assert.Equal(kManifest, yaml);
|
Assert.Equal(kManifest, yaml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void LoadConfigMap()
|
||||||
|
{
|
||||||
|
var kManifest = @"
|
||||||
|
apiVersion: v1
|
||||||
|
binaryData:
|
||||||
|
username: YlhrdFlYQnc=
|
||||||
|
data:
|
||||||
|
password: Mzk1MjgkdmRnN0pi
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: test-configmap
|
||||||
|
";
|
||||||
|
|
||||||
|
var result = KubernetesYaml.Deserialize<V1ConfigMap>(kManifest, true);
|
||||||
|
Assert.Equal("bXktYXBw", Encoding.UTF8.GetString(result.BinaryData["username"]));
|
||||||
|
Assert.Equal("Mzk1MjgkdmRnN0pi", result.Data["password"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void WriteConfigMap()
|
||||||
|
{
|
||||||
|
var kManifest = """
|
||||||
|
apiVersion: v1
|
||||||
|
binaryData:
|
||||||
|
username: YlhrdFlYQnc=
|
||||||
|
data:
|
||||||
|
password: Mzk1MjgkdmRnN0pi
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: test-configmap
|
||||||
|
""";
|
||||||
|
|
||||||
|
var result = KubernetesYaml.Deserialize<V1ConfigMap>(kManifest, true);
|
||||||
|
var yaml = KubernetesYaml.Serialize(result);
|
||||||
|
|
||||||
|
Assert.Equal(kManifest, yaml);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void DeserializeWithJsonPropertyName()
|
public void DeserializeWithJsonPropertyName()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user