Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonCropp committed Jun 20, 2024
1 parent ccd5685 commit 1f48dde
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 49 deletions.
14 changes: 6 additions & 8 deletions docs/http-passthrough.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ var configuration = new PassthroughConfiguration(
configuration.AppendClaimsToMessageHeaders();
services.AddSqlHttpPassthrough(configuration);
```
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L27-L39' title='Snippet source file'>snippet source</a> | <a href='#snippet-AppendClaimsToMessageHeaders' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L25-L37' title='Snippet source file'>snippet source</a> | <a href='#snippet-AppendClaimsToMessageHeaders' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

A custom prefix can also be defined.
Expand All @@ -121,13 +121,11 @@ var configuration = new PassthroughConfiguration(
connectionFunc: OpenConnection,
callback: Callback,
dedupCriticalError: exception =>
{
Environment.FailFast("Dedup cleanup failure", exception);
});
Environment.FailFast("Dedup cleanup failure", exception));
configuration.AppendClaimsToMessageHeaders(headerPrefix: "Claim.");
services.AddSqlHttpPassthrough(configuration);
```
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L10-L22' title='Snippet source file'>snippet source</a> | <a href='#snippet-AppendClaimsToMessageHeaders_WithPrefix' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L10-L20' title='Snippet source file'>snippet source</a> | <a href='#snippet-AppendClaimsToMessageHeaders_WithPrefix' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

For unit testing and integration purposes it may be useful to manipulate a raw `Dictionary<string, string>`. This can be done using `ClaimsAppender`.
Expand All @@ -145,7 +143,7 @@ var claims = new List<Claim>
};
ClaimsAppender.Append(claims, headerDictionary, "prefix.");
```
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L44-L54' title='Snippet source file'>snippet source</a> | <a href='#snippet-AppendClaimsToDictionary' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L42-L52' title='Snippet source file'>snippet source</a> | <a href='#snippet-AppendClaimsToDictionary' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

To extract claims:
Expand All @@ -155,7 +153,7 @@ To extract claims:
```cs
var claimsList = ClaimsAppender.Extract(headerDictionary, "prefix.");
```
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L59-L63' title='Snippet source file'>snippet source</a> | <a href='#snippet-ExtractClaimsFromDictionary' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L57-L61' title='Snippet source file'>snippet source</a> | <a href='#snippet-ExtractClaimsFromDictionary' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

It may also be necessary to process claims with no reference to `NServiceBus.SqlServer.HttpPassthrough`. This can be done using the following utility methods. Note that these methods use `JsonConvert` from [Json.NET](https://www.newtonsoft.com/json).
Expand Down Expand Up @@ -195,7 +193,7 @@ public static IEnumerable<Claim> Extract(
}
}
```
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L66-L100' title='Snippet source file'>snippet source</a> | <a href='#snippet-ClaimsRaw' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/SqlServer.Native.Tests/HttpPassthrough/Snippets/AppendClaimsToMessageHeaders.cs#L64-L98' title='Snippet source file'>snippet source</a> | <a href='#snippet-ClaimsRaw' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public async Task Run()
await manager.Drop();
await manager.Create();
var settings = new VerifySettings();
settings.SchemaSettings(includeItem: s => s == "DelayedQueueCreationTests");
settings.SchemaFilter(_ => _.Name == "DelayedQueueCreationTests");
await Verify(connection, settings);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ public static void WithPrefix(IServiceCollection services)
connectionFunc: OpenConnection,
callback: Callback,
dedupCriticalError: exception =>
{
Environment.FailFast("Dedup cleanup failure", exception);
});
Environment.FailFast("Dedup cleanup failure", exception));
configuration.AppendClaimsToMessageHeaders(headerPrefix: "Claim.");
services.AddSqlHttpPassthrough(configuration);

Expand Down
2 changes: 1 addition & 1 deletion src/SqlServer.Native.Tests/MainQ/MainQueueCreationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public async Task Run()
await manager.Drop();
await manager.Create();
await Verify(connection)
.SchemaSettings(includeItem: s => s == "MainQueueCreationTests");
.SchemaFilter(_ => _.Name == "MainQueueCreationTests");
}

[Fact]
Expand Down
72 changes: 36 additions & 36 deletions src/SqlServer.Native.Tests/Subscription/SubscriptionManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,68 +4,68 @@
[Fact]
public async Task Create()
{
var subscriptionManager = new SubscriptionManager("Subscription", SqlConnection);
await subscriptionManager.Drop();
await subscriptionManager.Create();
var manager = new SubscriptionManager("Subscription", SqlConnection);
await manager.Drop();
await manager.Create();
await Verify(SqlConnection)
.SchemaSettings(includeItem: name => name == "Subscription");
.SchemaFilter(_ => _.Name == "Subscription");
}

[Fact]
public async Task Drop()
{
var subscriptionManager = new SubscriptionManager("Subscription", SqlConnection);
await subscriptionManager.Drop();
await subscriptionManager.Create();
await subscriptionManager.Drop();
var manager = new SubscriptionManager("Subscription", SqlConnection);
await manager.Drop();
await manager.Create();
await manager.Drop();
await Verify(SqlConnection)
.SchemaSettings(includeItem: name => name == "Subscription");
.SchemaFilter(_ => _.Name == "Subscription");
}

[Fact]
public async Task Subscribe()
{
var subscriptionManager = new SubscriptionManager("Subscription", SqlConnection);
await subscriptionManager.Drop();
await subscriptionManager.Create();
await subscriptionManager.Subscribe("endpoint1", "address1", "topic1");
await subscriptionManager.Subscribe("endpoint2", "address2", "topic1");
await Verify(subscriptionManager.GetSubscribers("topic1"));
var manager = new SubscriptionManager("Subscription", SqlConnection);
await manager.Drop();
await manager.Create();
await manager.Subscribe("endpoint1", "address1", "topic1");
await manager.Subscribe("endpoint2", "address2", "topic1");
await Verify(manager.GetSubscribers("topic1"));
}

[Fact]
public async Task NoMatchingTopic()
{
var subscriptionManager = new SubscriptionManager("Subscription", SqlConnection);
await subscriptionManager.Drop();
await subscriptionManager.Create();
await subscriptionManager.Subscribe("endpoint1", "address1", "topic1");
await subscriptionManager.Subscribe("endpoint2", "address2", "topic2");
await Verify(subscriptionManager.GetSubscribers("topic3"));
var manager = new SubscriptionManager("Subscription", SqlConnection);
await manager.Drop();
await manager.Create();
await manager.Subscribe("endpoint1", "address1", "topic1");
await manager.Subscribe("endpoint2", "address2", "topic2");
await Verify(manager.GetSubscribers("topic3"));
}

[Fact]
public async Task SingleTopic()
{
var subscriptionManager = new SubscriptionManager("Subscription", SqlConnection);
await subscriptionManager.Drop();
await subscriptionManager.Create();
await subscriptionManager.Subscribe("endpoint1", "address1", "topic1");
await subscriptionManager.Subscribe("endpoint2", "address2", "topic1");
await subscriptionManager.Subscribe("endpoint3", "address3", "topic3");
await Verify(subscriptionManager.GetSubscribers("topic1"));
var manager = new SubscriptionManager("Subscription", SqlConnection);
await manager.Drop();
await manager.Create();
await manager.Subscribe("endpoint1", "address1", "topic1");
await manager.Subscribe("endpoint2", "address2", "topic1");
await manager.Subscribe("endpoint3", "address3", "topic3");
await Verify(manager.GetSubscribers("topic1"));
}

[Fact]
public async Task MultipleTopic()
{
var subscriptionManager = new SubscriptionManager("Subscription", SqlConnection);
await subscriptionManager.Drop();
await subscriptionManager.Create();
await subscriptionManager.Subscribe("endpoint1", "address1", "topic1");
await subscriptionManager.Subscribe("endpoint2", "address2", "topic2");
await subscriptionManager.Subscribe("endpoint3", "address3", "topic3");
await subscriptionManager.Subscribe("endpoint4", "address4", "topic4");
await Verify(subscriptionManager.GetSubscribers("topic1", "topic4"));
var manager = new SubscriptionManager("Subscription", SqlConnection);
await manager.Drop();
await manager.Create();
await manager.Subscribe("endpoint1", "address1", "topic1");
await manager.Subscribe("endpoint2", "address2", "topic2");
await manager.Subscribe("endpoint3", "address3", "topic3");
await manager.Subscribe("endpoint4", "address4", "topic4");
await Verify(manager.GetSubscribers("topic1", "topic4"));
}
}

0 comments on commit 1f48dde

Please sign in to comment.