From 344264062f74f5a4e4ba1b41b54d683fa7e77ab6 Mon Sep 17 00:00:00 2001
From: Jamie Taylor <1607732+GaProgMan@users.noreply.github.com>
Date: Mon, 2 Dec 2024 23:15:56 +0000
Subject: [PATCH] Simplification of project layout; Updated all relevant GitHub
actions files (#133)
* Simplification of project layout; Updated all relevant GitHub actions files
* Patch version bump
---
.github/workflows/dotnet.yml | 10 +--
.github/workflows/release.yml | 11 +--
.github/workflows/scorecard.yml | 8 +-
OwaspHeaders.Core.sln | 31 ++++---
.../Controllers/HomeController.cs | 0
.../GlobalUsings.cs | 0
...ealisticContentSecurityPolicyGenerators.cs | 0
.../OwaspHeaders.Core.Example.csproj | 2 +-
.../OwaspHeaders.Core.Example}/Program.cs | 0
.../Properties/launchSettings.json | 0
.../appsettings.Development.json | 0
.../appsettings.json | 0
.../packages.lock.json | 0
src/OwaspHeaders.Core.csproj | 2 +-
.../CacheControlHeaderOptionsTests.cs | 0
.../ContentSecurityPolicyOptionsTests.cs | 0
.../CustomHeaders/CrossOriginOptionsTests.cs | 80 +++++++++----------
.../CustomHeaders/ExpectCtOptionsTests.cs | 0
...ermittedCrossDomainPoliciesOptionsTests.cs | 0
.../ReferrerPolicyOptionsTests.cs | 0
.../CustomHeaders/SecureHeadersTests.cs | 0
.../StrictTransportSecurityOptionsTests.cs | 0
.../CustomHeaders/XContextTypeOptionsTests.cs | 0
.../CustomHeaders/XFrameOptionsTests.cs | 0
.../CustomHeaders/XssProtectionOptionTests.cs | 0
.../OwaspHeaders.Core.Tests}/GlobalUsings.cs | 0
.../HeaderValueGuardClausesStringValues.cs | 0
.../GuardClauses/ObjectGuardClauses.cs | 0
.../HttpContextExtensionsTests/TryAdd.cs | 0
.../HttpContextExtensionsTests/TryRemove.cs | 0
.../OwaspHeaders.Core.Tests.csproj | 2 +-
.../RegressionTests/CspRegressionTests.cs | 0
.../SecureHeadersMiddlewareTests.cs | 0
.../TrimEndTests.cs | 0
.../packages.lock.json | 0
.../OwaspHeaders.Core.Tests}/tests.sln | 44 +++++-----
36 files changed, 101 insertions(+), 89 deletions(-)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/Controllers/HomeController.cs (100%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/GlobalUsings.cs (100%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/Helpers/RealisticContentSecurityPolicyGenerators.cs (100%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/OwaspHeaders.Core.Example.csproj (93%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/Program.cs (100%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/Properties/launchSettings.json (100%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/appsettings.Development.json (100%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/appsettings.json (100%)
rename {OwaspHeaders.Core.Example => example/OwaspHeaders.Core.Example}/packages.lock.json (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/CacheControlHeaderOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/ContentSecurityPolicyOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/CrossOriginOptionsTests.cs (97%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/ExpectCtOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/PermittedCrossDomainPoliciesOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/ReferrerPolicyOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/SecureHeadersTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/StrictTransportSecurityOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/XContextTypeOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/XFrameOptionsTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/CustomHeaders/XssProtectionOptionTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/GlobalUsings.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/GuardClauses/HeaderValueGuardClausesStringValues.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/GuardClauses/ObjectGuardClauses.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/HttpContextExtensionsTests/TryAdd.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/HttpContextExtensionsTests/TryRemove.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/OwaspHeaders.Core.Tests.csproj (95%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/RegressionTests/CspRegressionTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/SecureHeadersMiddlewareExtensionTests/SecureHeadersMiddlewareTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/StringBuilderExtensionsTests/TrimEndTests.cs (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/packages.lock.json (100%)
rename {OwaspHeaders.Core.Tests => tests/OwaspHeaders.Core.Tests}/tests.sln (97%)
diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index 84628a1..4fd51dc 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -4,10 +4,11 @@ on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, reopened]
- paths-ignore:
- - '.github/**'
- - '*.md'
- - 'docs/**'
+ paths:
+ - 'src/**'
+ - 'tests/**'
+ - 'example/**'
+ - '.github/workflows/**'
jobs:
@@ -76,7 +77,6 @@ jobs:
- name: Run all tests
run: dotnet test OwaspHeaders.Core.sln --verbosity minimal --collect:"XPlat Code Coverage" --logger trx --results-directory coverage
- working-directory: ${{env.working-directory}}
- name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1.3.0
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index a9079d5..b2bec01 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -5,10 +5,11 @@ on:
push:
branches:
- main
- paths-ignore:
- - '.github/**'
- - '*.md'
- - 'docs/**'
+ paths:
+ - 'src/**'
+ - 'tests/**'
+ - 'example/**'
+ - '.github/workflows/**'
jobs:
@@ -50,7 +51,7 @@ jobs:
dotnet-version: '9.0.x'
- name: Run all tests
- run: dotnet test OwaspHeaders.Core.Tests/OwaspHeaders.Core.Tests.csproj --verbosity minimal
+ run: dotnet test OwaspHeaders.Core.sln --verbosity minimal
package:
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 8a995a0..9411b18 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -14,10 +14,10 @@ on:
push:
branches:
- main
- paths-ignore:
- - '.github/**'
- - '*.md'
- - 'docs/**'
+ paths:
+ - 'src/**'
+ - 'tests/**'
+ - 'example/**'
permissions: read-all
diff --git a/OwaspHeaders.Core.sln b/OwaspHeaders.Core.sln
index e818e64..a4cb4a3 100644
--- a/OwaspHeaders.Core.sln
+++ b/OwaspHeaders.Core.sln
@@ -4,9 +4,15 @@ VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OwaspHeaders.Core", "src\OwaspHeaders.Core.csproj", "{02A107D0-EDC6-499A-BF33-9F1F3C588065}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OwaspHeaders.Core.Tests", "OwaspHeaders.Core.Tests\OwaspHeaders.Core.Tests.csproj", "{E5626AB0-703E-46F8-92DC-B525D4CEC4E3}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0595EB31-3FE3-4CE1-B354-60EB228A6101}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OwaspHeaders.Core.Example", "OwaspHeaders.Core.Example\OwaspHeaders.Core.Example.csproj", "{8D3C719A-74EE-40D9-B78A-DCD189E88D5E}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{14172BC1-8EB6-4FBC-8D42-729A804BCB84}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OwaspHeaders.Core.Tests", "tests\OwaspHeaders.Core.Tests\OwaspHeaders.Core.Tests.csproj", "{05F6E4B3-759E-4663-90CE-838471A097F6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "example", "example", "{582E653A-7CF6-4F4C-BBB3-F1C5CF4F0D50}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OwaspHeaders.Core.Example", "example\OwaspHeaders.Core.Example\OwaspHeaders.Core.Example.csproj", "{BEB61669-411E-4F6C-915F-FD0889B648F3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,13 +27,18 @@ Global
{02A107D0-EDC6-499A-BF33-9F1F3C588065}.Debug|Any CPU.Build.0 = Debug|Any CPU
{02A107D0-EDC6-499A-BF33-9F1F3C588065}.Release|Any CPU.ActiveCfg = Release|Any CPU
{02A107D0-EDC6-499A-BF33-9F1F3C588065}.Release|Any CPU.Build.0 = Release|Any CPU
- {E5626AB0-703E-46F8-92DC-B525D4CEC4E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E5626AB0-703E-46F8-92DC-B525D4CEC4E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E5626AB0-703E-46F8-92DC-B525D4CEC4E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E5626AB0-703E-46F8-92DC-B525D4CEC4E3}.Release|Any CPU.Build.0 = Release|Any CPU
- {8D3C719A-74EE-40D9-B78A-DCD189E88D5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8D3C719A-74EE-40D9-B78A-DCD189E88D5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8D3C719A-74EE-40D9-B78A-DCD189E88D5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8D3C719A-74EE-40D9-B78A-DCD189E88D5E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {05F6E4B3-759E-4663-90CE-838471A097F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {05F6E4B3-759E-4663-90CE-838471A097F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {05F6E4B3-759E-4663-90CE-838471A097F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {05F6E4B3-759E-4663-90CE-838471A097F6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEB61669-411E-4F6C-915F-FD0889B648F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BEB61669-411E-4F6C-915F-FD0889B648F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEB61669-411E-4F6C-915F-FD0889B648F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BEB61669-411E-4F6C-915F-FD0889B648F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {02A107D0-EDC6-499A-BF33-9F1F3C588065} = {0595EB31-3FE3-4CE1-B354-60EB228A6101}
+ {05F6E4B3-759E-4663-90CE-838471A097F6} = {14172BC1-8EB6-4FBC-8D42-729A804BCB84}
+ {BEB61669-411E-4F6C-915F-FD0889B648F3} = {582E653A-7CF6-4F4C-BBB3-F1C5CF4F0D50}
EndGlobalSection
EndGlobal
diff --git a/OwaspHeaders.Core.Example/Controllers/HomeController.cs b/example/OwaspHeaders.Core.Example/Controllers/HomeController.cs
similarity index 100%
rename from OwaspHeaders.Core.Example/Controllers/HomeController.cs
rename to example/OwaspHeaders.Core.Example/Controllers/HomeController.cs
diff --git a/OwaspHeaders.Core.Example/GlobalUsings.cs b/example/OwaspHeaders.Core.Example/GlobalUsings.cs
similarity index 100%
rename from OwaspHeaders.Core.Example/GlobalUsings.cs
rename to example/OwaspHeaders.Core.Example/GlobalUsings.cs
diff --git a/OwaspHeaders.Core.Example/Helpers/RealisticContentSecurityPolicyGenerators.cs b/example/OwaspHeaders.Core.Example/Helpers/RealisticContentSecurityPolicyGenerators.cs
similarity index 100%
rename from OwaspHeaders.Core.Example/Helpers/RealisticContentSecurityPolicyGenerators.cs
rename to example/OwaspHeaders.Core.Example/Helpers/RealisticContentSecurityPolicyGenerators.cs
diff --git a/OwaspHeaders.Core.Example/OwaspHeaders.Core.Example.csproj b/example/OwaspHeaders.Core.Example/OwaspHeaders.Core.Example.csproj
similarity index 93%
rename from OwaspHeaders.Core.Example/OwaspHeaders.Core.Example.csproj
rename to example/OwaspHeaders.Core.Example/OwaspHeaders.Core.Example.csproj
index 2524cec..025a1bd 100644
--- a/OwaspHeaders.Core.Example/OwaspHeaders.Core.Example.csproj
+++ b/example/OwaspHeaders.Core.Example/OwaspHeaders.Core.Example.csproj
@@ -14,7 +14,7 @@
-
+
diff --git a/OwaspHeaders.Core.Example/Program.cs b/example/OwaspHeaders.Core.Example/Program.cs
similarity index 100%
rename from OwaspHeaders.Core.Example/Program.cs
rename to example/OwaspHeaders.Core.Example/Program.cs
diff --git a/OwaspHeaders.Core.Example/Properties/launchSettings.json b/example/OwaspHeaders.Core.Example/Properties/launchSettings.json
similarity index 100%
rename from OwaspHeaders.Core.Example/Properties/launchSettings.json
rename to example/OwaspHeaders.Core.Example/Properties/launchSettings.json
diff --git a/OwaspHeaders.Core.Example/appsettings.Development.json b/example/OwaspHeaders.Core.Example/appsettings.Development.json
similarity index 100%
rename from OwaspHeaders.Core.Example/appsettings.Development.json
rename to example/OwaspHeaders.Core.Example/appsettings.Development.json
diff --git a/OwaspHeaders.Core.Example/appsettings.json b/example/OwaspHeaders.Core.Example/appsettings.json
similarity index 100%
rename from OwaspHeaders.Core.Example/appsettings.json
rename to example/OwaspHeaders.Core.Example/appsettings.json
diff --git a/OwaspHeaders.Core.Example/packages.lock.json b/example/OwaspHeaders.Core.Example/packages.lock.json
similarity index 100%
rename from OwaspHeaders.Core.Example/packages.lock.json
rename to example/OwaspHeaders.Core.Example/packages.lock.json
diff --git a/src/OwaspHeaders.Core.csproj b/src/OwaspHeaders.Core.csproj
index 77e4d53..d90d720 100644
--- a/src/OwaspHeaders.Core.csproj
+++ b/src/OwaspHeaders.Core.csproj
@@ -8,7 +8,7 @@
OwaspHeaders.Core
- 9.2.1
+ 9.2.2
Jamie Taylor
RJJ Software Ltd
MIT
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/CacheControlHeaderOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/CacheControlHeaderOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/CacheControlHeaderOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/CacheControlHeaderOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/ContentSecurityPolicyOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/ContentSecurityPolicyOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/ContentSecurityPolicyOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/ContentSecurityPolicyOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/CrossOriginOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/CrossOriginOptionsTests.cs
similarity index 97%
rename from OwaspHeaders.Core.Tests/CustomHeaders/CrossOriginOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/CrossOriginOptionsTests.cs
index d4033ac..607635b 100644
--- a/OwaspHeaders.Core.Tests/CustomHeaders/CrossOriginOptionsTests.cs
+++ b/tests/OwaspHeaders.Core.Tests/CustomHeaders/CrossOriginOptionsTests.cs
@@ -1,40 +1,40 @@
-namespace OwaspHeaders.Core.Tests.CustomHeaders
-{
- public class CrossOriginOptionsTests : SecureHeadersTests
- {
- [Fact]
- public async Task When_UseCrossOriginResourcePolicyCalled_Header_Is_Present()
- {
- // arrange
- var headerPresentConfig =
- SecureHeadersMiddlewareBuilder.CreateBuilder()
- .UseCrossOriginResourcePolicy().Build();
- var secureHeadersMiddleware = new SecureHeadersMiddleware(_onNext, headerPresentConfig);
-
- // act
- await secureHeadersMiddleware.InvokeAsync(_context);
-
- // assert
- Assert.True(headerPresentConfig.UseCrossOriginResourcePolicy);
- Assert.True(_context.Response.Headers.ContainsKey(Constants.CrossOriginResourcePolicyHeaderName));
- Assert.Equal(CrossOriginResourcePolicy.SameOriginValue,
- _context.Response.Headers[Constants.CrossOriginResourcePolicyHeaderName]);
- }
-
- [Fact]
- public async Task When_UseCrossOriginResourcePolicyNotCalled_Header_Not_Present()
- {
- // arrange
- var headerNotPresentConfig = SecureHeadersMiddlewareBuilder.CreateBuilder()
- .Build();
- var secureHeadersMiddleware = new SecureHeadersMiddleware(_onNext, headerNotPresentConfig);
-
- // act
- await secureHeadersMiddleware.InvokeAsync(_context);
-
- // assert
- Assert.False(headerNotPresentConfig.UseCrossOriginResourcePolicy);
- Assert.False(_context.Response.Headers.ContainsKey(Constants.CrossOriginResourcePolicyHeaderName));
- }
- }
-}
+namespace OwaspHeaders.Core.Tests.CustomHeaders
+{
+ public class CrossOriginOptionsTests : SecureHeadersTests
+ {
+ [Fact]
+ public async Task When_UseCrossOriginResourcePolicyCalled_Header_Is_Present()
+ {
+ // arrange
+ var headerPresentConfig =
+ SecureHeadersMiddlewareBuilder.CreateBuilder()
+ .UseCrossOriginResourcePolicy().Build();
+ var secureHeadersMiddleware = new SecureHeadersMiddleware(_onNext, headerPresentConfig);
+
+ // act
+ await secureHeadersMiddleware.InvokeAsync(_context);
+
+ // assert
+ Assert.True(headerPresentConfig.UseCrossOriginResourcePolicy);
+ Assert.True(_context.Response.Headers.ContainsKey(Constants.CrossOriginResourcePolicyHeaderName));
+ Assert.Equal(CrossOriginResourcePolicy.SameOriginValue,
+ _context.Response.Headers[Constants.CrossOriginResourcePolicyHeaderName]);
+ }
+
+ [Fact]
+ public async Task When_UseCrossOriginResourcePolicyNotCalled_Header_Not_Present()
+ {
+ // arrange
+ var headerNotPresentConfig = SecureHeadersMiddlewareBuilder.CreateBuilder()
+ .Build();
+ var secureHeadersMiddleware = new SecureHeadersMiddleware(_onNext, headerNotPresentConfig);
+
+ // act
+ await secureHeadersMiddleware.InvokeAsync(_context);
+
+ // assert
+ Assert.False(headerNotPresentConfig.UseCrossOriginResourcePolicy);
+ Assert.False(_context.Response.Headers.ContainsKey(Constants.CrossOriginResourcePolicyHeaderName));
+ }
+ }
+}
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/ExpectCtOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/ExpectCtOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/ExpectCtOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/ExpectCtOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/PermittedCrossDomainPoliciesOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/PermittedCrossDomainPoliciesOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/PermittedCrossDomainPoliciesOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/PermittedCrossDomainPoliciesOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/ReferrerPolicyOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/ReferrerPolicyOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/ReferrerPolicyOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/ReferrerPolicyOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/SecureHeadersTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/SecureHeadersTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/SecureHeadersTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/SecureHeadersTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/StrictTransportSecurityOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/StrictTransportSecurityOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/StrictTransportSecurityOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/StrictTransportSecurityOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/XContextTypeOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/XContextTypeOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/XContextTypeOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/XContextTypeOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/XFrameOptionsTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/XFrameOptionsTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/XFrameOptionsTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/XFrameOptionsTests.cs
diff --git a/OwaspHeaders.Core.Tests/CustomHeaders/XssProtectionOptionTests.cs b/tests/OwaspHeaders.Core.Tests/CustomHeaders/XssProtectionOptionTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/CustomHeaders/XssProtectionOptionTests.cs
rename to tests/OwaspHeaders.Core.Tests/CustomHeaders/XssProtectionOptionTests.cs
diff --git a/OwaspHeaders.Core.Tests/GlobalUsings.cs b/tests/OwaspHeaders.Core.Tests/GlobalUsings.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/GlobalUsings.cs
rename to tests/OwaspHeaders.Core.Tests/GlobalUsings.cs
diff --git a/OwaspHeaders.Core.Tests/GuardClauses/HeaderValueGuardClausesStringValues.cs b/tests/OwaspHeaders.Core.Tests/GuardClauses/HeaderValueGuardClausesStringValues.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/GuardClauses/HeaderValueGuardClausesStringValues.cs
rename to tests/OwaspHeaders.Core.Tests/GuardClauses/HeaderValueGuardClausesStringValues.cs
diff --git a/OwaspHeaders.Core.Tests/GuardClauses/ObjectGuardClauses.cs b/tests/OwaspHeaders.Core.Tests/GuardClauses/ObjectGuardClauses.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/GuardClauses/ObjectGuardClauses.cs
rename to tests/OwaspHeaders.Core.Tests/GuardClauses/ObjectGuardClauses.cs
diff --git a/OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryAdd.cs b/tests/OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryAdd.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryAdd.cs
rename to tests/OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryAdd.cs
diff --git a/OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryRemove.cs b/tests/OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryRemove.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryRemove.cs
rename to tests/OwaspHeaders.Core.Tests/HttpContextExtensionsTests/TryRemove.cs
diff --git a/OwaspHeaders.Core.Tests/OwaspHeaders.Core.Tests.csproj b/tests/OwaspHeaders.Core.Tests/OwaspHeaders.Core.Tests.csproj
similarity index 95%
rename from OwaspHeaders.Core.Tests/OwaspHeaders.Core.Tests.csproj
rename to tests/OwaspHeaders.Core.Tests/OwaspHeaders.Core.Tests.csproj
index 20150f6..646c1a1 100644
--- a/OwaspHeaders.Core.Tests/OwaspHeaders.Core.Tests.csproj
+++ b/tests/OwaspHeaders.Core.Tests/OwaspHeaders.Core.Tests.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/OwaspHeaders.Core.Tests/RegressionTests/CspRegressionTests.cs b/tests/OwaspHeaders.Core.Tests/RegressionTests/CspRegressionTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/RegressionTests/CspRegressionTests.cs
rename to tests/OwaspHeaders.Core.Tests/RegressionTests/CspRegressionTests.cs
diff --git a/OwaspHeaders.Core.Tests/SecureHeadersMiddlewareExtensionTests/SecureHeadersMiddlewareTests.cs b/tests/OwaspHeaders.Core.Tests/SecureHeadersMiddlewareExtensionTests/SecureHeadersMiddlewareTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/SecureHeadersMiddlewareExtensionTests/SecureHeadersMiddlewareTests.cs
rename to tests/OwaspHeaders.Core.Tests/SecureHeadersMiddlewareExtensionTests/SecureHeadersMiddlewareTests.cs
diff --git a/OwaspHeaders.Core.Tests/StringBuilderExtensionsTests/TrimEndTests.cs b/tests/OwaspHeaders.Core.Tests/StringBuilderExtensionsTests/TrimEndTests.cs
similarity index 100%
rename from OwaspHeaders.Core.Tests/StringBuilderExtensionsTests/TrimEndTests.cs
rename to tests/OwaspHeaders.Core.Tests/StringBuilderExtensionsTests/TrimEndTests.cs
diff --git a/OwaspHeaders.Core.Tests/packages.lock.json b/tests/OwaspHeaders.Core.Tests/packages.lock.json
similarity index 100%
rename from OwaspHeaders.Core.Tests/packages.lock.json
rename to tests/OwaspHeaders.Core.Tests/packages.lock.json
diff --git a/OwaspHeaders.Core.Tests/tests.sln b/tests/OwaspHeaders.Core.Tests/tests.sln
similarity index 97%
rename from OwaspHeaders.Core.Tests/tests.sln
rename to tests/OwaspHeaders.Core.Tests/tests.sln
index 3fa4538..2c9fa82 100644
--- a/OwaspHeaders.Core.Tests/tests.sln
+++ b/tests/OwaspHeaders.Core.Tests/tests.sln
@@ -1,22 +1,22 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.0.0
-MinimumVisualStudioVersion = 10.0.0.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tests", "tests.csproj", "{0E8832DB-616D-4BC3-A193-6D1A0C1176E2}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.0.0
+MinimumVisualStudioVersion = 10.0.0.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tests", "tests.csproj", "{0E8832DB-616D-4BC3-A193-6D1A0C1176E2}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0E8832DB-616D-4BC3-A193-6D1A0C1176E2}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal