Add channel test providers for Email, Slack, Teams, and Webhook
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				Docs CI / lint-and-preview (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	Docs CI / lint-and-preview (push) Has been cancelled
				
			- Implemented EmailChannelTestProvider to generate email preview payloads. - Implemented SlackChannelTestProvider to create Slack message previews. - Implemented TeamsChannelTestProvider for generating Teams Adaptive Card previews. - Implemented WebhookChannelTestProvider to create webhook payloads. - Added INotifyChannelTestProvider interface for channel-specific preview generation. - Created ChannelTestPreviewContracts for request and response models. - Developed NotifyChannelTestService to handle test send requests and generate previews. - Added rate limit policies for test sends and delivery history. - Implemented unit tests for service registration and binding. - Updated project files to include necessary dependencies and configurations.
This commit is contained in:
		| @@ -0,0 +1,46 @@ | ||||
| { | ||||
|   "items": [ | ||||
|     { | ||||
|       "deliveryId": "delivery-7f3b6c51", | ||||
|       "tenantId": "tenant-acme", | ||||
|       "ruleId": "rule-critical-slack", | ||||
|       "actionId": "slack-secops", | ||||
|       "eventId": "4f6e9c09-01b4-4c2a-8a57-3d06de182d74", | ||||
|       "kind": "scanner.report.ready", | ||||
|       "status": "Sent", | ||||
|       "statusReason": null, | ||||
|       "rendered": { | ||||
|         "channelType": "Slack", | ||||
|         "format": "Slack", | ||||
|         "target": "#sec-alerts", | ||||
|         "title": "Critical findings detected", | ||||
|         "body": "{\"text\":\"Critical findings detected\",\"blocks\":[{\"type\":\"section\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*Critical findings detected*\\n1 new critical finding across 2 images.\"}},{\"type\":\"context\",\"elements\":[{\"type\":\"mrkdwn\",\"text\":\"Preview generated 2025-10-19T16:23:41.889Z · Trace `trace-58c212`\"}]}]}", | ||||
|         "summary": "1 new critical finding across 2 images.", | ||||
|         "textBody": "1 new critical finding across 2 images.\nTrace: trace-58c212", | ||||
|         "locale": "en-us", | ||||
|         "bodyHash": "febf9b2a630d862b07f4390edfbf31f5e8b836529f5232c491f4b3f6dba4a4b2", | ||||
|         "attachments": [] | ||||
|       }, | ||||
|       "attempts": [ | ||||
|         { | ||||
|           "timestamp": "2025-10-19T16:23:42.112Z", | ||||
|           "status": "Succeeded", | ||||
|           "statusCode": 200, | ||||
|           "reason": null | ||||
|         } | ||||
|       ], | ||||
|       "metadata": { | ||||
|         "channelType": "slack", | ||||
|         "target": "#sec-alerts", | ||||
|         "previewProvider": "fallback", | ||||
|         "traceId": "trace-58c212", | ||||
|         "slack.channel": "#sec-alerts" | ||||
|       }, | ||||
|       "createdAt": "2025-10-19T16:23:41.889Z", | ||||
|       "sentAt": "2025-10-19T16:23:42.101Z", | ||||
|       "completedAt": "2025-10-19T16:23:42.112Z" | ||||
|     } | ||||
|   ], | ||||
|   "count": 1, | ||||
|   "continuationToken": "2025-10-19T16:23:41.889Z|tenant-acme:delivery-7f3b6c51" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user