Skip to content

Commit cdb1b41

Browse files
authored
Merge pull request #142 from btcpayserver/fix/editorconfig
Updating editorconfig and cleaning up solution
2 parents e15a02f + 8426332 commit cdb1b41

93 files changed

Lines changed: 2006 additions & 1715 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,20 @@ dotnet_sort_system_directives_first = true
171171
csharp_preserve_single_line_blocks = true
172172
csharp_preserve_single_line_statements = false
173173

174+
# Rider/ReSharper: Force multi-line formatting for simple if statements
175+
resharper_csharp_place_simple_embedded_statement_on_same_line = never
176+
resharper_csharp_keep_existing_embedded_arrangement = false
177+
178+
# Rider/ReSharper: Keep expression-bodied properties on single line
179+
resharper_csharp_place_expr_property_on_single_line = always
180+
resharper_csharp_place_expr_accessor_on_single_line = always
181+
resharper_csharp_keep_existing_expr_member_arrangement = true
182+
183+
# Rider/ReSharper: Keep simple property/accessor declarations on single line
184+
resharper_csharp_place_simple_accessorholder_on_single_line = true
185+
resharper_csharp_place_simple_accessor_on_single_line = true
186+
resharper_csharp_keep_existing_declaration_block_arrangement = false
187+
174188
# Expression-level preferences
175189
dotnet_style_object_initializer = true:suggestion
176190
dotnet_style_collection_initializer = true:suggestion
@@ -182,9 +196,9 @@ dotnet_style_null_propagation = true:suggestion
182196
csharp_style_expression_bodied_methods = false:none
183197
csharp_style_expression_bodied_constructors = false:none
184198
csharp_style_expression_bodied_operators = false:none
185-
csharp_style_expression_bodied_properties = true:none
186-
csharp_style_expression_bodied_indexers = true:none
187-
csharp_style_expression_bodied_accessors = true:none
199+
csharp_style_expression_bodied_properties = true:suggestion
200+
csharp_style_expression_bodied_indexers = true:suggestion
201+
csharp_style_expression_bodied_accessors = true:suggestion
188202

189203
# Property and accessor preferences
190204
csharp_style_auto_properties = true:suggestion
@@ -271,7 +285,13 @@ indent_size = 2
271285
indent_style = space
272286
indent_size = 2
273287

274-
[*.{appxmanifest,asax,ascx,aspx,axaml,blockshader,build,c,c++,c++m,cc,ccm,cginc,compute,cp,cpp,cppm,cs,cshtml,cu,cuh,cxx,cxxm,dtd,fs,fsi,fsscript,fsx,fx,fxh,h,h++,hh,hlsl,hlsli,hlslinc,hp,hpp,hxx,icc,inc,inl,ino,ipp,ixx,master,ml,mli,mpp,mq4,mq5,mqh,mxx,nuspec,paml,razor,resw,resx,shader,shaderFoundry,skin,tcc,tpp,urtshader,usf,ush,uxml,vb,xaml,xamlx,xoml,xsd}]
288+
# Razor/CSHTML files - minimal formatting to avoid breaking Razor directives
289+
[*.cshtml]
275290
indent_style = space
276291
indent_size = 4
277292
tab_width = 4
293+
294+
[*.{appxmanifest,asax,ascx,aspx,axaml,blockshader,build,c,c++,c++m,cc,ccm,cginc,compute,cp,cpp,cppm,cs,cu,cuh,cxx,cxxm,dtd,fs,fsi,fsscript,fsx,fx,fxh,h,h++,hh,hlsl,hlsli,hlslinc,hp,hpp,hxx,icc,inc,inl,ino,ipp,ixx,master,ml,mli,mpp,mq4,mq5,mqh,mxx,nuspec,paml,razor,resw,resx,shader,shaderFoundry,skin,tcc,tpp,urtshader,usf,ush,uxml,vb,xaml,xamlx,xoml,xsd}]
295+
indent_style = space
296+
indent_size = 4
297+
tab_width = 4

