Skip to content

Commit bd6876a

Browse files
committed
feat: add null checks
1 parent ff21959 commit bd6876a

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

src/ServiceCollectionExtensions.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Microsoft.Extensions.DependencyInjection;
1+
using System;
2+
using Microsoft.Extensions.DependencyInjection;
23
using Prometheus.Client.Collectors;
34

45
namespace Prometheus.Client.DependencyInjection;
@@ -11,6 +12,9 @@ public static class ServiceCollectionExtensions
1112
/// <param name="services">Service collection</param>
1213
public static IServiceCollection AddMetricFactory(this IServiceCollection services)
1314
{
15+
if (services == null)
16+
throw new ArgumentNullException(nameof(services));
17+
1418
services.AddSingleton<ICollectorRegistry, CollectorRegistry>();
1519
services.AddSingleton<IMetricFactory, MetricFactory>();
1620
return services;
@@ -23,6 +27,11 @@ public static IServiceCollection AddMetricFactory(this IServiceCollection servic
2327
/// <param name="collectorRegistry">Explicit collector registry to use</param>
2428
public static IServiceCollection AddMetricFactory(this IServiceCollection services, ICollectorRegistry collectorRegistry)
2529
{
30+
if (services == null)
31+
throw new ArgumentNullException(nameof(services));
32+
if (collectorRegistry == null)
33+
throw new ArgumentNullException(nameof(collectorRegistry));
34+
2635
services.AddSingleton(collectorRegistry);
2736
services.AddSingleton<IMetricFactory, MetricFactory>();
2837
return services;

tests/ServiceCollectionExtensionsTests.cs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using Microsoft.Extensions.DependencyInjection;
23
using Prometheus.Client.Collectors;
34
using Xunit;
@@ -7,7 +8,7 @@ namespace Prometheus.Client.DependencyInjection.Tests;
78
public class ServiceCollectionExtensionsTests
89
{
910
[Fact]
10-
public void Check_AddMetricFactory()
11+
public void AddMetricFactory_Default()
1112
{
1213
var sp = new ServiceCollection()
1314
.AddMetricFactory()
@@ -18,7 +19,7 @@ public void Check_AddMetricFactory()
1819
}
1920

2021
[Fact]
21-
public void Check_AddMetricFactory_Custom_CollectorRegistry()
22+
public void AddMetricFactory_With_Custom_CollectorRegistry()
2223
{
2324
var collectorRegistry = new CollectorRegistry();
2425

@@ -35,7 +36,7 @@ public void Check_AddMetricFactory_Custom_CollectorRegistry()
3536
}
3637

3738
[Fact]
38-
public void Check_AddMetricFactory_Default_CollectorRegistry()
39+
public void AddMetricFactory_With_Default_CollectorRegistry()
3940
{
4041
var sp = new ServiceCollection()
4142
.AddMetricFactory(Metrics.DefaultCollectorRegistry)
@@ -45,4 +46,23 @@ public void Check_AddMetricFactory_Default_CollectorRegistry()
4546
Assert.NotNull(metricFactory);
4647
Assert.Equal(Metrics.DefaultCollectorRegistry, sp.GetService<ICollectorRegistry>());
4748
}
49+
50+
[Fact]
51+
public void AddMetricFactory_Default_With_Null_ServiceCollection()
52+
{
53+
Assert.Throws<ArgumentNullException>(() => ((ServiceCollection)null).AddMetricFactory());
54+
}
55+
56+
[Fact]
57+
public void AddMetricFactory_With_Null_ServiceCollection()
58+
{
59+
Assert.Throws<ArgumentNullException>(() => ((ServiceCollection)null).AddMetricFactory(Metrics.DefaultCollectorRegistry));
60+
}
61+
62+
[Fact]
63+
public void AddMetricFactory_With_Null_CollectorRegistry()
64+
{
65+
var sc = new ServiceCollection();
66+
Assert.Throws<ArgumentNullException>(() => sc.AddMetricFactory(null));
67+
}
4868
}

0 commit comments

Comments
 (0)