Skip to content

Commit 1a8e507

Browse files
committed
[DEVEX-222] Marked old Stream Metadata options as obsolete
1 parent db4fc93 commit 1a8e507

File tree

10 files changed

+92
-60
lines changed

10 files changed

+92
-60
lines changed

src/KurrentDB.Client/Streams/KurrentDBClient.Metadata.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ public Task<IWriteResult> SetStreamMetadataAsync(
6767
string streamName,
6868
StreamState expectedState,
6969
StreamMetadata metadata,
70-
SetStreamMetadata? operationOptions = null,
70+
SetStreamMetadataOptions? operationOptions = null,
7171
CancellationToken cancellationToken = default
7272
) {
73-
operationOptions ??= new SetStreamMetadata();
73+
operationOptions ??= new SetStreamMetadataOptions();
7474
operationOptions.With(Settings.OperationOptions);
7575

7676
return SetStreamMetadataInternal(
@@ -88,7 +88,7 @@ public Task<IWriteResult> SetStreamMetadataAsync(
8888
async Task<IWriteResult> SetStreamMetadataInternal(
8989
StreamMetadata metadata,
9090
AppendReq appendReq,
91-
SetStreamMetadata operationOptions,
91+
SetStreamMetadataOptions operationOptions,
9292
CancellationToken cancellationToken
9393
) {
9494
var channelInfo = await GetChannelInfo(cancellationToken).ConfigureAwait(false);
@@ -117,6 +117,7 @@ public static class KurrentDBClientMetadataObsoleteExtensions {
117117
/// <param name="userCredentials">The optional <see cref="UserCredentials"/> to perform operation with.</param>
118118
/// <param name="cancellationToken">The optional <see cref="System.Threading.CancellationToken"/>.</param>
119119
/// <returns></returns>
120+
[Obsolete("Use method with OperationOptions parameter")]
120121
public static Task<StreamMetadataResult> GetStreamMetadataAsync(
121122
this KurrentDBClient dbClient,
122123
string streamName,
@@ -142,18 +143,19 @@ public static Task<StreamMetadataResult> GetStreamMetadataAsync(
142143
/// <param name="userCredentials">The optional <see cref="UserCredentials"/> to perform operation with.</param>
143144
/// <param name="cancellationToken">The optional <see cref="System.Threading.CancellationToken"/>.</param>
144145
/// <returns></returns>
146+
[Obsolete("Use method with SetStreamMetadataOptions parameter")]
145147
public static Task<IWriteResult> SetStreamMetadataAsync(
146148
this KurrentDBClient dbClient,
147149
string streamName,
148150
StreamState expectedState,
149151
StreamMetadata metadata,
150-
Action<SetStreamMetadata>? configureOperationOptions = null,
152+
Action<SetStreamMetadataOptions>? configureOperationOptions = null,
151153
TimeSpan? deadline = null,
152154
UserCredentials? userCredentials = null,
153155
CancellationToken cancellationToken = default
154156
) {
155157
var operationOptions =
156-
new SetStreamMetadata { Deadline = deadline, UserCredentials = userCredentials };
158+
new SetStreamMetadataOptions { Deadline = deadline, UserCredentials = userCredentials };
157159
configureOperationOptions?.Invoke(operationOptions);
158160

159161
return dbClient.SetStreamMetadataAsync(
@@ -166,5 +168,5 @@ public static Task<IWriteResult> SetStreamMetadataAsync(
166168
}
167169
}
168170

169-
public class SetStreamMetadata : AppendToStreamOptions;
171+
public class SetStreamMetadataOptions : AppendToStreamOptions;
170172
}

test/KurrentDB.Client.Tests/PersistentSubscriptions/SubscribeToAll/Obsolete/SubscribeToAllFilterObsoleteTests.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using KurrentDB.Client.Tests.TestNode;
2-
using KurrentDB.Client;
32

43
namespace KurrentDB.Client.Tests.PersistentSubscriptions;
54

@@ -24,7 +23,7 @@ await Fixture.Streams.SetStreamMetadataAsync(
2423
SystemStreams.AllStream,
2524
StreamState.Any,
2625
new(acl: new(SystemRoles.All)),
27-
userCredentials: TestCredentials.Root
26+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
2827
);
2928

3029
var appearedEvents = new List<EventRecord>();
@@ -86,22 +85,22 @@ await Fixture.Streams.SetStreamMetadataAsync(
8685
SystemStreams.AllStream,
8786
StreamState.Any,
8887
new(acl: new(SystemRoles.All)),
89-
userCredentials: TestCredentials.Root
88+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
9089
);
9190

9291
foreach (var e in eventsToSkip) {
9392
await Fixture.Streams.AppendToStreamAsync(
9493
$"{streamPrefix}_{Guid.NewGuid():n}",
9594
StreamState.NoStream,
96-
new[] { e }
95+
[e]
9796
);
9897
}
9998

10099
foreach (var e in eventsToCapture) {
101100
var result = await Fixture.Streams.AppendToStreamAsync(
102101
$"{streamPrefix}_{Guid.NewGuid():n}",
103102
StreamState.NoStream,
104-
new[] { e }
103+
[e]
105104
);
106105

107106
eventToCaptureResult ??= result;

test/KurrentDB.Client.Tests/PersistentSubscriptions/SubscribeToAll/SubscribeToAllFilterTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ await Fixture.Streams.SetStreamMetadataAsync(
2525
SystemStreams.AllStream,
2626
StreamState.Any,
2727
new(acl: new(SystemRoles.All)),
28-
userCredentials: TestCredentials.Root
28+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
2929
);
3030

3131
var appearedEvents = new List<EventRecord>();
@@ -87,7 +87,7 @@ await Fixture.Streams.SetStreamMetadataAsync(
8787
SystemStreams.AllStream,
8888
StreamState.Any,
8989
new(acl: new(SystemRoles.All)),
90-
userCredentials: TestCredentials.Root
90+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
9191
);
9292

9393
foreach (var e in eventsToSkip) {

test/KurrentDB.Client.Tests/Security/AllStreamWithNoAclSecurityTests.cs

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,35 @@
1-
using KurrentDB.Client;
21
using KurrentDB.Client.Tests.TestNode;
3-
using KurrentDB.Client.Tests;
42

53
namespace KurrentDB.Client.Tests;
64

75
[Trait("Category", "Target:Security")]
8-
public class AllStreamWithNoAclSecurityTests(ITestOutputHelper output, AllStreamWithNoAclSecurityTests.CustomFixture fixture)
6+
public class AllStreamWithNoAclSecurityTests(
7+
ITestOutputHelper output,
8+
AllStreamWithNoAclSecurityTests.CustomFixture fixture
9+
)
910
: KurrentTemporaryTests<AllStreamWithNoAclSecurityTests.CustomFixture>(output, fixture) {
1011
[Fact]
1112
public async Task write_to_all_is_never_allowed() {
1213
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.AppendStream(SecurityFixture.AllStream));
13-
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.AppendStream(SecurityFixture.AllStream, TestCredentials.TestUser1));
14-
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.AppendStream(SecurityFixture.AllStream, TestCredentials.TestAdmin));
14+
await Assert.ThrowsAsync<AccessDeniedException>(
15+
() => Fixture.AppendStream(SecurityFixture.AllStream, TestCredentials.TestUser1)
16+
);
17+
18+
await Assert.ThrowsAsync<AccessDeniedException>(
19+
() => Fixture.AppendStream(SecurityFixture.AllStream, TestCredentials.TestAdmin)
20+
);
1521
}
1622

1723
[Fact]
1824
public async Task delete_of_all_is_never_allowed() {
1925
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.DeleteStream(SecurityFixture.AllStream));
20-
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.DeleteStream(SecurityFixture.AllStream, TestCredentials.TestUser1));
21-
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.DeleteStream(SecurityFixture.AllStream, TestCredentials.TestAdmin));
26+
await Assert.ThrowsAsync<AccessDeniedException>(
27+
() => Fixture.DeleteStream(SecurityFixture.AllStream, TestCredentials.TestUser1)
28+
);
29+
30+
await Assert.ThrowsAsync<AccessDeniedException>(
31+
() => Fixture.DeleteStream(SecurityFixture.AllStream, TestCredentials.TestAdmin)
32+
);
2233
}
2334

2435
[Fact]
@@ -33,7 +44,10 @@ public async Task reading_and_subscribing_is_not_allowed_when_no_credentials_are
3344
public async Task reading_and_subscribing_is_not_allowed_for_usual_user() {
3445
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.ReadAllForward(TestCredentials.TestUser1));
3546
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.ReadAllBackward(TestCredentials.TestUser1));
36-
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.ReadMeta(SecurityFixture.AllStream, TestCredentials.TestUser1));
47+
await Assert.ThrowsAsync<AccessDeniedException>(
48+
() => Fixture.ReadMeta(SecurityFixture.AllStream, TestCredentials.TestUser1)
49+
);
50+
3751
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.SubscribeToAll(TestCredentials.TestUser1));
3852
}
3953

