Skip to content

Commit 477453c

Browse files
authoredMar 23, 2025··
Adds reporters for MinimalPermissionsPlugin (#1076)
1 parent 085e424 commit 477453c

File tree

3 files changed

+85
-10
lines changed

3 files changed

+85
-10
lines changed
 

‎dev-proxy-plugins/MinimalPermissions/GraphRequestInfo.cs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5-
65
using System.Text.Json.Serialization;
76

87
namespace DevProxy.Plugins.MinimalPermissions;

‎dev-proxy-plugins/Reporters/MarkdownReporter.cs

+45-4
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ public class MarkdownReporter(IPluginEvents pluginEvents, IProxyContext context,
2323
{ typeof(ExecutionSummaryPluginReportByUrl), TransformExecutionSummaryByUrl },
2424
{ typeof(ExecutionSummaryPluginReportByMessageType), TransformExecutionSummaryByMessageType },
2525
{ typeof(HttpFileGeneratorPlugin), TransformHttpFileGeneratorReport },
26-
{ typeof(GraphMinimalPermissionsGuidancePluginReport), TransformMinimalPermissionsGuidanceReport },
27-
{ typeof(GraphMinimalPermissionsPluginReport), TransformMinimalPermissionsReport },
26+
{ typeof(GraphMinimalPermissionsGuidancePluginReport), TransformGraphMinimalPermissionsGuidanceReport },
27+
{ typeof(GraphMinimalPermissionsPluginReport), TransformGraphMinimalPermissionsReport },
28+
{ typeof(MinimalPermissionsPluginReport), TransformMinimalPermissionsReport },
2829
{ typeof(OpenApiSpecGeneratorPluginReport), TransformOpenApiSpecGeneratorReport },
2930
{ typeof(UrlDiscoveryPluginReport), TransformUrlDiscoveryReport }
3031
};
@@ -366,7 +367,7 @@ private static void AddExecutionSummaryReportSummary(IEnumerable<RequestLog> req
366367
}
367368
}
368369

369-
private static string? TransformMinimalPermissionsGuidanceReport(object report)
370+
private static string? TransformGraphMinimalPermissionsGuidanceReport(object report)
370371
{
371372
var minimalPermissionsGuidanceReport = (GraphMinimalPermissionsGuidancePluginReport)report;
372373

@@ -433,7 +434,7 @@ void transformPermissionsInfo(GraphMinimalPermissionsInfo permissionsInfo, strin
433434
return sb.ToString();
434435
}
435436

436-
private static string? TransformMinimalPermissionsReport(object report)
437+
private static string? TransformGraphMinimalPermissionsReport(object report)
437438
{
438439
var minimalPermissionsReport = (GraphMinimalPermissionsPluginReport)report;
439440

@@ -536,4 +537,44 @@ void transformPermissionsInfo(GraphMinimalPermissionsInfo permissionsInfo, strin
536537

537538
return sb.ToString();
538539
}
540+
541+
private static string? TransformMinimalPermissionsReport(object report)
542+
{
543+
var minimalPermissionsReport = (MinimalPermissionsPluginReport)report;
544+
545+
var sb = new StringBuilder();
546+
sb.AppendLine($"# Minimal permissions report");
547+
548+
foreach (var apiResult in minimalPermissionsReport.Results)
549+
{
550+
sb.AppendLine();
551+
sb.AppendLine($"## API {apiResult.ApiName}:");
552+
553+
sb.AppendLine("### Requests");
554+
sb.AppendLine();
555+
sb.AppendJoin(Environment.NewLine, apiResult.Requests.Select(r => $"- {r}"));
556+
sb.AppendLine();
557+
558+
sb.AppendLine();
559+
sb.AppendLine("### Minimal permissions");
560+
sb.AppendLine();
561+
sb.AppendJoin(Environment.NewLine, apiResult.MinimalPermissions.Select(p => $"- {p}"));
562+
sb.AppendLine();
563+
}
564+
565+
if (minimalPermissionsReport.Errors.Length != 0)
566+
{
567+
sb.AppendLine();
568+
sb.AppendLine("## 🛑 Errors");
569+
sb.AppendLine();
570+
sb.AppendLine("Couldn't determine minimal permissions for the following URLs:");
571+
sb.AppendLine();
572+
sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.Errors.Select(e => $"- {e}"));
573+
sb.AppendLine();
574+
}
575+
576+
sb.AppendLine();
577+
578+
return sb.ToString();
579+
}
539580
}

