feat: Add MongoIdempotencyStoreOptions for MongoDB configuration
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled

feat: Implement BsonJsonConverter for converting BsonDocument and BsonArray to JSON

fix: Update project file to include MongoDB.Bson package

test: Add GraphOverlayExporterTests to validate NDJSON export functionality

refactor: Refactor Program.cs in Attestation Tool for improved argument parsing and error handling

docs: Update README for stella-forensic-verify with usage instructions and exit codes

feat: Enhance HmacVerifier with clock skew and not-after checks

feat: Add MerkleRootVerifier and ChainOfCustodyVerifier for additional verification methods

fix: Update DenoRuntimeShim to correctly handle file paths

feat: Introduce ComposerAutoloadData and related parsing in ComposerLockReader

test: Add tests for Deno runtime execution and verification

test: Enhance PHP package tests to include autoload data verification

test: Add unit tests for HmacVerifier and verification logic
This commit is contained in:
StellaOps Bot
2025-11-22 16:42:56 +02:00
parent 967ae0ab16
commit dc7c75b496
85 changed files with 2272 additions and 917 deletions

View File

@@ -73,6 +73,44 @@ public sealed class DenoRuntimeTraceRunnerTests
}
}
[Fact]
public async Task ExecutesShimAndWritesRuntime_WhenDenoPresent()
{
var binary = DenoBinaryLocator.Find();
if (string.IsNullOrWhiteSpace(binary))
{
return; // gracefully skip when deno is unavailable in the environment
}
var root = TestPaths.CreateTemporaryDirectory();
try
{
var entry = Path.Combine(root, "main.ts");
var fixture = Path.Combine(TestPaths.GetProjectRoot(), "TestFixtures/deno-runtime/simple/main.ts");
File.Copy(fixture, entry);
using var entryEnv = new EnvironmentVariableScope("STELLA_DENO_ENTRYPOINT", "main.ts");
using var binaryEnv = new EnvironmentVariableScope("STELLA_DENO_BINARY", binary);
using var denoDirEnv = new EnvironmentVariableScope("DENO_DIR", Path.Combine(root, ".deno-cache"));
var context = new LanguageAnalyzerContext(root, TimeProvider.System);
var result = await DenoRuntimeTraceRunner.TryExecuteAsync(context, logger: null, CancellationToken.None);
Assert.True(result);
var runtimePath = Path.Combine(root, "deno-runtime.ndjson");
Assert.True(File.Exists(runtimePath));
var content = await File.ReadAllTextAsync(runtimePath);
Assert.Contains("deno.runtime.start", content);
Assert.Contains("deno.module.load", content);
}
finally
{
TestPaths.SafeDelete(root);
}
}
private sealed class EnvironmentVariableScope : IDisposable
{
private readonly string _name;

View File

@@ -0,0 +1,2 @@
// offline-friendly deno entrypoint for shim smoke test
console.log("shim-fixture-start");

View File

@@ -0,0 +1,47 @@
using System.Runtime.InteropServices;
namespace StellaOps.Scanner.Analyzers.Lang.Deno.Tests.TestUtilities;
internal static class DenoBinaryLocator
{
public static string? Find()
{
var candidates = new List<string>();
var envBinary = Environment.GetEnvironmentVariable("STELLA_DENO_BINARY");
if (!string.IsNullOrWhiteSpace(envBinary))
{
candidates.Add(envBinary);
}
var path = Environment.GetEnvironmentVariable("PATH") ?? string.Empty;
var separator = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ';' : ':';
var exeName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "deno.exe" : "deno";
foreach (var segment in path.Split(separator, StringSplitOptions.RemoveEmptyEntries))
{
candidates.Add(Path.Combine(segment, exeName));
}
foreach (var candidate in candidates)
{
if (string.IsNullOrWhiteSpace(candidate))
{
continue;
}
try
{
if (File.Exists(candidate))
{
return candidate;
}
}
catch
{
// ignore malformed paths
}
}
return null;
}
}