Restructure solution layout by module
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using System.Text.Json.Nodes;
|
||||
|
||||
namespace StellaOps.Notify.Models.Tests;
|
||||
|
||||
public sealed class NotifySchemaMigrationTests
|
||||
{
|
||||
[Fact]
|
||||
public void UpgradeRuleAddsSchemaVersionWhenMissing()
|
||||
{
|
||||
var json = JsonNode.Parse(
|
||||
"""
|
||||
{
|
||||
"ruleId": "rule-legacy",
|
||||
"tenantId": "tenant-1",
|
||||
"name": "legacy",
|
||||
"enabled": true,
|
||||
"match": { "eventKinds": ["scanner.report.ready"] },
|
||||
"actions": [ { "actionId": "send", "channel": "email:legacy", "enabled": true } ],
|
||||
"createdAt": "2025-10-18T00:00:00Z",
|
||||
"updatedAt": "2025-10-18T00:00:00Z"
|
||||
}
|
||||
""")!;
|
||||
|
||||
var rule = NotifySchemaMigration.UpgradeRule(json);
|
||||
|
||||
Assert.Equal(NotifySchemaVersions.Rule, rule.SchemaVersion);
|
||||
Assert.Equal("rule-legacy", rule.RuleId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UpgradeRuleThrowsOnUnknownSchema()
|
||||
{
|
||||
var json = JsonNode.Parse(
|
||||
"""
|
||||
{
|
||||
"schemaVersion": "notify.rule@2",
|
||||
"ruleId": "rule-future",
|
||||
"tenantId": "tenant-1",
|
||||
"name": "future",
|
||||
"enabled": true,
|
||||
"match": { "eventKinds": ["scanner.report.ready"] },
|
||||
"actions": [ { "actionId": "send", "channel": "email:soc", "enabled": true } ],
|
||||
"createdAt": "2025-10-18T00:00:00Z",
|
||||
"updatedAt": "2025-10-18T00:00:00Z"
|
||||
}
|
||||
""")!;
|
||||
|
||||
var exception = Assert.Throws<NotSupportedException>(() => NotifySchemaMigration.UpgradeRule(json));
|
||||
Assert.Contains("notify rule schema version", exception.Message, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UpgradeChannelDefaultsMissingVersion()
|
||||
{
|
||||
var json = JsonNode.Parse(
|
||||
"""
|
||||
{
|
||||
"channelId": "channel-email",
|
||||
"tenantId": "tenant-1",
|
||||
"name": "email:soc",
|
||||
"type": "email",
|
||||
"config": { "secretRef": "ref://notify/channels/email/soc" },
|
||||
"enabled": true,
|
||||
"createdAt": "2025-10-18T00:00:00Z",
|
||||
"updatedAt": "2025-10-18T00:00:00Z"
|
||||
}
|
||||
""")!;
|
||||
|
||||
var channel = NotifySchemaMigration.UpgradeChannel(json);
|
||||
|
||||
Assert.Equal(NotifySchemaVersions.Channel, channel.SchemaVersion);
|
||||
Assert.Equal("channel-email", channel.ChannelId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void UpgradeTemplateDefaultsMissingVersion()
|
||||
{
|
||||
var json = JsonNode.Parse(
|
||||
"""
|
||||
{
|
||||
"templateId": "tmpl-slack-concise",
|
||||
"tenantId": "tenant-1",
|
||||
"channelType": "slack",
|
||||
"key": "concise",
|
||||
"locale": "en-us",
|
||||
"body": "{{summary}}",
|
||||
"renderMode": "markdown",
|
||||
"format": "slack",
|
||||
"createdAt": "2025-10-18T00:00:00Z",
|
||||
"updatedAt": "2025-10-18T00:00:00Z"
|
||||
}
|
||||
""")!;
|
||||
|
||||
var template = NotifySchemaMigration.UpgradeTemplate(json);
|
||||
|
||||
Assert.Equal(NotifySchemaVersions.Template, template.SchemaVersion);
|
||||
Assert.Equal("tmpl-slack-concise", template.TemplateId);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user