‎dev-proxy-plugins/Reporters/PlainTextReporter.cs

+40-5
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ public class PlainTextReporter(IPluginEvents pluginEvents, IProxyContext context
2323
{ typeof(ExecutionSummaryPluginReportByUrl), TransformExecutionSummaryByUrl },
2424
{ typeof(ExecutionSummaryPluginReportByMessageType), TransformExecutionSummaryByMessageType },
2525
{ typeof(HttpFileGeneratorPluginReport), TransformHttpFileGeneratorReport },
26-
{ typeof(GraphMinimalPermissionsGuidancePluginReport), TransformMinimalPermissionsGuidanceReport },
27-
{ typeof(GraphMinimalPermissionsPluginReport), TransformMinimalPermissionsReport },
26+
{ typeof(GraphMinimalPermissionsGuidancePluginReport), TransformGraphMinimalPermissionsGuidanceReport },
27+
{ typeof(GraphMinimalPermissionsPluginReport), TransformGraphMinimalPermissionsReport },
28+
{ typeof(MinimalPermissionsPluginReport), TransformMinimalPermissionsReport },
2829
{ typeof(OpenApiSpecGeneratorPluginReport), TransformOpenApiSpecGeneratorReport },
2930
{ typeof(UrlDiscoveryPluginReport), TransformUrlDiscoveryReport }
3031
};
@@ -269,7 +270,7 @@ private static void AddExecutionSummaryReportSummary(IEnumerable<RequestLog> req
269270

270271
sb.AppendLine("Azure API Center minimal permissions report")
271272
.AppendLine();
272-
273+
273274
sb.AppendLine("APIS")
274275
.AppendLine();
275276

@@ -392,7 +393,7 @@ private static void AddExecutionSummaryReportSummary(IEnumerable<RequestLog> req
392393
return sb.ToString();
393394
}
394395

395-
private static string? TransformMinimalPermissionsReport(object report)
396+
private static string? TransformGraphMinimalPermissionsReport(object report)
396397
{
397398
var minimalPermissionsReport = (GraphMinimalPermissionsPluginReport)report;
398399

@@ -420,7 +421,7 @@ private static void AddExecutionSummaryReportSummary(IEnumerable<RequestLog> req
420421
return sb.ToString();
421422
}
422423

423-
private static string? TransformMinimalPermissionsGuidanceReport(object report)
424+
private static string? TransformGraphMinimalPermissionsGuidanceReport(object report)
424425
{
425426
var minimalPermissionsGuidanceReport = (GraphMinimalPermissionsGuidancePluginReport)report;
426427

@@ -475,4 +476,38 @@ void transformPermissionsInfo(GraphMinimalPermissionsInfo permissionsInfo, strin
475476

476477
return sb.ToString();
477478
}
479+
480+
private static string? TransformMinimalPermissionsReport(object report)
481+
{
482+
var minimalPermissionsReport = (MinimalPermissionsPluginReport)report;
483+
484+
var sb = new StringBuilder();
485+
486+
sb.AppendLine($"Minimal permissions report");
487+
488+
foreach (var apiResult in minimalPermissionsReport.Results)
489+
{
490+
sb.AppendLine();
491+
sb.AppendLine($"API {apiResult.ApiName}:");
492+
sb.AppendLine();
493+
sb.AppendLine("Requests:");
494+
sb.AppendLine();
495+
sb.AppendJoin(Environment.NewLine, apiResult.Requests.Select(r => $"- {r}"));
496+
sb.AppendLine();
497+
sb.AppendLine();
498+
sb.AppendLine("Minimal permissions:");
499+
sb.AppendLine();
500+
sb.AppendJoin(Environment.NewLine, apiResult.MinimalPermissions.Select(p => $"- {p}"));
501+
}
502+
503+
if (minimalPermissionsReport.Errors.Length != 0)
504+
{
505+
sb.AppendLine();
506+
sb.AppendLine("Couldn't determine minimal permissions for the following requests:");
507+
sb.AppendLine();
508+
sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.Errors.Select(e => $"- {e.Request}: {e.Error}"));
509+
}
510+
511+
return sb.ToString();
512+
}
478513
}

0 commit comments

Comments
 (0)
Please sign in to comment.