using System; using Xunit; using k8s; using System.IO; namespace k8s.Tests { public class CertUtilsTests { /// /// This file contains a sample kubeconfig file. The paths to the certificate files are relative /// to the current working directly. /// private static readonly string kubeConfigFileName = "assets/kubeconfig.yml"; /// /// This file contains a sample kubeconfig file. The paths to the certificate files are relative /// to the directory in which the kubeconfig file is located. /// private static readonly string kubeConfigWithRelativePathsFileName = "assets/kubeconfig.relative.yml"; /// /// Checks that a certificate can be loaded from files. /// [Fact] public void LoadFromFiles() { var cfg = KubernetesClientConfiguration.BuildConfigFromConfigFile(kubeConfigFileName, "federal-context", useRelativePaths: false); // Just validate that this doesn't throw and private key is non-null var cert = CertUtils.GeneratePfx(cfg); Assert.NotNull(cert.PrivateKey); } /// /// Checks that a certificate can be loaded from files, in a scenario where the files are using relative paths. /// [Fact] public void LoadFromFilesRelativePath() { var cfg = KubernetesClientConfiguration.BuildConfigFromConfigFile(kubeConfigWithRelativePathsFileName, "federal-context"); // Just validate that this doesn't throw and private key is non-null var cert = CertUtils.GeneratePfx(cfg); Assert.NotNull(cert.PrivateKey); } /// /// Checks that a certificate can be loaded from inline. /// [Fact] public void LoadFromInlineData() { var cfg = KubernetesClientConfiguration.BuildConfigFromConfigFile(kubeConfigFileName, "victorian-context", useRelativePaths: false); // Just validate that this doesn't throw and private key is non-null var cert = CertUtils.GeneratePfx(cfg); Assert.NotNull(cert.PrivateKey); } /// /// Checks that a certificate can be loaded from inline, in a scenario where the files are using relative paths.. /// [Fact] public void LoadFromInlineDataRelativePath() { var cfg = KubernetesClientConfiguration.BuildConfigFromConfigFile(kubeConfigWithRelativePathsFileName, "victorian-context"); // Just validate that this doesn't throw and private key is non-null var cert = CertUtils.GeneratePfx(cfg); Assert.NotNull(cert.PrivateKey); } /// /// Checks /// [Fact] public void LoadPemWithMultiCert() { var cert = CertUtils.LoadPemFileCert("assets/ca3.crt"); Assert.NotNull(cert.PublicKey); } } }