@@ -51,7 +65,9 @@ public async Task meta_write_is_not_allowed_when_no_credentials_are_passed() =>
5165

5266
[Fact]
5367
public async Task meta_write_is_not_allowed_for_usual_user() =>
54-
await Assert.ThrowsAsync<AccessDeniedException>(() => Fixture.WriteMeta(SecurityFixture.AllStream, TestCredentials.TestUser1));
68+
await Assert.ThrowsAsync<AccessDeniedException>(
69+
() => Fixture.WriteMeta(SecurityFixture.AllStream, TestCredentials.TestUser1)
70+
);
5571

5672
[Fact]
5773
public Task meta_write_is_allowed_for_admin_user() =>
@@ -61,7 +77,12 @@ public class CustomFixture : SecurityFixture {
6177
protected override async Task Given() {
6278
await base.Given();
6379

64-
await Streams.SetStreamMetadataAsync(AllStream, StreamState.Any, new(), userCredentials: TestCredentials.Root);
80+
await Streams.SetStreamMetadataAsync(
81+
AllStream,
82+
StreamState.Any,
83+
new(),
84+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
85+
);
6586
}
6687
}
6788
}

test/KurrentDB.Client.Tests/Security/SecurityFixture.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,42 +52,42 @@ await Streams.SetStreamMetadataAsync(
5252
NoAclStream,
5353
StreamState.NoStream,
5454
new(),
55-
userCredentials: TestCredentials.TestAdmin
55+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
5656
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
5757

5858
await Streams.SetStreamMetadataAsync(
5959
ReadStream,
6060
StreamState.NoStream,
6161
new(acl: new(TestCredentials.TestUser1.Username)),
62-
userCredentials: TestCredentials.TestAdmin
62+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
6363
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
6464

6565
await Streams.SetStreamMetadataAsync(
6666
WriteStream,
6767
StreamState.NoStream,
6868
new(acl: new(writeRole: TestCredentials.TestUser1.Username)),
69-
userCredentials: TestCredentials.TestAdmin
69+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
7070
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
7171

7272
await Streams.SetStreamMetadataAsync(
7373
MetaReadStream,
7474
StreamState.NoStream,
7575
new(acl: new(metaReadRole: TestCredentials.TestUser1.Username)),
76-
userCredentials: TestCredentials.TestAdmin
76+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
7777
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
7878

7979
await Streams.SetStreamMetadataAsync(
8080
MetaWriteStream,
8181
StreamState.NoStream,
8282
new(acl: new(metaWriteRole: TestCredentials.TestUser1.Username)),
83-
userCredentials: TestCredentials.TestAdmin
83+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
8484
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
8585

8686
await Streams.SetStreamMetadataAsync(
8787
AllStream,
8888
StreamState.Any,
8989
new(acl: new(TestCredentials.TestUser1.Username)),
90-
userCredentials: TestCredentials.TestAdmin
90+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
9191
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
9292

9393
await Streams.SetStreamMetadataAsync(
@@ -101,7 +101,7 @@ await Streams.SetStreamMetadataAsync(
101101
metaReadRole: TestCredentials.TestUser1.Username
102102
)
103103
),
104-
userCredentials: TestCredentials.TestAdmin
104+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
105105
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
106106

107107
await Streams.SetStreamMetadataAsync(
@@ -115,7 +115,7 @@ await Streams.SetStreamMetadataAsync(
115115
metaReadRole: SystemRoles.Admins
116116
)
117117
),
118-
userCredentials: TestCredentials.TestAdmin
118+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
119119
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
120120

121121
await Streams.SetStreamMetadataAsync(
@@ -129,7 +129,7 @@ await Streams.SetStreamMetadataAsync(
129129
metaReadRole: SystemRoles.All
130130
)
131131
),
132-
userCredentials: TestCredentials.TestAdmin
132+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
133133
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
134134

135135
await Streams.SetStreamMetadataAsync(
@@ -143,7 +143,7 @@ await Streams.SetStreamMetadataAsync(
143143
metaReadRole: SystemRoles.All
144144
)
145145
),
146-
userCredentials: TestCredentials.TestAdmin
146+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
147147
).WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
148148
}
149149

@@ -223,7 +223,7 @@ public Task ReadAllBackward(UserCredentials? userCredentials = null) =>
223223
.WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
224224

225225
public Task<StreamMetadataResult> ReadMeta(string streamId, UserCredentials? userCredentials = null) =>
226-
Streams.GetStreamMetadataAsync(streamId, userCredentials: userCredentials)
226+
Streams.GetStreamMetadataAsync(streamId, new OperationOptions { UserCredentials = userCredentials })
227227
.WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
228228

229229
public Task<IWriteResult> WriteMeta(
@@ -240,7 +240,7 @@ public Task<IWriteResult> WriteMeta(
240240
metaReadRole: role
241241
)
242242
),
243-
userCredentials: userCredentials
243+
new SetStreamMetadataOptions { UserCredentials = userCredentials }
244244
)
245245
.WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
246246

@@ -269,7 +269,7 @@ await Streams.SetStreamMetadataAsync(
269269
streamId,
270270
StreamState.NoStream,
271271
metadataPermanent,
272-
userCredentials: TestCredentials.TestAdmin
272+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.TestAdmin }
273273
)
274274
.WithTimeout(TimeSpan.FromMilliseconds(TimeoutMs));
275275

test/KurrentDB.Client.Tests/Security/StreamSecurityInheritanceTests.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -112,77 +112,77 @@ await Streams.SetStreamMetadataAsync(
112112
"user-no-acl",
113113
StreamState.NoStream,
114114
new(),
115-
userCredentials: TestCredentials.TestAdmin
115+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
116116
);
117117

118118
await Streams.SetStreamMetadataAsync(
119119
"user-w-diff",
120120
StreamState.NoStream,
121121
new(acl: new(writeRole: "user2")),
122-
userCredentials: TestCredentials.TestAdmin
122+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
123123
);
124124

125125
await Streams.SetStreamMetadataAsync(
126126
"user-w-multiple",
127127
StreamState.NoStream,
128128
new(acl: new(writeRoles: new[] { "user1", "user2" })),
129-
userCredentials: TestCredentials.TestAdmin
129+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
130130
);
131131

132132
await Streams.SetStreamMetadataAsync(
133133
"user-w-restricted",
134134
StreamState.NoStream,
135135
new(acl: new(writeRoles: Array.Empty<string>())),
136-
userCredentials: TestCredentials.TestAdmin
136+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
137137
);
138138

139139
await Streams.SetStreamMetadataAsync(
140140
"user-w-all",
141141
StreamState.NoStream,
142142
new(acl: new(writeRole: SystemRoles.All)),
143-
userCredentials: TestCredentials.TestAdmin
143+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
144144
);
145145

146146
await Streams.SetStreamMetadataAsync(
147147
"user-r-restricted",
148148
StreamState.NoStream,
149149
new(acl: new("user1")),
150-
userCredentials: TestCredentials.TestAdmin
150+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
151151
);
152152

153153
await Streams.SetStreamMetadataAsync(
154154
"$sys-no-acl",
155155
StreamState.NoStream,
156156
new(),
157-
userCredentials: TestCredentials.TestAdmin
157+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
158158
);
159159

160160
await Streams.SetStreamMetadataAsync(
161161
"$sys-w-diff",
162162
StreamState.NoStream,
163163
new(acl: new(writeRole: "user2")),
164-
userCredentials: TestCredentials.TestAdmin
164+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
165165
);
166166

167167
await Streams.SetStreamMetadataAsync(
168168
"$sys-w-multiple",
169169
StreamState.NoStream,
170170
new(acl: new(writeRoles: new[] { "user1", "user2" })),
171-
userCredentials: TestCredentials.TestAdmin
171+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
172172
);
173173

174174
await Streams.SetStreamMetadataAsync(
175175
"$sys-w-restricted",
176176
StreamState.NoStream,
177177
new(acl: new(writeRoles: Array.Empty<string>())),
178-
userCredentials: TestCredentials.TestAdmin
178+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
179179
);
180180

181181
await Streams.SetStreamMetadataAsync(
182182
"$sys-w-all",
183183
StreamState.NoStream,
184184
new(acl: new(writeRole: SystemRoles.All)),
185-
userCredentials: TestCredentials.TestAdmin
185+
new SetStreamMetadataOptions { UserCredentials = TestCredentials.Root }
186186
);
187187
}
188188
}

0 commit comments

Comments
 (0)