Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -131,17 +131,19 @@ private async Task<List<WorkflowDefinition>> IncludeConsumersAsync(List<Workflow
private async Task WriteZipResponseAsync(List<WorkflowDefinition> definitions, CancellationToken cancellationToken)
{
var zipStream = new MemoryStream();
var sortedDefinitions = definitions.OrderBy(d => d.DefinitionId).ToList();

#if NET10_0_OR_GREATER
await using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
{
// Create a JSON file for each workflow definition:
foreach (var definition in definitions)
foreach (var definition in sortedDefinitions)
{
var model = await CreateWorkflowModelAsync(definition, cancellationToken);
var binaryJson = await SerializeWorkflowDefinitionAsync(model, cancellationToken);
var fileName = GetFileName(model);
var entry = zipArchive.CreateEntry(fileName, CompressionLevel.Optimal);
entry.LastWriteTime = DateTimeOffset.UnixEpoch;
await using var entryStream = await entry.OpenAsync(cancellationToken);
await entryStream.WriteAsync(binaryJson, cancellationToken);
}
Expand All @@ -150,12 +152,13 @@ private async Task WriteZipResponseAsync(List<WorkflowDefinition> definitions, C
using (var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
{
// Create a JSON file for each workflow definition:
foreach (var definition in definitions)
foreach (var definition in sortedDefinitions)
{
var model = await CreateWorkflowModelAsync(definition, cancellationToken);
var binaryJson = await SerializeWorkflowDefinitionAsync(model, cancellationToken);
var fileName = GetFileName(model);
var entry = zipArchive.CreateEntry(fileName, CompressionLevel.Optimal);
entry.LastWriteTime = DateTimeOffset.UnixEpoch;
await using var entryStream = entry.Open();
await entryStream.WriteAsync(binaryJson, cancellationToken);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,16 @@ public async Task ConsumersEndpoint_LeafWorkflow_ReturnsEmpty()
Assert.NotNull(response);
Assert.Empty(response.ConsumingWorkflowDefinitionIds);
}

[Fact(DisplayName = "Consumers endpoint for unknown workflow returns not found")]
public async Task ConsumersEndpoint_UnknownWorkflow_ReturnsNotFound()
{
var client = WorkflowServer.CreateApiClient<IWorkflowDefinitionsApi>();
const string unknownDefinitionId = "refgraph-unknown-definition";

var exception = await Assert.ThrowsAsync<Refit.ApiException>(async () =>
await client.GetConsumersAsync(unknownDefinitionId));

Assert.Equal(System.Net.HttpStatusCode.NotFound, exception.StatusCode);
}
}