-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add editor config * Add code to avoid blocked ports and allow overriding the port. * Add code for firefox and chromium to override the blocked ports list. * Add tests to check that firefox and chromium can access a blocked port. Also tests that webkit can't access the port.
- Loading branch information
1 parent
f93ff8c
commit 4280f91
Showing
4 changed files
with
272 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
[*.cs] | ||
|
||
dotnet_diagnostic.CS0169.severity = warning | ||
dotnet_diagnostic.CS0414.severity = warning | ||
|
||
csharp_using_directive_placement = outside_namespace:silent | ||
csharp_prefer_simple_using_statement = true:suggestion | ||
csharp_prefer_braces = true:silent | ||
csharp_style_namespace_declarations = block_scoped:silent | ||
csharp_style_prefer_method_group_conversion = true:silent | ||
csharp_style_prefer_top_level_statements = true:silent | ||
csharp_style_prefer_primary_constructors = true:suggestion | ||
csharp_style_expression_bodied_methods = false:silent | ||
csharp_style_expression_bodied_constructors = false:silent | ||
csharp_style_expression_bodied_operators = false:silent | ||
csharp_style_expression_bodied_properties = true:silent | ||
csharp_style_expression_bodied_indexers = true:silent | ||
csharp_style_expression_bodied_accessors = true:silent | ||
csharp_style_expression_bodied_lambdas = true:silent | ||
csharp_style_expression_bodied_local_functions = false:silent | ||
csharp_style_throw_expression = true:suggestion | ||
csharp_style_prefer_null_check_over_type_check = true:suggestion | ||
csharp_prefer_simple_default_expression = true:suggestion | ||
csharp_style_prefer_local_over_anonymous_function = true:suggestion | ||
csharp_indent_labels = one_less_than_current | ||
csharp_style_prefer_index_operator = true:suggestion | ||
|
||
[*.{cs,vb}] | ||
#### Naming styles #### | ||
|
||
# Naming rules | ||
|
||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion | ||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface | ||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i | ||
|
||
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion | ||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types | ||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case | ||
|
||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion | ||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members | ||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case | ||
|
||
# Symbol specifications | ||
|
||
dotnet_naming_symbols.interface.applicable_kinds = interface | ||
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | ||
dotnet_naming_symbols.interface.required_modifiers = | ||
|
||
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum | ||
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | ||
dotnet_naming_symbols.types.required_modifiers = | ||
|
||
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method | ||
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | ||
dotnet_naming_symbols.non_field_members.required_modifiers = | ||
|
||
# Naming styles | ||
|
||
dotnet_naming_style.begins_with_i.required_prefix = I | ||
dotnet_naming_style.begins_with_i.required_suffix = | ||
dotnet_naming_style.begins_with_i.word_separator = | ||
dotnet_naming_style.begins_with_i.capitalization = pascal_case | ||
|
||
dotnet_naming_style.pascal_case.required_prefix = | ||
dotnet_naming_style.pascal_case.required_suffix = | ||
dotnet_naming_style.pascal_case.word_separator = | ||
dotnet_naming_style.pascal_case.capitalization = pascal_case | ||
|
||
dotnet_naming_style.pascal_case.required_prefix = | ||
dotnet_naming_style.pascal_case.required_suffix = | ||
dotnet_naming_style.pascal_case.word_separator = | ||
dotnet_naming_style.pascal_case.capitalization = pascal_case | ||
dotnet_style_coalesce_expression = true:suggestion | ||
dotnet_style_null_propagation = true:suggestion | ||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion | ||
dotnet_style_prefer_auto_properties = true:silent | ||
dotnet_style_object_initializer = true:suggestion | ||
dotnet_style_collection_initializer = true:suggestion | ||
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion | ||
dotnet_style_prefer_conditional_expression_over_assignment = true:silent | ||
dotnet_style_prefer_conditional_expression_over_return = true:silent | ||
dotnet_style_explicit_tuple_names = true:suggestion | ||
dotnet_style_prefer_inferred_tuple_names = true:suggestion | ||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion | ||
dotnet_style_prefer_compound_assignment = true:suggestion | ||
dotnet_style_prefer_simplified_interpolation = true:suggestion | ||
dotnet_style_namespace_match_folder = true:suggestion | ||
dotnet_style_operator_placement_when_wrapping = beginning_of_line | ||
tab_width = 4 | ||
indent_size = 4 | ||
end_of_line = crlf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
using C3D.Extensions.Playwright.AspNetCore; | ||
using C3D.Extensions.Playwright.AspNetCore.Xunit; | ||
using Microsoft.AspNetCore.Builder; | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Runtime.CompilerServices; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using Xunit.Abstractions; | ||
|
||
namespace Sample.WebApp.Tests; | ||
|
||
public class Port5060Fixture : PlaywrightFixture<Program> | ||
{ | ||
public Port5060Fixture(IMessageSink output) : base(output) { } | ||
|
||
public override int Port => 5060; // Force the application to port 5060. | ||
} | ||
|
||
public class BlockedPortsTests : IClassFixture<Port5060Fixture> | ||
{ | ||
private readonly PlaywrightFixture<Program> webApplication; | ||
private readonly ITestOutputHelper outputHelper; | ||
|
||
public BlockedPortsTests(Port5060Fixture webApplication, ITestOutputHelper outputHelper) | ||
{ | ||
this.webApplication = webApplication; | ||
this.outputHelper = outputHelper; | ||
} | ||
|
||
private void WriteFunctionName([CallerMemberName] string? caller = null) => outputHelper.WriteLine(caller); | ||
|
||
|
||
[Fact] | ||
public async Task ChromiumAllowsBlockedPort() | ||
{ | ||
WriteFunctionName(); | ||
|
||
var page = await webApplication.CreatePlaywrightPageAsync(); | ||
await page.GotoAsync("/"); | ||
|
||
var pageTitle = await page.TitleAsync(); | ||
var uri = page.Url; | ||
var webAppUri = new Uri(webApplication.Uri).ToString(); // Note, this will add the trailing / to the Uri | ||
|
||
await page.CloseAsync(); | ||
|
||
Assert.Equal(webAppUri, uri); // Check browser goes to expected page | ||
Assert.Equal("Home page", pageTitle); // Check browser can read title | ||
} | ||
|
||
|
||
[Fact] | ||
public async Task FireFoxAllowsBlockedPort() | ||
{ | ||
WriteFunctionName(); | ||
|
||
await using var browserPage = await webApplication.CreateCustomPlaywrightBrowserPageAsync(PlaywrightBrowserType.Firefox); | ||
var page = browserPage.Page; // This is for convienence only | ||
await page.GotoAsync("/"); | ||
|
||
var pageTitle = await page.TitleAsync(); | ||
var uri = page.Url; | ||
var webAppUri = new Uri(webApplication.Uri).ToString(); // Note, this will add the trailing / to the Uri | ||
// We don't need to close the page here as the browserPage utility object will do it for us. | ||
|
||
Assert.Equal(webAppUri, uri); // Check browser goes to expected page | ||
Assert.Equal("Home page", pageTitle); // Check browser can read title | ||
} | ||
|
||
[Fact] | ||
public async Task WebkitDoesNotAllowBlockedPort() | ||
{ | ||
WriteFunctionName(); | ||
|
||
await using var browserPage = await webApplication.CreateCustomPlaywrightBrowserPageAsync(PlaywrightBrowserType.Webkit); | ||
var page = browserPage.Page; // This is for convienence only | ||
await page.GotoAsync("/"); | ||
|
||
var pageTitle = await page.TitleAsync(); | ||
var uri = page.Url; | ||
var webAppUri = new Uri(webApplication.Uri).ToString(); // Note, this will add the trailing / to the Uri | ||
// We don't need to close the page here as the browserPage utility object will do it for us. | ||
|
||
Assert.NotEqual(webAppUri, uri); // Check browser *didn't* go to expected page | ||
Assert.NotEqual("Home page", pageTitle); // Check browser *didn't* read title | ||
} | ||
|
||
} |