PluginBuilder.Tests/AdminTests/AdminPluginDeleteUITests.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Linq;
3+
using System.Text.RegularExpressions;
34
using System.Threading.Tasks;
45
using Dapper;
56
using Microsoft.AspNetCore.Identity;
@@ -26,40 +27,40 @@ public async Task Admin_Can_Delete_Plugin_From_List()
2627
await tester.StartAsync();
2728

2829
var adminEmail = await CreateServerAdminAsync(tester);
29-
var ownerId = await tester.Server.CreateFakeUserAsync(email: "[email protected]", confirmEmail: true, githubVerified: true);
30+
var ownerId = await tester.Server.CreateFakeUserAsync("[email protected]", confirmEmail: true, githubVerified: true);
3031
var slug = $"admin-delete-{Guid.NewGuid():N}".Substring(0, 20);
31-
await tester.Server.CreateAndBuildPluginAsync(ownerId, slug: slug);
32+
await tester.Server.CreateAndBuildPluginAsync(ownerId, slug);
3233

3334
await tester.LogIn(adminEmail);
3435
await tester.GoToUrl("/admin/plugins");
3536

3637
var row = tester.Page!.Locator("tbody tr", new PageLocatorOptions { HasTextString = slug }).First;
3738
await Expect(row).ToBeVisibleAsync();
38-
39+
3940
// Test Edit link navigation
4041
await row.Locator("a:has-text(\"Edit\")").ClickAsync();
41-
await Expect(tester.Page).ToHaveURLAsync(new System.Text.RegularExpressions.Regex($"/admin/plugins/edit/{slug}$", System.Text.RegularExpressions.RegexOptions.IgnoreCase));
42-
42+
await Expect(tester.Page).ToHaveURLAsync(new Regex($"/admin/plugins/edit/{slug}$", RegexOptions.IgnoreCase));
43+
4344
// Verify edit page displays plugin slug and identifier
4445
var pageHeading = tester.Page.Locator("h2");
4546
await Expect(pageHeading).ToContainTextAsync(slug);
4647
var identifierCode = tester.Page.Locator("code");
4748
await Expect(identifierCode.First).ToBeVisibleAsync();
48-
49+
4950
// Navigate back to plugins list
5051
await tester.GoToUrl("/admin/plugins");
51-
52+
5253
// Now test deletion
5354
var deleteRow = tester.Page.Locator("tbody tr", new PageLocatorOptions { HasTextString = slug }).First;
5455
await Expect(deleteRow).ToBeVisibleAsync();
5556
await deleteRow.Locator("a:has-text(\"Delete\")").ClickAsync();
5657

57-
await Expect(tester.Page).ToHaveURLAsync(new System.Text.RegularExpressions.Regex($"/admin/plugins/delete/{slug}$", System.Text.RegularExpressions.RegexOptions.IgnoreCase));
58+
await Expect(tester.Page).ToHaveURLAsync(new Regex($"/admin/plugins/delete/{slug}$", RegexOptions.IgnoreCase));
5859
var slugInput = tester.Page.Locator("input[name='PluginSlug']");
5960
await Expect(slugInput).ToHaveValueAsync(slug);
6061

6162
await tester.Page.ClickAsync("#Delete");
62-
await Expect(tester.Page).ToHaveURLAsync(new System.Text.RegularExpressions.Regex("/admin/plugins", System.Text.RegularExpressions.RegexOptions.IgnoreCase));
63+
await Expect(tester.Page).ToHaveURLAsync(new Regex("/admin/plugins", RegexOptions.IgnoreCase));
6364

