maksit-core/src/MaksIT.Core.Cli.Tests/SecretOperationsTests.cs
2026-08-21 13:59:23 +02:00

61 lines
1.6 KiB
C#

using MaksIT.Core.Cli;
using MaksIT.Core.Comb;
using MaksIT.Core.Security.JWT;
namespace MaksIT.Core.Cli.Tests;
public class SecretOperationsTests {
[Fact]
public void GenerateSecret_ReturnsUniqueNonEmptyValues() {
var secret1 = SecretOperations.GenerateSecret();
var secret2 = SecretOperations.GenerateSecret();
Assert.False(string.IsNullOrWhiteSpace(secret1));
Assert.False(string.IsNullOrWhiteSpace(secret2));
Assert.NotEqual(secret1, secret2);
}
[Fact]
public void GenerateAesKey_ReturnsNonEmptyValue() =>
Assert.False(string.IsNullOrWhiteSpace(SecretOperations.GenerateAesKey()));
[Fact]
public void GenerateCombGuid_PostgreSql_ReturnsNonEmptyGuid() {
var guid = SecretOperations.GenerateCombGuid(CombGuidType.PostgreSql);
Assert.NotEqual(Guid.Empty, guid);
}
[Fact]
public void TryGenerateJwt_ThenValidate_Succeeds() {
var secret = SecretOperations.GenerateSecret();
var request = new JWTTokenGenerateRequest {
Secret = secret,
Issuer = "cli-tests",
Audience = "cli-tests",
Expiration = 5,
Username = "tester"
};
var generated = SecretOperations.TryGenerateJwt(request, out var token, out var generateError);
Assert.True(generated);
Assert.False(string.IsNullOrWhiteSpace(token));
Assert.Null(generateError);
var validated = SecretOperations.TryValidateJwt(
secret,
request.Issuer,
request.Audience,
token!,
out var claims,
out var validateError
);
Assert.True(validated);
Assert.Equal("tester", claims?.Username);
Assert.Null(validateError);
}
}