From d3e625c98539f851d83431389e87dc2d22d5a139 Mon Sep 17 00:00:00 2001 From: moozzyk Date: Tue, 29 Nov 2016 17:50:22 -0800 Subject: [PATCH] End-to-end browser tests --- .../HubConnection.ts | 2 ++ .../Startup.cs | 3 +- .../project.json | 4 ++- .../wwwroot/connectionTests.html | 3 ++ .../wwwroot/js/common.js | 6 ++++ .../wwwroot/js/connectionTests.js | 31 +++++++++++++++++++ .../wwwroot/js/webSocketTests.js | 6 ++-- 7 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/common.js create mode 100644 test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/connectionTests.js diff --git a/src/Microsoft.AspNetCore.SignalR.Client.TS/HubConnection.ts b/src/Microsoft.AspNetCore.SignalR.Client.TS/HubConnection.ts index ae5f530519..c0b18fca18 100644 --- a/src/Microsoft.AspNetCore.SignalR.Client.TS/HubConnection.ts +++ b/src/Microsoft.AspNetCore.SignalR.Client.TS/HubConnection.ts @@ -12,6 +12,8 @@ interface InvocationResultDescriptor { readonly Result: any; } +export { Connection } from "./Connection" + export class HubConnection { private connection: Connection; private callbacks: Map void>; diff --git a/test/Microsoft.AspNetCore.SignalR.Test.Server/Startup.cs b/test/Microsoft.AspNetCore.SignalR.Test.Server/Startup.cs index cb0473f4de..67a26f6eb0 100644 --- a/test/Microsoft.AspNetCore.SignalR.Test.Server/Startup.cs +++ b/test/Microsoft.AspNetCore.SignalR.Test.Server/Startup.cs @@ -9,7 +9,8 @@ namespace Microsoft.AspNetCore.SignalR.Test.Server { public void ConfigureServices(IServiceCollection services) { - services.AddRouting(); + services.AddSockets(); + services.AddSignalR(); services.AddSingleton(); } diff --git a/test/Microsoft.AspNetCore.SignalR.Test.Server/project.json b/test/Microsoft.AspNetCore.SignalR.Test.Server/project.json index 86f0d6b15a..7126f27c0b 100644 --- a/test/Microsoft.AspNetCore.SignalR.Test.Server/project.json +++ b/test/Microsoft.AspNetCore.SignalR.Test.Server/project.json @@ -39,7 +39,9 @@ }, "scripts": { - "precompile": [ "npm install", "npm run gulp -- --gulpfile %project:Directory%/gulpfile.js copy-jasmine"], + "precompile": [ "npm install", + "npm run gulp -- --gulpfile %project:Directory%/gulpfile.js copy-jasmine", + "npm run gulp -- --gulpfile %project:Directory%/../../src/Microsoft.AspNetCore.SignalR.Client.TS/gulpfile.js bundle-client --bundleOutDir %project:Directory%/wwwroot/lib/signalr-client/" ], "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] } } diff --git a/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/connectionTests.html b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/connectionTests.html index 07460f9508..64c0925f71 100644 --- a/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/connectionTests.html +++ b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/connectionTests.html @@ -8,7 +8,10 @@ + + + diff --git a/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/common.js b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/common.js new file mode 100644 index 0000000000..c7219c1475 --- /dev/null +++ b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/common.js @@ -0,0 +1,6 @@ +const ECHOENDPOINT_URL = `http://${document.location.host}/echo`; + +function eachTransport(action) { + let transportNames = ["webSockets", "serverSentEvents", "longPolling"]; + transportNames.forEach(t => action(t)); +} \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/connectionTests.js b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/connectionTests.js new file mode 100644 index 0000000000..6b9f352a0a --- /dev/null +++ b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/connectionTests.js @@ -0,0 +1,31 @@ + +describe('connection', () => { + eachTransport(transportName => { + it(`over ${transportName} can send and receive messages`, done => { + const message = "Hello World!"; + let connection = new signalR.Connection(ECHOENDPOINT_URL); + + let received = ""; + connection.dataReceived = data => { + received += data; + if (data == message) { + connection.stop(); + } + } + + connection.connectionClosed = error => { + expect(error).toBeUndefined(); + done(); + } + + connection.start(transportName) + .then(() => { + connection.send(message); + }) + .catch(e => { + expect(true).toBe(false); + done(); + }); + }); + }); +}); \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/webSocketTests.js b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/webSocketTests.js index fb4a6ee7cc..8c6abefd84 100644 --- a/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/webSocketTests.js +++ b/test/Microsoft.AspNetCore.SignalR.Test.Server/wwwroot/js/webSocketTests.js @@ -1,10 +1,8 @@ -const ECHOENDPOINT_URL = `ws://${document.location.host}/echo/ws`; - -describe('WebSockets', function () { +describe('WebSockets', function () { it('can be used to connect to SignalR', done => { const message = "message"; - let webSocket = new WebSocket(ECHOENDPOINT_URL); + let webSocket = new WebSocket(ECHOENDPOINT_URL.replace(/^http/, "ws") + '/ws'); webSocket.onopen = () => { webSocket.send(message);