PowerShell/test/tools/WebListener
Mark Kraus 3b2d169c5e Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622)
Introduce new test module 'WebListener.psm1'.
Now web HTTPS tests can use it to exclude using external sites.

PowerShell/PowerShell#4609

* [Feature] Add Tests for Web Cmdlet Certificate Authentication

PowerShell/PowerShell#4609

* [feature] Add new app to Publish-PSTestTools refactor tests

also add ASP.NET to .spelling

* [feature] spelling fix

* [feature] revert badssl changes

* [feature] Impliment suggestions

* [feature] Spelling, var rename, port 8443 to 8083

rebase fix conflict

* [feature] Rename to HttpsListener and Module-ize

.

* [feature] password protect ClientCert to fix macOS import issue

* [feature] Rename to WebListener 

* Rename HttpsListener to WebListener
* Switch Listener from Razor pages to MVC
* Address PR feedback
* Adjust tests

* [feature] Address PR feedback

* [feature] Replace missing smeicolons

* [feature] Address PR Feedback

* [feature] Cleanup and minor fix

* Enum was not used
* GetStatus() was not accessing the correct property chain
* Added -Test param to make URL generation smoother in test code and to fix double / issues

* [feature] More minor fixes

* Https when it matters.
* Expand property... not exclude..
* Remove superfluous and outdated ToString() override

* [Feature] Move ClientCeret.pfx to WebListener Module

* Move the cert
* Adjust Get-WebListenerClientCertificate 
* Remove cert from csproj
* ActionResult -> JsonResult (was mistakenly left as ActionResult during testing)..

* [Feature] Move ServerCert.pfx to Module

* Move cert
* Upate csproj
* Update module
* Add/Update README.md's

CI Retest.
2017-08-31 13:30:35 +04:00
..
Controllers Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
Models Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
Views Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
appsettings.Development.json Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
appsettings.json Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
Program.cs Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
README.md Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
Startup.cs Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00
WebListener.csproj Add test WebListener module and tests for Web Cmdlet Certificate Authentication (#4622) 2017-08-31 13:30:35 +04:00

WebListener App

ASP.NET Core 2.0 app for testing HTTP and HTTPS Requests. The default page will return a list of available tests.

Run with dotnet

dotnet restore
dotnet publish --output bin --configuration Release
cd bin
dotnet WebListener.dll ServerCert.pfx password 8083 8084

The test site can then be accessed via http://localhost:8083/ or https://localhost:8084/.

The WebListener.dll takes 4 arguments:

  • The path to the Server Certificate
  • The Server Certificate Password
  • The TCP Port to bind on for HTTP
  • The TCP Port to bind on for HTTPS

Run With WebListener Module

Import-Module .\build.psm1
Publish-PSTestTools
$Listener = Start-WebListener -HttpPort 8083 -HttpsPort 8084

Tests

/Cert/

Returns a JSON object containing the details of the Client Certificate if one is provided in the request.

Response when certificate is provided in request:

{
  "Status": "OK",
  "IssuerName": "E=randd@adatum.com, CN=adatum.com, OU=R&D, O=A. Datum Corporation, L=Redmond, S=Washington, C=US",
  "SubjectName": "E=randd@adatum.com, CN=adatum.com, OU=R&D, O=A. Datum Corporation, L=Redmond, S=Washington, C=US",
  "NotAfter": "2044-12-26T12:16:46-06:00",
  "Issuer": "E=randd@adatum.com, CN=adatum.com, OU=R&D, O=A. Datum Corporation, L=Redmond, S=Washington, C=US",
  "Subject": "E=randd@adatum.com, CN=adatum.com, OU=R&D, O=A. Datum Corporation, L=Redmond, S=Washington, C=US",
  "NotBefore": "2017-08-10T13:16:46-05:00",
  "Thumbprint": "2DECF1348FF21B780F45D316A039B5EB4C6312F7"
}

Response when certificate is not provided in request:

{
  "Status": "FAILED"
}