Skip to content

Commit bb51ca6

Browse files
committed
feat(spicedb): update SpiceDB configuration and container to support gRPC and HTTP ports
1 parent 769a15b commit bb51ca6

File tree

5 files changed

+20
-6
lines changed

5 files changed

+20
-6
lines changed

Directory.Packages.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
<PackageVersion Include="Google.Cloud.Firestore" Version="3.1.0"/>
6262
<PackageVersion Include="Google.Cloud.PubSub.V1" Version="3.5.0"/>
6363
<PackageVersion Include="Google.Cloud.Storage.V1" Version="4.6.0"/>
64+
<PackageVersion Include="Grpc.HealthCheck" Version="2.60.0"/>
65+
<PackageVersion Include="Grpc.Net.Client" Version="2.60.0"/>
6466
<PackageVersion Include="InfluxDB.Client" Version="4.18.0"/>
6567
<PackageVersion Include="JanusGraph.Net" Version="1.0.0"/>
6668
<PackageVersion Include="Keycloak.Net.Core" Version="1.0.20"/>

src/Testcontainers.SpiceDB/SpiceDBBuilder.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ public sealed class SpiceDBBuilder : ContainerBuilder<SpiceDBBuilder, SpiceDBCon
66
{
77
public const string SpiceDBImage = "authzed/spicedb:v1.45.1";
88

9-
public const ushort SpiceDBPort = 50051;
9+
public const ushort SpiceDBgRPCPort = 50051;
10+
11+
public const ushort SpiceDBgHTTPPort = 8443;
12+
1013

1114
/// <summary>
1215
/// Initializes a new instance of the <see cref="SpiceDBBuilder" /> class.
@@ -42,8 +45,10 @@ protected override SpiceDBBuilder Init()
4245
{
4346
return base.Init()
4447
.WithImage(SpiceDBImage)
45-
.WithPortBinding(SpiceDBPort, true)
46-
.WithWaitStrategy(Wait.ForUnixContainer().UntilCommandIsCompleted("SpiceDB-cli", "ping"));
48+
.WithPortBinding(SpiceDBgRPCPort, true)
49+
.WithPortBinding(SpiceDBgHTTPPort, true)
50+
.WithCommand("serve", $"--grpc-preshared-key={DockerResourceConfiguration.GrpcPresharedKey}", $"--datastore-engine={DockerResourceConfiguration.DatastoreEngine}", $"--log-level=info")
51+
.WithWaitStrategy(Wait.ForUnixContainer().UntilMessageIsLogged("grpc server started serving"));
4752
}
4853

4954
/// <inheritdoc />

src/Testcontainers.SpiceDB/SpiceDBConfiguration.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,20 @@ public sealed class SpiceDBConfiguration : ContainerConfiguration
77
/// <summary>
88
/// Initializes a new instance of the <see cref="SpiceDBConfiguration" /> class.
99
/// </summary>
10-
public SpiceDBConfiguration(bool? tslEnabled = false)
10+
public SpiceDBConfiguration(string grpcPresharedKey = "mysecret", string datastoreEngine = "memory", bool? tslEnabled = false)
1111
{
12+
GrpcPresharedKey = grpcPresharedKey;
13+
DatastoreEngine = datastoreEngine;
1214
TslEnabled = tslEnabled.GetValueOrDefault(false);
1315
}
1416

1517
public bool TslEnabled { get; set; }
1618

19+
public string GrpcPresharedKey { get; set; }
20+
21+
public string DatastoreEngine { get; set; }
22+
23+
1724
/// <summary>
1825
/// Initializes a new instance of the <see cref="SpiceDBConfiguration" /> class.
1926
/// </summary>

src/Testcontainers.SpiceDB/SpiceDBContainer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public SpiceDBContainer(SpiceDBConfiguration configuration)
2222
public string GetGrpcConnectionString()
2323
{
2424
var scheme = _configuration.TslEnabled ? Uri.UriSchemeHttps : Uri.UriSchemeHttp;
25-
var endpoint = new UriBuilder(scheme, Hostname, GetMappedPublicPort(SpiceDBBuilder.SpiceDBPort));
25+
var endpoint = new UriBuilder(scheme, Hostname, GetMappedPublicPort(SpiceDBBuilder.SpiceDBgRPCPort));
2626
return endpoint.ToString();
2727
}
2828
}

tests/Testcontainers.SpiceDB.Tests/SpiceDBContainerTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public ValueTask DisposeAsync()
2222
public void ExpectedPortIsMapped()
2323
{
2424
// Given & When
25-
var mappedPort = _spicedbContainer.GetMappedPublicPort(SpiceDBBuilder.SpiceDBPort);
25+
var mappedPort = _spicedbContainer.GetMappedPublicPort(SpiceDBBuilder.SpiceDBgRPCPort);
2626

2727
// Then
2828
Assert.True(mappedPort > 0);

0 commit comments

Comments
 (0)