Skip to content

Commit 5605efa

Browse files
authored
Adding public API test coverage (#5159)
1 parent a41bd1b commit 5605efa

File tree

2 files changed

+133
-2
lines changed

2 files changed

+133
-2
lines changed

src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ public static class KafkaBuilderExtensions
2626
/// <returns>A reference to the <see cref="IResourceBuilder{KafkaServerResource}"/>.</returns>
2727
public static IResourceBuilder<KafkaServerResource> AddKafka(this IDistributedApplicationBuilder builder, string name, int? port = null)
2828
{
29+
ArgumentNullException.ThrowIfNull(builder);
30+
ArgumentNullException.ThrowIfNull(name);
31+
2932
var kafka = new KafkaServerResource(name);
3033
return builder.AddResource(kafka)
3134
.WithEndpoint(targetPort: KafkaBrokerPort, port: port, name: KafkaServerResource.PrimaryEndpointName)
@@ -44,6 +47,8 @@ public static IResourceBuilder<KafkaServerResource> AddKafka(this IDistributedAp
4447
/// <returns>A reference to the <see cref="IResourceBuilder{KafkaServerResource}"/>.</returns>
4548
public static IResourceBuilder<KafkaServerResource> WithKafkaUI(this IResourceBuilder<KafkaServerResource> builder, Action<IResourceBuilder<KafkaUIContainerResource>>? configureContainer = null, string? containerName = null)
4649
{
50+
ArgumentNullException.ThrowIfNull(builder);
51+
4752
if (builder.ApplicationBuilder.Resources.OfType<KafkaUIContainerResource>().SingleOrDefault() is { } existingKafkaUIResource)
4853
{
4954
var builderForExistingResource = builder.ApplicationBuilder.CreateResourceBuilder(existingKafkaUIResource);
@@ -77,6 +82,8 @@ public static IResourceBuilder<KafkaServerResource> WithKafkaUI(this IResourceBu
7782
/// <returns>The resource builder for KafkaUI.</returns>
7883
public static IResourceBuilder<KafkaUIContainerResource> WithHostPort(this IResourceBuilder<KafkaUIContainerResource> builder, int? port)
7984
{
85+
ArgumentNullException.ThrowIfNull(builder);
86+
8087
return builder.WithEndpoint("http", endpoint =>
8188
{
8289
endpoint.Port = port;
@@ -91,7 +98,11 @@ public static IResourceBuilder<KafkaUIContainerResource> WithHostPort(this IReso
9198
/// <param name="isReadOnly">A flag that indicates if this is a read-only volume.</param>
9299
/// <returns>The <see cref="IResourceBuilder{T}"/>.</returns>
93100
public static IResourceBuilder<KafkaServerResource> WithDataVolume(this IResourceBuilder<KafkaServerResource> builder, string? name = null, bool isReadOnly = false)
94-
=> builder.WithVolume(name ?? VolumeNameGenerator.CreateVolumeName(builder, "data"), "/var/lib/kafka/data", isReadOnly);
101+
{
102+
ArgumentNullException.ThrowIfNull(builder);
103+
104+
return builder.WithVolume(name ?? VolumeNameGenerator.CreateVolumeName(builder, "data"), "/var/lib/kafka/data", isReadOnly);
105+
}
95106

96107
/// <summary>
97108
/// Adds a bind mount for the data folder to a Kafka container resource.
@@ -101,7 +112,12 @@ public static IResourceBuilder<KafkaServerResource> WithDataVolume(this IResourc
101112
/// <param name="isReadOnly">A flag that indicates if this is a read-only mount.</param>
102113
/// <returns>The <see cref="IResourceBuilder{T}"/>.</returns>
103114
public static IResourceBuilder<KafkaServerResource> WithDataBindMount(this IResourceBuilder<KafkaServerResource> builder, string source, bool isReadOnly = false)
104-
=> builder.WithBindMount(source, "/var/lib/kafka/data", isReadOnly);
115+
{
116+
ArgumentNullException.ThrowIfNull(builder);
117+
ArgumentNullException.ThrowIfNull(source);
118+
119+
return builder.WithBindMount(source, "/var/lib/kafka/data", isReadOnly);
120+
}
105121

106122
private static void ConfigureKafkaContainer(EnvironmentCallbackContext context, KafkaServerResource resource)
107123
{
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using Aspire.Hosting.ApplicationModel;
5+
using Aspire.Hosting.Utils;
6+
using Xunit;
7+
8+
namespace Aspire.Hosting.Kafka.Tests;
9+
10+
public class KafkaPublicApiTests
11+
{
12+
[Fact]
13+
public void AddKafkaContainerShouldThrowWhenBuilderIsNull()
14+
{
15+
IDistributedApplicationBuilder builder = null!;
16+
const string name = "Kafka";
17+
18+
var action = () => builder.AddKafka(name);
19+
20+
var exception = Assert.Throws<ArgumentNullException>(action);
21+
Assert.Equal(nameof(builder), exception.ParamName);
22+
}
23+
24+
[Fact]
25+
public void AddKafkaContainerShouldThrowWhenNameIsNull()
26+
{
27+
var builder = DistributedApplication.CreateBuilder([]);
28+
string name = null!;
29+
30+
var action = () => builder.AddKafka(name);
31+
32+
var exception = Assert.Throws<ArgumentNullException>(action);
33+
Assert.Equal(nameof(name), exception.ParamName);
34+
}
35+
36+
[Fact]
37+
public void WithDataVolumeShouldThrowWhenBuilderIsNull()
38+
{
39+
IResourceBuilder<KafkaServerResource> builder = null!;
40+
41+
var action = () => builder.WithDataVolume();
42+
43+
var exception = Assert.Throws<ArgumentNullException>(action);
44+
Assert.Equal(nameof(builder), exception.ParamName);
45+
}
46+
47+
[Fact]
48+
public void WithDataBindMountShouldThrowWhenBuilderIsNull()
49+
{
50+
IResourceBuilder<KafkaServerResource> builder = null!;
51+
const string source = "/Kafka/data";
52+
53+
var action = () => builder.WithDataBindMount(source);
54+
55+
var exception = Assert.Throws<ArgumentNullException>(action);
56+
Assert.Equal(nameof(builder), exception.ParamName);
57+
}
58+
59+
[Fact]
60+
public void WithDataBindMountShouldThrowWhenSourceIsNull()
61+
{
62+
var builderResource = TestDistributedApplicationBuilder.Create();
63+
var Kafka = builderResource.AddKafka("Kafka");
64+
string source = null!;
65+
66+
var action = () => Kafka.WithDataBindMount(source);
67+
68+
var exception = Assert.Throws<ArgumentNullException>(action);
69+
Assert.Equal(nameof(source), exception.ParamName);
70+
}
71+
72+
[Fact]
73+
public void WithKafkaUIShouldThrowWhenBuilderIsNull()
74+
{
75+
IResourceBuilder<KafkaServerResource> builder = null!;
76+
77+
var action = () => builder.WithKafkaUI();
78+
79+
var exception = Assert.Throws<ArgumentNullException>(action);
80+
Assert.Equal(nameof(builder), exception.ParamName);
81+
}
82+
83+
[Fact]
84+
public void WithHostPortShouldThrowWhenBuilderIsNull()
85+
{
86+
IResourceBuilder<KafkaUIContainerResource> builder = null!;
87+
88+
var action = () => builder.WithHostPort(9936);
89+
90+
var exception = Assert.Throws<ArgumentNullException>(action);
91+
Assert.Equal(nameof(builder), exception.ParamName);
92+
}
93+
94+
[Fact]
95+
public void CtorKafkaServerResourceShouldThrowWhenNameIsNull()
96+
{
97+
string name = null!;
98+
99+
var action = () => new KafkaServerResource(name);
100+
101+
var exception = Assert.Throws<ArgumentNullException>(action);
102+
Assert.Equal(nameof(name), exception.ParamName);
103+
}
104+
105+
[Fact]
106+
public void CtorKafkaUIContainerResourceShouldThrowWhenNameIsNull()
107+
{
108+
string name = null!;
109+
110+
var action = () => new KafkaUIContainerResource(name);
111+
112+
var exception = Assert.Throws<ArgumentNullException>(action);
113+
Assert.Equal(nameof(name), exception.ParamName);
114+
}
115+
}

0 commit comments

Comments
 (0)