6465
var deletedRow = tester.Page.Locator("tbody tr", new PageLocatorOptions { HasTextString = slug });
6566
await Expect(deletedRow).ToHaveCountAsync(0);
@@ -76,9 +77,7 @@ private static async Task<string> CreateServerAdminAsync(PlaywrightTester tester
7677
var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
7778

7879
if (!await roleManager.RoleExistsAsync(Roles.ServerAdmin))
79-
{
8080
await roleManager.CreateAsync(new IdentityRole(Roles.ServerAdmin));
81-
}
8281

8382
var email = $"admin-{Guid.NewGuid():N}@test.com";
8483
const string password = "123456";

PluginBuilder.Tests/AuthTests/LoginUITests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using System.Text.RegularExpressions;
32
using System.Threading.Tasks;
43
using Microsoft.Playwright.Xunit;

PluginBuilder.Tests/PlaywrightTester.cs

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,8 @@ namespace PluginBuilder.Tests;
1818

1919
public class PlaywrightTester : IAsyncDisposable
2020
{
21-
public ServerTester Server { get; set; }
22-
public Uri? ServerUri;
23-
public IBrowser? Browser { get; private set; }
24-
public IPage? Page { get; set; }
25-
XUnitLogger Logger { get; }
2621
private string? CreatedUser;
27-
public string? Password { get; private set; }
28-
public bool IsAdmin { get; private set; }
22+
public Uri? ServerUri;
2923

3024

3125
public PlaywrightTester(XUnitLogger logger, ServerTester? server = null)
@@ -34,6 +28,20 @@ public PlaywrightTester(XUnitLogger logger, ServerTester? server = null)
3428
Server = server ?? new ServerTester("PlaywrightTest", logger);
3529
}
3630

31+
public ServerTester Server { get; set; }
32+
public IBrowser? Browser { get; private set; }
33+
public IPage? Page { get; set; }
34+
private XUnitLogger Logger { get; }
35+
public string? Password { get; private set; }
36+
public bool IsAdmin { get; private set; }
37+
38+
public async ValueTask DisposeAsync()
39+
{
40+
await SafeDispose(async () => await Page?.CloseAsync()!);
41+
await SafeDispose(async () => await Browser?.CloseAsync()!);
42+
await Server.DisposeAsync();
43+
}
44+
3745
public async Task StartAsync()
3846
{
3947
await Server.Start();
@@ -55,16 +63,13 @@ public async Task StartAsync()
5563
await AssertNoError();
5664
}
5765

58-
public async ValueTask DisposeAsync()
59-
{
60-
await SafeDispose(async () => await Page?.CloseAsync()!);
61-
await SafeDispose(async () => await Browser?.CloseAsync()!);
62-
await Server.DisposeAsync();
63-
}
64-
6566
private static async Task SafeDispose(Func<Task> action)
6667
{
67-
try { if (action != null) await action(); }
68+
try
69+
{
70+
if (action != null)
71+
await action();
72+
}
6873
catch { }
6974
}
7075

@@ -81,7 +86,8 @@ public async Task AssertNoError()
8186
for (var i = 0; i < count; i++)
8287
{
8388
var alert = dangerAlerts.Nth(i);
84-
if (!await alert.IsVisibleAsync()) continue;
89+
if (!await alert.IsVisibleAsync())
90+
continue;
8591
var alertText = await alert.InnerTextAsync();
8692
Assert.Fail($"No alert should be displayed, but found this on {Page.Url}: {alertText}");
8793
}
@@ -102,6 +108,7 @@ public async Task GoToLogin()
102108
{
103109
await GoToUrl("/login");
104110
}
111+
105112
public async Task Logout()
106113
{
107114
await GoToUrl("/");
@@ -133,6 +140,7 @@ public async Task<string> RegisterNewUser(bool isAdmin = false)
133140
IsAdmin = isAdmin;
134141
return usr;
135142
}
143+
136144
public async Task LogIn(string user, string password = "123456")
137145
{
138146
await GoToLogin();
@@ -148,7 +156,7 @@ public async Task VerifyUserAccounts(string email, string npub = "nostrNpub")
148156
await using var conn = await factory.Open();
149157
var githubHandle = $"test-eligibility-{email.Replace("@", "_").Replace(".", "_")}";
150158

151-
var settings = new AccountSettings { Nostr = new NostrSettings { Npub = npub, Proof = "nostrProof" }, Github = githubHandle};
159+
var settings = new AccountSettings { Nostr = new NostrSettings { Npub = npub, Proof = "nostrProof" }, Github = githubHandle };
152160
await conn.ExecuteAsync(
153161
"""
154162
UPDATE "AspNetUsers"
@@ -162,7 +170,7 @@ await conn.ExecuteAsync(
162170

163171
public void CreateTestImage(string path)
164172
{
165-
byte[] pngData = new byte[]
173+
var pngData = new byte[]
166174
{
167175
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A,
168176
0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52,
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
5-
<Nullable>enable</Nullable>
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
<Nullable>enable</Nullable>
66

7-
<IsPackable>false</IsPackable>
8-
</PropertyGroup>
7+
<IsPackable>false</IsPackable>
8+
</PropertyGroup>
99

10-
<ItemGroup>
11-
<None Remove="TestData\manifest.txt.asc" />
12-
</ItemGroup>
10+
<ItemGroup>
11+
<None Remove="TestData\manifest.txt.asc"/>
12+
</ItemGroup>
1313

14-
<ItemGroup>
15-
<EmbeddedResource Include="TestData\manifest.txt.asc" />
16-
</ItemGroup>
14+
<ItemGroup>
15+
<EmbeddedResource Include="TestData\manifest.txt.asc"/>
16+
</ItemGroup>
1717

18-
<ItemGroup>
19-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
20-
<PackageReference Include="Microsoft.Playwright.Xunit" Version="1.53.0" />
21-
<PackageReference Include="xunit" Version="2.9.2" />
22-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
23-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
24-
<PrivateAssets>all</PrivateAssets>
25-
</PackageReference>
26-
<PackageReference Include="coverlet.collector" Version="6.0.2">
27-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
28-
<PrivateAssets>all</PrivateAssets>
29-
</PackageReference>
30-
</ItemGroup>
18+
<ItemGroup>
19+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1"/>
20+
<PackageReference Include="Microsoft.Playwright.Xunit" Version="1.53.0"/>
21+
<PackageReference Include="xunit" Version="2.9.2"/>
22+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
23+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
24+
<PrivateAssets>all</PrivateAssets>
25+
</PackageReference>
26+
<PackageReference Include="coverlet.collector" Version="6.0.2">
27+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
28+
<PrivateAssets>all</PrivateAssets>
29+
</PackageReference>
30+
</ItemGroup>
3131

32-
<ItemGroup>
33-
<ProjectReference Include="..\PluginBuilder\PluginBuilder.csproj" />
34-
</ItemGroup>
32+
<ItemGroup>
33+
<ProjectReference Include="..\PluginBuilder\PluginBuilder.csproj"/>
34+
</ItemGroup>
3535

3636
</Project>

PluginBuilder.Tests/PluginTests/AccountUITests.cs

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,32 @@
1212

1313
namespace PluginBuilder.Tests.PluginTests;
1414

15-
1615
[Collection("Playwright Tests")]
1716
public class AccountUITests(ITestOutputHelper output) : PageTest
1817
{
19-
private readonly XUnitLogger _log = new("AccountProfileTests", output);
20-
21-
const string samplePublicKey = """
22-
-----BEGIN PGP PUBLIC KEY BLOCK-----
23-
Comment: User ID: Satoshi <[email protected]>
24-
Comment: Valid from: 10/29/2025 4:44 PM
25-
Comment: Type: 255-bit EdDSA (secret key available)
26-
Comment: Usage: Signing, Encryption, Certifying User IDs
27-
Comment: Fingerprint: 4C6A315E0BEF6D464BD747EFF794D1D2212EFC48
28-
29-
30-
mDMEaQI2aRYJKwYBBAHaRw8BAQdAMsNY2s6u2BvbaSTT9vn6Z70q0XPAg2VIOWX8
31-
4c+Ss6a0JVNhdG9zaGkgPHNhdG9zaGluYWthbW90b0BiaXRjb2luLmNvbT6IkwQT
32-
FgoAOxYhBExqMV4L721GS9dH7/eU0dIhLvxIBQJpAjZpAhsDBQsJCAcCAiICBhUK
33-
CQgLAgQWAgMBAh4HAheAAAoJEPeU0dIhLvxI+18BAJI+dCs3Nd2UDTtd+RQ8krHh
34-
TjKEof4VWoUbU4+rlqBdAP9EgvVQ3HA11ArJ3h4zUpovQ5p4M6Cdbl3YI0tEjlCK
35-
Crg4BGkCNmkSCisGAQQBl1UBBQEBB0ATdbMg0bqmoiIyevarw83/g8ufIF8p5pe4
36-
UpXek1X2GwMBCAeIeAQYFgoAIBYhBExqMV4L721GS9dH7/eU0dIhLvxIBQJpAjZp
37-
AhsMAAoJEPeU0dIhLvxIGOoA/iBfNG2AwSOgXJASgFS7ANTW+6FUCylgfLUoZMaS
38-
xkCbAP9jqn7d655GQCYqLyBBjy33m5Ue9pVMjuUbO1AWm87NAA==
39-
=mUWI
40-
-----END PGP PUBLIC KEY BLOCK-----
41-
""";
18+
private const string samplePublicKey = """
19+
-----BEGIN PGP PUBLIC KEY BLOCK-----
20+
Comment: User ID: Satoshi <[email protected]>
21+
Comment: Valid from: 10/29/2025 4:44 PM
22+
Comment: Type: 255-bit EdDSA (secret key available)
23+
Comment: Usage: Signing, Encryption, Certifying User IDs
24+
Comment: Fingerprint: 4C6A315E0BEF6D464BD747EFF794D1D2212EFC48
25+
26+
27+
mDMEaQI2aRYJKwYBBAHaRw8BAQdAMsNY2s6u2BvbaSTT9vn6Z70q0XPAg2VIOWX8
28+
4c+Ss6a0JVNhdG9zaGkgPHNhdG9zaGluYWthbW90b0BiaXRjb2luLmNvbT6IkwQT
29+
FgoAOxYhBExqMV4L721GS9dH7/eU0dIhLvxIBQJpAjZpAhsDBQsJCAcCAiICBhUK
30+
CQgLAgQWAgMBAh4HAheAAAoJEPeU0dIhLvxI+18BAJI+dCs3Nd2UDTtd+RQ8krHh
31+
TjKEof4VWoUbU4+rlqBdAP9EgvVQ3HA11ArJ3h4zUpovQ5p4M6Cdbl3YI0tEjlCK
32+
Crg4BGkCNmkSCisGAQQBl1UBBQEBB0ATdbMg0bqmoiIyevarw83/g8ufIF8p5pe4
33+
UpXek1X2GwMBCAeIeAQYFgoAIBYhBExqMV4L721GS9dH7/eU0dIhLvxIBQJpAjZp
34+
AhsMAAoJEPeU0dIhLvxIGOoA/iBfNG2AwSOgXJASgFS7ANTW+6FUCylgfLUoZMaS
35+
xkCbAP9jqn7d655GQCYqLyBBjy33m5Ue9pVMjuUbO1AWm87NAA==
36+
=mUWI
37+
-----END PGP PUBLIC KEY BLOCK-----
38+
""";
4239

40+
private readonly XUnitLogger _log = new("AccountProfileTests", output);
4341

4442

4543
[Fact]

PluginBuilder.Tests/PluginTests/BuildUITests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ namespace PluginBuilder.Tests.PluginTests;
1010
[Collection("Playwright Tests")]
1111
public class BuildUITests(ITestOutputHelper output) : PageTest
1212
{
13-
private readonly XUnitLogger _log = new("BuildTests", output);
1413
private const string DirWithoutCsproj = "docs";
14+
private readonly XUnitLogger _log = new("BuildTests", output);
1515

1616
[Fact]
1717
public async Task CreateBuild_And_ValidatesCsproj()

PluginBuilder.Tests/PluginTests/PluginRequestListingUITest.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ public class PluginRequestListingUITest(ITestOutputHelper output) : PageTest
2222
private readonly XUnitLogger _log = new("PluginRequestListingUITest", output);
2323

2424

25-
2625
[Fact]
2726
public async Task RequestListing_Tests()
2827
{
@@ -235,9 +234,7 @@ private static async Task<string> CreateServerAdminAsync(PlaywrightTester tester
235234
var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
236235

237236
if (!await roleManager.RoleExistsAsync(Roles.ServerAdmin))
238-
{
239237
await roleManager.CreateAsync(new IdentityRole(Roles.ServerAdmin));
240-
}
241238

242239
var email = $"admin-{Guid.NewGuid():N}@test.com";
243240
const string password = "123456";
@@ -259,4 +256,3 @@ private static async Task<string> CreateServerAdminAsync(PlaywrightTester tester
259256
return email;
260257
}
261258
}
262-

0 commit comments

Comments
 (0)