SignalR C++ tests passing and part of build (#7160)

This commit is contained in:
BrennanConroy 2019-02-06 17:23:23 -08:00 committed by GitHub
parent cf9e459da7
commit 744a32a750
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 547 additions and 1150 deletions

View File

@ -54,7 +54,10 @@
<ProjectToExclude Include="
$(RepositoryRoot)src\Tools\dotnet-watch\test\TestProjects\**\*.csproj;
$(RepositoryRoot)src\Razor\Razor.Design\test\testassets\**\*.*proj;
$(RepositoryRoot)src\SignalR\clients\cpp\**\*.*proj;
$(RepositoryRoot)src\submodules\**\*.*proj;
$(RepositoryRoot)src\SignalR\clients\cpp\samples\**\*.*proj;
$(RepositoryRoot)src\SignalR\clients\cpp\test\signalrclient-testhost\**\*.*proj;
$(RepositoryRoot)src\Installers\**\*.*proj;
$(RepositoryRoot)src\SignalR\clients\ts\**\node_modules\**\*.*proj;
$(RepositoryRoot)src\Components\Blazor\Templates\src\content\**\*.*proj;
$(RepositoryRoot)src\ProjectTemplates\Web.ProjectTemplates\content\**\*.csproj;
@ -108,7 +111,7 @@
<ProjectToBuild Include="$(RepositoryRoot)src\Servers\**\*.pkgproj" Condition=" '$(_RunPack)' == 'true' OR '$(BuildAllProjects)' == 'true' "/>
<NativeProjects Condition=" '$(TargetOsName)' == 'win' AND ('$(TargetArchitecture)' == 'x86' OR '$(TargetArchitecture)' == 'x64') "
Include="$(RepositoryRoot)src\Servers\**\*.vcxproj">
Include="$(RepositoryRoot)src\**\*.vcxproj" Exclude="@(ProjectToExclude)">
<!-- Required to prevent triggering double-builds. See src\Servers\IIS\ResolveIisReferences.targets for details. -->
<AdditionalProperties Condition="'$(TargetArchitecture)' == 'x64'">Platform=x64</AdditionalProperties>
<AdditionalProperties Condition="'$(TargetArchitecture)' == 'x86'">Platform=Win32</AdditionalProperties>

View File

@ -12,4 +12,7 @@
<Target Name="Pack" />
<Target Name="Restore" />
<Target Name="ResolveNuGetPackageAssets" />
<Target Name="Test" Condition="'$(IsTestProject)' == 'true'" >
<Exec Command="&quot;$(TargetPath)&quot;" />
</Target>
</Project>

View File

@ -3,6 +3,6 @@
"version": "3.0.100-preview-009750"
},
"msbuild-sdks": {
"Internal.AspNetCore.Sdk": "3.0.0-build-20190130.1"
"Internal.AspNetCore.Sdk": "3.0.0-build-20190205.1"
}
}

View File

@ -1,2 +1,2 @@
version:3.0.0-build-20190130.1
commithash:3b24877488f6bbff779aa3bd66fcffb4a6c04daf
version:3.0.0-build-20190205.1
commithash:d311c7e5300aed235a1f902a53dd9be02e5ac861

View File

@ -25,7 +25,7 @@
<ProjectName>AspNetCore</ProjectName>
<TargetName>aspnetcorev2</TargetName>
<LinkIncremental>false</LinkIncremental>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

View File

@ -23,7 +23,7 @@
<ProjectGuid>{55494E58-E061-4C4C-A0A8-837008E72F85}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>NewCommon</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

View File

@ -20,7 +20,7 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{1eac8125-1765-4e2d-8cbe-56dc98a1c8c1}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
@ -193,5 +193,7 @@
</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<Import Project=".\NativeTests.targets" />
<PropertyGroup>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
</Project>

View File

@ -1,8 +0,0 @@
<Project>
<PropertyGroup>
<VsTestConsole>$(VCIDEInstallDir)..\CommonExtensions\Microsoft\TestWindow\vstest.console.exe</VsTestConsole>
</PropertyGroup>
<Target Name="Test" DependsOnTargets="Build">
<Exec Command="&quot;$(TargetPath)&quot;" />
</Target>
</Project>

View File

@ -23,7 +23,7 @@
<Keyword>Win32Proj</Keyword>
<RootNamespace>IISLib</RootNamespace>
<ProjectName>IISLib</ProjectName>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

View File

@ -24,7 +24,7 @@
<ProjectGuid>{D57EA297-6DC2-4BC0-8C91-334863327863}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>InProcessRequestHandler</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
<ProjectName>InProcessRequestHandler</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

View File

@ -24,7 +24,7 @@
<ProjectGuid>{7F87406C-A3C8-4139-A68D-E4C344294A67}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>OutOfProcessRequestHandler</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
<ProjectName>OutOfProcessRequestHandler</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

View File

@ -23,7 +23,7 @@
<ProjectGuid>{1533E271-F61B-441B-8B74-59FB61DF0552}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>NewCommon</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

View File

@ -27,7 +27,7 @@
<ProjectGuid>{CAC1267B-8778-4257-AAC6-CAF481723B01}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>gtest</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

View File

@ -1,144 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup>
<PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
<PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
</PropertyGroup>
<PropertyGroup>
<PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
<PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
</Target>
<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://dist.nuget.org/win-x86-commandline/latest/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
</Project>

View File

@ -19,7 +19,7 @@
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
<GenerateProjectSpecificOutputFolder>False</GenerateProjectSpecificOutputFolder>

View File

@ -18,7 +18,7 @@
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>
<RestorePackages>true</RestorePackages>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cpprestsdk" version="2.9.1.1" targetFramework="native" />
<package id="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
</packages>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\Build\SignalRClient.Build.Settings" />
<PropertyGroup Label="Globals">
@ -12,7 +12,7 @@
<OutDir>$(OutDir)lib\</OutDir>
<IntDir>$(Configuration)\lib\</IntDir>
<ConfigurationType>StaticLibrary</ConfigurationType>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="..\..\..\..\Build\Config.Definitions.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@ -95,35 +95,14 @@
<ClCompile Include="..\..\web_request_factory.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\signalrclientdll\Build\VS\signalrclientdll.vcxproj">
<Project>{18377ae8-e372-40ce-94fd-7f65008d39a3}</Project>
</ProjectReference>
<PackageReference Include="cpprestsdk" Version="2.9.1.1" />
<PackageReference Include="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
</Target>
</Project>
</Project>

View File

@ -8,8 +8,6 @@ set (SOURCES
http_sender.cpp
hub_connection.cpp
hub_connection_impl.cpp
hub_proxy.cpp
internal_hub_proxy.cpp
logger.cpp
request_sender.cpp
signalr_client_config.cpp

View File

@ -208,7 +208,7 @@ namespace signalr
pplx::create_task([negotiation_response, connect_request_tce, disconnect_cts, weak_connection]()
{
//std::this_thread::sleep_for(std::chrono::milliseconds(negotiation_response.transport_connect_timeout));
// TODO? std::this_thread::sleep_for(std::chrono::milliseconds(negotiation_response.transport_connect_timeout));
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
// if the disconnect_cts is canceled it means that the connection has been stopped or went out of scope in
@ -307,6 +307,7 @@ namespace signalr
}
m_handshakeReceived = true;
connect_request_tce.set();
return;
}
}
@ -328,7 +329,7 @@ namespace signalr
{
if (result.has_field(_XPLATSTR("error")) && result.has_field(_XPLATSTR("result")))
{
//error
// TODO: error
}
invoke_message_received(result);
break;

View File

@ -41,7 +41,7 @@ namespace signalr
{
if (!m_pImpl)
{
throw signalr_exception(_XPLATSTR("invoke() cannot be called on uninitialized hub_proxy instance"));
throw signalr_exception(_XPLATSTR("invoke() cannot be called on uninitialized hub_connection instance"));
}
return m_pImpl->invoke_json(method_name, arguments);
@ -51,7 +51,7 @@ namespace signalr
{
if (!m_pImpl)
{
throw signalr_exception(_XPLATSTR("invoke() cannot be called on uninitialized hub_proxy instance"));
throw signalr_exception(_XPLATSTR("invoke() cannot be called on uninitialized hub_connection instance"));
}
return m_pImpl->invoke_void(method_name, arguments);

View File

@ -103,10 +103,8 @@ namespace signalr
auto type = message.at(_XPLATSTR("type")).as_integer();
if (type == 3)
{
if (invoke_callback(message))
{
return;
}
invoke_callback(message);
return;
}
else if (type == 1)
{

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
</packages>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\Build\SignalRClient.Build.Settings" />
<PropertyGroup Label="Globals">
@ -12,7 +12,7 @@
<OutDir>$(OutDir)dll\</OutDir>
<IntDir>$(Configuration)\dll\</IntDir>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="..\..\..\..\Build\Config.Definitions.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@ -46,7 +46,6 @@
<ClInclude Include="..\..\..\..\include\signalrclient\connection_state.h" />
<ClInclude Include="..\..\..\..\include\signalrclient\hub_connection.h" />
<ClInclude Include="..\..\..\..\include\signalrclient\hub_exception.h" />
<ClInclude Include="..\..\..\..\include\signalrclient\hub_proxy.h" />
<ClInclude Include="..\..\..\..\include\signalrclient\log_writer.h" />
<ClInclude Include="..\..\..\..\include\signalrclient\trace_level.h" />
<ClInclude Include="..\..\..\..\include\signalrclient\transport_type.h" />
@ -58,7 +57,6 @@
<ClInclude Include="..\..\..\signalrclient\default_websocket_client.h" />
<ClInclude Include="..\..\..\signalrclient\http_sender.h" />
<ClInclude Include="..\..\..\signalrclient\hub_connection_impl.h" />
<ClInclude Include="..\..\..\signalrclient\internal_hub_proxy.h" />
<ClInclude Include="..\..\..\signalrclient\callback_manager.h" />
<ClInclude Include="..\..\..\signalrclient\logger.h" />
<ClInclude Include="..\..\..\signalrclient\negotiation_response.h" />
@ -106,19 +104,16 @@
<ResourceCompile Include="..\..\Resource.rc" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<PackageReference Include="cpprestsdk" Version="2.9.1.1" />
<PackageReference Include="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" />
</ImportGroup>
<Target Name="CreateVersionHeader" BeforeTargets="EnsureNuGetPackageBuildImports">
<PropertyGroup>
<Revision>$(build_number)</Revision>
@ -138,17 +133,4 @@
</ItemGroup>
<WriteLinesToFile File="..\..\version.h" Lines="@(VersionHeaderContents)" OverWrite="true" />
</Target>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
</Target>
</Project>
</Project>

View File

@ -33,9 +33,6 @@
<ClInclude Include="..\..\..\signalrclient\hub_connection_impl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\signalrclient\internal_hub_proxy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\signalrclient\logger.h">
<Filter>Header Files</Filter>
</ClInclude>
@ -96,9 +93,6 @@
<ClInclude Include="..\..\..\..\include\signalrclient\hub_connection.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\signalrclient\hub_proxy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\signalrclient\trace_level.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@ -26,7 +26,7 @@
<ProjectGuid>{CAC1267B-8778-4257-AAC6-CAF481723B01}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>gtest</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cpprestsdk" version="2.9.1.1" targetFramework="native" />
<package id="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
</packages>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\Build\SignalRClient.Build.Settings" />
<PropertyGroup Label="Globals">
@ -8,7 +8,7 @@
<ProjectName>signalrclient-e2e-tests</ProjectName>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\..\</SolutionDir>
<ConfigurationType>Application</ConfigurationType>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="..\..\..\..\Build\Config.Definitions.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@ -62,33 +62,17 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<PackageReference Include="cpprestsdk" Version="2.9.1.1" />
<PackageReference Include="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
</Target>
<Target Name="AfterBuild">
<Exec Command="copy /y &quot;$(SolutionDir)bin\Desktop\$(Platform)\$(Configuration)\dll\$(SignalrClientTargetName).dll&quot; &quot;$(SolutionDir)bin\Desktop\$(Platform)\$(Configuration)\$(SignalrClientTargetName).dll&quot;" />
</Target>
</Project>
</Project>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
<package id="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" version="2.9.1" targetFramework="native" />
</packages>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\Build\SignalRClient.Build.Settings" />
<PropertyGroup Label="Globals">
@ -8,7 +8,7 @@
<ProjectName>signalrclienttests</ProjectName>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\..\</SolutionDir>
<ConfigurationType>Application</ConfigurationType>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="..\..\..\..\Build\Config.Definitions.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@ -58,7 +58,6 @@
<ClCompile Include="..\..\http_sender_tests.cpp" />
<ClCompile Include="..\..\hub_connection_impl_tests.cpp" />
<ClCompile Include="..\..\hub_exception_tests.cpp" />
<ClCompile Include="..\..\internal_hub_proxy_tests.cpp" />
<ClCompile Include="..\..\logger_tests.cpp" />
<ClCompile Include="..\..\memory_log_writer.cpp" />
<ClCompile Include="..\..\request_sender_tests.cpp" />
@ -84,33 +83,20 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<PackageReference Include="cpprestsdk" Version="2.9.1.1" />
<PackageReference Include="cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn" Version="2.9.1" />
<PackageReference Include="cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn" Version="2.9.1" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" />
<Import Project="..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphone.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winphonesl.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winxp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.winapp.msvcstl.dyn.rt-dyn.targets'))" />
<Error Condition="!Exists('..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v140.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
</Target>
<Target Name="AfterBuild">
<Exec Command="copy /y &quot;$(SolutionDir)bin\Desktop\$(Platform)\$(Configuration)\dll\$(SignalrClientTargetName).dll&quot; &quot;$(SolutionDir)bin\Desktop\$(Platform)\$(Configuration)\$(SignalrClientTargetName).dll&quot;" />
</Target>
</Project>
<PropertyGroup>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
</Project>

View File

@ -89,9 +89,6 @@
<ClCompile Include="..\..\hub_connection_impl_tests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\internal_hub_proxy_tests.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\callback_manager_tests.cpp">
<Filter>Source Files</Filter>
</ClCompile>

View File

@ -7,7 +7,6 @@ set (SOURCES
http_sender_tests.cpp
hub_connection_impl_tests.cpp
hub_exception_tests.cpp
internal_hub_proxy_tests.cpp
logger_tests.cpp
memory_log_writer.cpp
request_sender_tests.cpp

View File

@ -12,6 +12,7 @@
#include "memory_log_writer.h"
#include "cpprest/ws_client.h"
#include "signalrclient/signalr_exception.h"
#include "signalrclient/web_exception.h"
using namespace signalr;
@ -189,34 +190,34 @@ TEST(connection_impl_start, start_fails_if_transport_connect_throws)
ASSERT_EQ(_XPLATSTR("[error ] transport could not connect due to: connecting failed\n"), entry);
}
TEST(connection_impl_start, start_fails_if_TryWebsockets_false_and_no_fallback_transport)
{
auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri &) -> std::unique_ptr<web_request>
{
utility::string_t response_body(
_XPLATSTR("{\"Url\":\"/signalr\", \"ConnectionToken\" : \"A==\", \"ConnectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"KeepAliveTimeout\" : 20.0, \"DisconnectTimeout\" : 30.0, \"ConnectionTimeout\" : 110.0, \"TryWebSockets\" : false, ")
_XPLATSTR("\"ProtocolVersion\" : \"1.4\", \"TransportConnectTimeout\" : 5.0, \"LongPollDelay\" : 0.0}"));
return std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
});
auto websocket_client = std::make_shared<test_websocket_client>();
auto connection =
connection_impl::create(create_uri(), _XPLATSTR(""), trace_level::errors, std::make_shared<trace_log_writer>(),
std::move(web_request_factory), std::make_unique<test_transport_factory>(websocket_client));
try
{
connection->start().get();
ASSERT_TRUE(false); // exception not thrown
}
catch (const std::exception &e)
{
ASSERT_EQ(_XPLATSTR("websockets not supported on the server and there is no fallback transport"),
utility::conversions::to_string_t(e.what()));
}
}
// TODO
//TEST(connection_impl_start, start_fails_if_no_available_transports)
//{
// auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri &) -> std::unique_ptr<web_request>
// {
// auto response_body =
// _XPLATSTR("{ \"connectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
// _XPLATSTR("\"availableTransports\" : [] }");
//
// return std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
// });
//
// auto websocket_client = std::make_shared<test_websocket_client>();
// auto connection =
// connection_impl::create(create_uri(), _XPLATSTR(""), trace_level::errors, std::make_shared<trace_log_writer>(),
// std::move(web_request_factory), std::make_unique<test_transport_factory>(websocket_client));
//
// try
// {
// connection->start().get();
// ASSERT_TRUE(false); // exception not thrown
// }
// catch (const std::exception &e)
// {
// ASSERT_EQ(_XPLATSTR("websockets not supported on the server and there is no fallback transport"),
// utility::conversions::to_string_t(e.what()));
// }
//}
#if defined(_WIN32) // https://github.com/aspnet/SignalR-Client-Cpp/issues/131
@ -251,20 +252,13 @@ TEST(connection_impl_start, start_fails_if_transport_fails_when_receiving_messag
#endif
TEST(connection_impl_start, start_fails_if_start_request_fails)
TEST(connection_impl_start, start_fails_if_negotiate_request_fails)
{
std::shared_ptr<log_writer> writer(std::make_shared<memory_log_writer>());
auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri& url)
auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri&)
{
auto response_body =
url.path() == _XPLATSTR("/negotiate")
? _XPLATSTR("{\"Url\":\"/signalr\", \"ConnectionToken\" : \"A==\", \"ConnectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"DisconnectTimeout\" : 30.0, \"ConnectionTimeout\" : 110.0, \"TryWebSockets\" : true, ")
_XPLATSTR("\"ProtocolVersion\" : \"1.4\", \"TransportConnectTimeout\" : 5.0, \"LongPollDelay\" : 0.0}")
: _XPLATSTR("{ }");
return std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
return std::unique_ptr<web_request>(new web_request_stub((unsigned short)400, _XPLATSTR("Bad Request")));
});
auto websocket_client = std::make_shared<test_websocket_client>();
@ -282,9 +276,9 @@ TEST(connection_impl_start, start_fails_if_start_request_fails)
connection->start().get();
ASSERT_TRUE(false); // exception not thrown
}
catch (const signalr_exception &e)
catch (const web_exception &e)
{
ASSERT_STREQ("start request failed due to unexpected response from the server: { }", e.what());
ASSERT_STREQ("web exception - 400 Bad Request", e.what());
}
}
@ -296,10 +290,9 @@ TEST(connection_impl_start, start_fails_if_connect_request_times_out)
{
auto response_body =
url.path() == _XPLATSTR("/negotiate")
? _XPLATSTR("{\"Url\":\"/signalr\", \"ConnectionToken\" : \"A==\", \"ConnectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"KeepAliveTimeout\" : 20.0, \"DisconnectTimeout\" : 30.0, \"ConnectionTimeout\" : 110.0, \"TryWebSockets\" : true, ")
_XPLATSTR("\"ProtocolVersion\" : \"1.4\", \"TransportConnectTimeout\" : 0.1, \"LongPollDelay\" : 0.0}")
: _XPLATSTR("{ }");
? _XPLATSTR("{ \"connectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"availableTransports\" : [] }")
: _XPLATSTR("");
return std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
});
@ -325,36 +318,6 @@ TEST(connection_impl_start, start_fails_if_connect_request_times_out)
}
}
TEST(connection_impl_start, start_fails_if_protocol_versions_not_compatible)
{
auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri& url)
{
auto response_body =
url.path() == _XPLATSTR("/negotiate")
? _XPLATSTR("{\"Url\":\"/signalr\", \"ConnectionToken\" : \"A==\", \"ConnectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"KeepAliveTimeout\" : 20.0, \"DisconnectTimeout\" : 30.0, \"ConnectionTimeout\" : 110.0, \"TryWebSockets\" : true, ")
_XPLATSTR("\"ProtocolVersion\" : \"1.2\", \"TransportConnectTimeout\" : 0.1, \"LongPollDelay\" : 0.0}")
: _XPLATSTR("{ }");
return std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
});
auto websocket_client = std::make_shared<test_websocket_client>();
auto connection =
connection_impl::create(create_uri(), _XPLATSTR(""), trace_level::all, std::make_shared<trace_log_writer>(),
std::move(web_request_factory), std::make_unique<test_transport_factory>(websocket_client));
try
{
connection->start().get();
ASSERT_TRUE(false); // exception not thrown
}
catch (const signalr_exception &e)
{
ASSERT_STREQ("incompatible protocol version. client protocol version: 1.4, server protocol version: 1.2", e.what());
}
}
TEST(connection_impl_process_response, process_response_logs_messages)
{
std::shared_ptr<log_writer> writer(std::make_shared<memory_log_writer>());
@ -368,7 +331,7 @@ TEST(connection_impl_process_response, process_response_logs_messages)
ASSERT_FALSE(log_entries.empty());
auto entry = remove_date_from_log_entry(log_entries[0]);
ASSERT_EQ(_XPLATSTR("[message ] processing message: {\"C\":\"x\", \"S\":1, \"M\":[] }\n"), entry);
ASSERT_EQ(_XPLATSTR("[message ] processing message: { }\x1e\n"), entry);
}
TEST(connection_impl_send, message_sent)
@ -416,9 +379,30 @@ TEST(connection_impl_send, exceptions_from_send_logged_and_propagated)
{
std::shared_ptr<log_writer> writer(std::make_shared<memory_log_writer>());
int call_number = -1;
bool hasSentHandshake = false;
auto websocket_client = create_test_websocket_client(
/* receive function */ []() { return pplx::task_from_result(std::string("{ }\x1e")); },
/* send function */ [](const utility::string_t&){ return pplx::task_from_exception<void>(std::runtime_error("error")); });
/* receive function */ [call_number]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{}"
};
call_number = std::min(call_number + 1, 1);
return pplx::task_from_result(responses[call_number]);
},
/* send function */ [&hasSentHandshake](const utility::string_t&)
{
if (hasSentHandshake)
{
return pplx::task_from_exception<void>(std::runtime_error("error"));
}
hasSentHandshake = true;
return pplx::task_from_result();
});
auto connection = create_connection(websocket_client, writer, trace_level::errors);
@ -453,13 +437,12 @@ TEST(connection_impl_set_message_received, callback_invoked_when_message_receive
std::string responses[]
{
"{ }\x1e",
"{ \"C\":\"x\", \"G\":\"gr0\", \"M\":[]}",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"Test\"] }",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"release\"] }",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"Test\"] }\x1e",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"release\"] }\x1e",
"{}"
};
call_number = std::min(call_number + 1, 4);
call_number = std::min(call_number + 1, 3);
return pplx::task_from_result(responses[call_number]);
});
@ -469,13 +452,15 @@ TEST(connection_impl_set_message_received, callback_invoked_when_message_receive
auto message = std::make_shared<utility::string_t>();
auto message_received_event = std::make_shared<event>();
connection->set_message_received_string([message, message_received_event](const utility::string_t &m){
if (m == _XPLATSTR("Test"))
connection->set_message_received_string([message, message_received_event](const utility::string_t &m)
{
auto value = web::json::value::parse(m).at(_XPLATSTR("arguments")).as_array()[0].as_string();
if (value == _XPLATSTR("Test"))
{
*message = m;
*message = value;
}
if (m == _XPLATSTR("release"))
if (value == _XPLATSTR("release"))
{
message_received_event->set();
}
@ -497,8 +482,8 @@ TEST(connection_impl_set_message_received, exception_from_callback_caught_and_lo
std::string responses[]
{
"{ }\x1e",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"throw\"] }",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"release\"] }",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"throw\"] }\x1e",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"release\"] }\x1e",
"{}"
};
@ -511,13 +496,15 @@ TEST(connection_impl_set_message_received, exception_from_callback_caught_and_lo
auto connection = create_connection(websocket_client, writer, trace_level::errors);
auto message_received_event = std::make_shared<event>();
connection->set_message_received_string([message_received_event](const utility::string_t &m){
if (m == _XPLATSTR("throw"))
connection->set_message_received_string([message_received_event](const utility::string_t &m)
{
auto value = web::json::value::parse(m).at(_XPLATSTR("arguments")).as_array()[0].as_string();
if (value == _XPLATSTR("throw"))
{
throw std::runtime_error("oops");
}
if (m == _XPLATSTR("release"))
if (value == _XPLATSTR("release"))
{
message_received_event->set();
}
@ -543,8 +530,8 @@ TEST(connection_impl_set_message_received, non_std_exception_from_callback_caugh
std::string responses[]
{
"{ }\x1e",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"throw\"] }",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"release\"] }",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"throw\"] }\x1e",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"release\"] }\x1e",
"{}"
};
@ -559,12 +546,13 @@ TEST(connection_impl_set_message_received, non_std_exception_from_callback_caugh
auto message_received_event = std::make_shared<event>();
connection->set_message_received_string([message_received_event](const utility::string_t &m)
{
if (m == _XPLATSTR("throw"))
auto value = web::json::value::parse(m).at(_XPLATSTR("arguments")).as_array()[0].as_string();
if (value == _XPLATSTR("throw"))
{
throw 42;
}
if (m == _XPLATSTR("release"))
if (value == _XPLATSTR("release"))
{
message_received_event->set();
}
@ -590,8 +578,8 @@ TEST(connection_impl_set_message_received, error_logged_for_malformed_payload)
std::string responses[]
{
"{ }\x1e",
"{ 42",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"release\"] }",
"{ 42\x1e",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"release\"] }\x1e",
"{}"
};
@ -618,7 +606,7 @@ TEST(connection_impl_set_message_received, error_logged_for_malformed_payload)
ASSERT_FALSE(log_entries.empty());
auto entry = remove_date_from_log_entry(log_entries[0]);
ASSERT_EQ(_XPLATSTR("[error ] error occured when parsing response: * Line 1, Column 4 Syntax error: Malformed object literal. response: { 42\n"), entry);
ASSERT_EQ(_XPLATSTR("[error ] error occured when parsing response: * Line 1, Column 4 Syntax error: Malformed object literal. response: { 42\x1e\n"), entry);
}
TEST(connection_impl_set_message_received, unexpected_responses_logged)
@ -630,8 +618,8 @@ TEST(connection_impl_set_message_received, unexpected_responses_logged)
std::string responses[]
{
"{ }\x1e",
"42",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"release\"] }",
"42\x1e",
"{ \"type\": 1, \"target\": \"something\", \"arguments\" : [\"release\"] }\x1e",
"{}"
};
@ -896,15 +884,14 @@ TEST(connection_impl_stop, stop_cancels_ongoing_start_request)
ASSERT_EQ(_XPLATSTR("[state change] connecting -> disconnected\n"), remove_date_from_log_entry(log_entries[4]));
}
TEST(connection_impl_stop, ongoing_start_request_cancelled_if_connection_stopped_before_init_message_received)
TEST(connection_impl_stop, ongoing_start_request_canceled_if_connection_stopped_before_init_message_received)
{
auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri& url)
{
auto response_body =
url.path() == _XPLATSTR("/negotiate")
? _XPLATSTR("{\"Url\":\"/signalr\", \"ConnectionToken\" : \"A==\", \"ConnectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"DisconnectTimeout\" : 0.5, \"ConnectionTimeout\" : 110.0, \"TryWebSockets\" : true, ")
_XPLATSTR("\"ProtocolVersion\" : \"1.4\", \"TransportConnectTimeout\" : 0.1, \"LongPollDelay\" : 0.0}")
? _XPLATSTR("{ \"connectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"availableTransports\" : [] }")
: _XPLATSTR("");
return std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
@ -942,49 +929,6 @@ TEST(connection_impl_stop, ongoing_start_request_cancelled_if_connection_stopped
ASSERT_EQ(_XPLATSTR("[state change] connecting -> disconnected\n"), remove_date_from_log_entry(log_entries[4]));
}
TEST(connection_impl_stop, stop_ignores_exceptions_from_abort_requests)
{
auto writer = std::shared_ptr<log_writer>{std::make_shared<memory_log_writer>()};
auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri& url)
{
auto response_body =
url.path() == _XPLATSTR("/negotiate")
? _XPLATSTR("{\"Url\":\"/signalr\", \"ConnectionToken\" : \"A==\", \"ConnectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"KeepAliveTimeout\" : 20.0, \"DisconnectTimeout\" : 30.0, \"ConnectionTimeout\" : 110.0, \"TryWebSockets\" : true, ")
_XPLATSTR("\"ProtocolVersion\" : \"1.4\", \"TransportConnectTimeout\" : 5.0, \"LongPollDelay\" : 0.0}")
: url.path() == _XPLATSTR("/start")
? _XPLATSTR("{\"Response\":\"started\" }")
: _XPLATSTR("");
return url.path() == _XPLATSTR("/abort")
? std::unique_ptr<web_request>(new web_request_stub((unsigned short)503, _XPLATSTR("Bad request"), response_body))
: std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
});
auto websocket_client = create_test_websocket_client(
/* receive function */ []() { return pplx::task_from_result(std::string("{ }\x1e")); });
auto connection =
connection_impl::create(create_uri(), _XPLATSTR(""), trace_level::state_changes,
writer, std::move(web_request_factory), std::make_unique<test_transport_factory>(websocket_client));
connection->start()
.then([connection]()
{
return connection->stop();
}).get();
ASSERT_EQ(connection_state::disconnected, connection->get_connection_state());
auto log_entries = std::dynamic_pointer_cast<memory_log_writer>(writer)->get_log_entries();
ASSERT_EQ(4U, log_entries.size());
ASSERT_EQ(_XPLATSTR("[state change] disconnected -> connecting\n"), remove_date_from_log_entry(log_entries[0]));
ASSERT_EQ(_XPLATSTR("[state change] connecting -> connected\n"), remove_date_from_log_entry(log_entries[1]));
ASSERT_EQ(_XPLATSTR("[state change] connected -> disconnecting\n"), remove_date_from_log_entry(log_entries[2]));
ASSERT_EQ(_XPLATSTR("[state change] disconnecting -> disconnected\n"), remove_date_from_log_entry(log_entries[3]));
}
TEST(connection_impl_stop, stop_invokes_disconnected_callback)
{
auto websocket_client = create_test_websocket_client(
@ -1007,8 +951,20 @@ TEST(connection_impl_stop, std_exception_for_disconnected_callback_caught_and_lo
{
auto writer = std::shared_ptr<log_writer>{std::make_shared<memory_log_writer>()};
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ []() { return pplx::task_from_result(std::string("{ \"C\":\"x\", \"S\":1, \"M\":[] }")); });
/* receive function */ [call_number]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{}"
};
call_number = std::min(call_number + 1, 1);
return pplx::task_from_result(responses[call_number]);
});
auto connection = create_connection(websocket_client, writer, trace_level::errors);
connection->set_disconnected([](){ throw std::runtime_error("exception from disconnected"); });
@ -1028,8 +984,20 @@ TEST(connection_impl_stop, exception_for_disconnected_callback_caught_and_logged
{
auto writer = std::shared_ptr<log_writer>{std::make_shared<memory_log_writer>()};
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ []() { return pplx::task_from_result(std::string("{ }\x1e")); });
/* receive function */ [call_number]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{}"
};
call_number = std::min(call_number + 1, 1);
return pplx::task_from_result(responses[call_number]);
});
auto connection = create_connection(websocket_client, writer, trace_level::errors);
connection->set_disconnected([](){ throw 42; });
@ -1045,53 +1013,50 @@ TEST(connection_impl_stop, exception_for_disconnected_callback_caught_and_logged
ASSERT_EQ(_XPLATSTR("[error ] disconnected callback threw an unknown exception\n"), remove_date_from_log_entry(log_entries[0]));
}
//TEST(connection_impl_config, custom_headers_set_in_requests)
//{
// auto writer = std::shared_ptr<log_writer>{std::make_shared<memory_log_writer>()};
//
// auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri& url)
// {
// auto response_body =
// url.path() == _XPLATSTR("/negotiate")
// ? _XPLATSTR("{\"Url\":\"/signalr\", \"ConnectionToken\" : \"A==\", \"ConnectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
// _XPLATSTR("\"KeepAliveTimeout\" : 20.0, \"DisconnectTimeout\" : 30.0, \"ConnectionTimeout\" : 110.0, \"TryWebSockets\" : true, ")
// _XPLATSTR("\"ProtocolVersion\" : \"1.4\", \"TransportConnectTimeout\" : 5.0, \"LongPollDelay\" : 0.0}")
// : url.path() == _XPLATSTR("/start")
// ? _XPLATSTR("{\"Response\":\"started\" }")
// : _XPLATSTR("");
//
// auto request = new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body);
// request->on_get_response = [](web_request_stub& request)
// {
// auto http_headers = request.m_signalr_client_config.get_http_headers();
// ASSERT_EQ(1, http_headers.size());
// ASSERT_EQ(_XPLATSTR("42"), http_headers[_XPLATSTR("Answer")]);
// };
//
// return std::unique_ptr<web_request>(request);
// });
//
// auto websocket_client = create_test_websocket_client(
// /* receive function */ []() { return pplx::task_from_result(std::string("{ \"C\":\"x\", \"S\":1, \"M\":[] }")); });
//
// auto connection =
// connection_impl::create(create_uri(), _XPLATSTR(""), trace_level::state_changes,
// writer, std::move(web_request_factory), std::make_unique<test_transport_factory>(websocket_client));
//
// signalr::signalr_client_config signalr_client_config{};
// auto http_headers = signalr_client_config.get_http_headers();
// http_headers[_XPLATSTR("Answer")] = _XPLATSTR("42");
// signalr_client_config.set_http_headers(http_headers);
// connection->set_client_config(signalr_client_config);
//
// connection->start()
// .then([connection]()
// {
// return connection->stop();
// }).get();
//
// ASSERT_EQ(connection_state::disconnected, connection->get_connection_state());
//}
TEST(connection_impl_config, custom_headers_set_in_requests)
{
auto writer = std::shared_ptr<log_writer>{std::make_shared<memory_log_writer>()};
auto web_request_factory = std::make_unique<test_web_request_factory>([](const web::uri& url)
{
auto response_body =
url.path() == _XPLATSTR("/negotiate")
? _XPLATSTR("{ \"connectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"availableTransports\" : [] }")
: _XPLATSTR("");
auto request = new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body);
request->on_get_response = [](web_request_stub& request)
{
auto http_headers = request.m_signalr_client_config.get_http_headers();
ASSERT_EQ(1U, http_headers.size());
ASSERT_EQ(_XPLATSTR("42"), http_headers[_XPLATSTR("Answer")]);
};
return std::unique_ptr<web_request>(request);
});
auto websocket_client = create_test_websocket_client(
/* receive function */ []() { return pplx::task_from_result(std::string("{ }\x1e")); });
auto connection =
connection_impl::create(create_uri(), _XPLATSTR(""), trace_level::state_changes,
writer, std::move(web_request_factory), std::make_unique<test_transport_factory>(websocket_client));
signalr::signalr_client_config signalr_client_config{};
auto http_headers = signalr_client_config.get_http_headers();
http_headers[_XPLATSTR("Answer")] = _XPLATSTR("42");
signalr_client_config.set_http_headers(http_headers);
connection->set_client_config(signalr_client_config);
connection->start()
.then([connection]()
{
return connection->stop();
}).get();
ASSERT_EQ(connection_state::disconnected, connection->get_connection_state());
}
TEST(connection_impl_set_config, config_can_be_set_only_in_disconnected_state)
{
@ -1204,9 +1169,7 @@ TEST(connection_id, connection_id_reset_when_starting_connection)
url.path() == _XPLATSTR("/negotiate")
? _XPLATSTR("{ \"connectionId\" : \"f7707523-307d-4cba-9abf-3eef701241e8\", ")
_XPLATSTR("\"availableTransports\" : [] }")
: url.path() == _XPLATSTR("/start") || url.path() == _XPLATSTR("/signalr/start")
? _XPLATSTR("{\"Response\":\"started\" }")
: _XPLATSTR("");
: _XPLATSTR("");
return std::unique_ptr<web_request>(new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body));
}

View File

@ -65,28 +65,28 @@ TEST(http_sender_get_response, user_agent_set)
ASSERT_EQ(response_body, http_sender::get(*web_request_factory, _XPLATSTR("url")).get());
}
//TEST(http_sender_get_response, headers_set)
//{
// utility::string_t response_body{ _XPLATSTR("response body") };
//
// auto web_request_factory = std::make_unique<test_web_request_factory>([response_body](const web::uri &) -> std::unique_ptr<web_request>
// {
// auto request = new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body);
// request->on_get_response = [](web_request_stub& request)
// {
// auto http_headers = request.m_signalr_client_config.get_http_headers();
// ASSERT_EQ(1, http_headers.size());
// ASSERT_EQ(_XPLATSTR("123"), http_headers[_XPLATSTR("abc")]);
// };
//
// return std::unique_ptr<web_request>(request);
// });
//
// signalr::signalr_client_config signalr_client_config;
// auto http_headers = signalr_client_config.get_http_headers();
// http_headers[_XPLATSTR("abc")] = _XPLATSTR("123");
// signalr_client_config.set_http_headers(http_headers);
//
// // ensures that web_request.get_response() was invoked
// ASSERT_EQ(response_body, http_sender::get(*web_request_factory, _XPLATSTR("url"), signalr_client_config).get());
//}
TEST(http_sender_get_response, headers_set)
{
utility::string_t response_body{ _XPLATSTR("response body") };
auto web_request_factory = std::make_unique<test_web_request_factory>([response_body](const web::uri &) -> std::unique_ptr<web_request>
{
auto request = new web_request_stub((unsigned short)200, _XPLATSTR("OK"), response_body);
request->on_get_response = [](web_request_stub& request)
{
auto http_headers = request.m_signalr_client_config.get_http_headers();
ASSERT_EQ(1U, http_headers.size());
ASSERT_EQ(_XPLATSTR("123"), http_headers[_XPLATSTR("abc")]);
};
return std::unique_ptr<web_request>(request);
});
signalr::signalr_client_config signalr_client_config;
auto http_headers = signalr_client_config.get_http_headers();
http_headers[_XPLATSTR("abc")] = _XPLATSTR("123");
signalr_client_config.set_http_headers(http_headers);
// ensures that web_request.get_response() was invoked
ASSERT_EQ(response_body, http_sender::get(*web_request_factory, _XPLATSTR("url"), signalr_client_config).get());
}

View File

@ -223,84 +223,6 @@ TEST(hub_invocation, hub_connection_invokes_users_code_on_hub_invocations)
ASSERT_EQ(_XPLATSTR("[\"message\",1]"), *payload);
}
TEST(hub_invocation, hub_connection_discards_persistent_connection_message_primitive_value)
{
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ [call_number]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [\"Test\"] }",
"{ \"C\":\"d- F430FB19\", \"M\" : [{\"H\":\"my_hub\", \"M\":\"broadcast\", \"A\" : [\"signal event\", 1]}] }",
"{}"
};
call_number = std::min(call_number + 1, 2);
return pplx::task_from_result(responses[call_number]);
});
std::shared_ptr<log_writer> writer(std::make_shared<memory_log_writer>());
auto hub_connection = create_hub_connection(websocket_client, writer, trace_level::info);
auto on_broadcast_event = std::make_shared<event>();
hub_connection->on(_XPLATSTR("broadcast"), [on_broadcast_event](const json::value&)
{
on_broadcast_event->set();
});
hub_connection->start().get();
ASSERT_FALSE(on_broadcast_event->wait(5000));
auto memory_writer = std::dynamic_pointer_cast<memory_log_writer>(writer);
auto log_entries = memory_writer->get_log_entries();
ASSERT_TRUE(log_entries.size() >= 1);
ASSERT_EQ(_XPLATSTR("[info ] non-hub message received and will be discarded. message: \"Test\"\n"),
remove_date_from_log_entry(log_entries[1]));
}
TEST(hub_invocation, hub_connection_invokes_persistent_connection_message_object)
{
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ [call_number]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{ \"C\":\"d-486F0DF9-BAO,5|BAV,1|BAW,0\", \"M\" : [{\"Name\": \"Test\"}] }",
"{ \"C\":\"d- F430FB19\", \"M\" : [{\"H\":\"my_hub\", \"M\":\"broadcast\", \"A\" : [\"signal event\", 1]}] }",
"{}"
};
call_number = std::min(call_number + 1, 2);
return pplx::task_from_result(responses[call_number]);
});
std::shared_ptr<log_writer> writer(std::make_shared<memory_log_writer>());
auto hub_connection = create_hub_connection(websocket_client, writer, trace_level::info);
auto on_broadcast_event = std::make_shared<event>();
hub_connection->on(_XPLATSTR("broadcast"), [on_broadcast_event](const json::value&)
{
on_broadcast_event->set();
});
hub_connection->start().get();
ASSERT_FALSE(on_broadcast_event->wait(5000));
auto memory_writer = std::dynamic_pointer_cast<memory_log_writer>(writer);
auto log_entries = memory_writer->get_log_entries();
ASSERT_TRUE(log_entries.size() >= 1);
ASSERT_EQ(_XPLATSTR("[info ] non-hub message received and will be discarded. message: {\"Name\":\"Test\"}\n"),
remove_date_from_log_entry(log_entries[1]));
}
TEST(invoke, invoke_creates_correct_payload)
{
utility::string_t payload;
@ -523,7 +445,7 @@ TEST(invoke_void, invoke_logs_if_callback_for_given_id_not_found)
std::string responses[]
{
"{ }\x1e",
"{\"I\":\"not tracked\"}\x1e",
"{ \"type\": 3, \"invocationId\": \"0\", \"error\": \"Ooops\" }\x1e"
"{}"
};
@ -546,187 +468,192 @@ TEST(invoke_void, invoke_logs_if_callback_for_given_id_not_found)
auto log_entries = std::dynamic_pointer_cast<memory_log_writer>(writer)->get_log_entries();
ASSERT_TRUE(log_entries.size() > 1);
auto entry = remove_date_from_log_entry(log_entries[2]);
ASSERT_EQ(_XPLATSTR("[info ] no callback found for id: not tracked\n"), entry);
auto entry = remove_date_from_log_entry(log_entries[1]);
ASSERT_EQ(_XPLATSTR("[info ] no callback found for id: 0\n"), entry);
}
TEST(invoke_void, invoke_propagates_errors_from_server_as_exceptions)
{
auto callback_registered_event = std::make_shared<event>();
// TODO Flaky until hub_connection.start waits for handshake response
//TEST(invoke_void, invoke_propagates_errors_from_server_as_exceptions)
//{
// auto callback_registered_event = std::make_shared<event>();
//
// int call_number = -1;
// auto websocket_client = create_test_websocket_client(
// /* receive function */ [call_number, callback_registered_event]()
// mutable {
// std::string responses[]
// {
// "{ }\x1e",
// "{ \"type\": 3, \"invocationId\": \"0\", \"error\": \"Ooops\" }\x1e"
// "{}"
// };
//
// call_number = std::min(call_number + 1, 2);
//
// if (call_number > 0)
// {
// callback_registered_event->wait();
// }
//
// return pplx::task_from_result(responses[call_number]);
// });
//
// auto hub_connection = create_hub_connection(websocket_client);
// try
// {
// hub_connection->start()
// .then([hub_connection, callback_registered_event]()
// {
// auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
// callback_registered_event->set();
// return t;
// }).get();
//
// ASSERT_TRUE(false); // exception expected but not thrown
// }
// catch (const std::runtime_error& e)
// {
// ASSERT_STREQ("\"Ooops\"", e.what());
// }
//}
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ [call_number, callback_registered_event]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{\"I\":\"0\", \"E\" : \"Ooops\"}\x1e",
"{}"
};
// TODO Flaky until hub_connection.start waits for handshake response
//TEST(invoke_void, invoke_propagates_hub_errors_from_server_as_hub_exceptions)
//{
// auto callback_registered_event = std::make_shared<event>();
//
// int call_number = -1;
// auto websocket_client = create_test_websocket_client(
// /* receive function */ [call_number, callback_registered_event]()
// mutable {
// std::string responses[]
// {
// "{ }\x1e",
// "{ \"type\": 3, \"invocationId\": \"0\", \"error\": \"Ooops\" }\x1e"
// "{}"
// };
//
// call_number = std::min(call_number + 1, 2);
//
// if (call_number > 0)
// {
// callback_registered_event->wait();
// }
//
// return pplx::task_from_result(responses[call_number]);
// });
//
// auto hub_connection = create_hub_connection(websocket_client);
// try
// {
// hub_connection->start()
// .then([hub_connection, callback_registered_event]()
// {
// auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
// callback_registered_event->set();
// return t;
// }).get();
//
// ASSERT_TRUE(false); // exception expected but not thrown
// }
// catch (const hub_exception& e)
// {
// ASSERT_STREQ("\"Ooops\"", e.what());
// }
//}
call_number = std::min(call_number + 1, 2);
// TODO Flaky until hub_connection.start waits for handshake response
//TEST(invoke_void, invoke_creates_hub_exception_even_if_no_error_data)
//{
// auto callback_registered_event = std::make_shared<event>();
//
// int call_number = -1;
// auto websocket_client = create_test_websocket_client(
// /* receive function */ [call_number, callback_registered_event]()
// mutable {
// std::string responses[]
// {
// "{ }\x1e",
// "{ \"type\": 3, \"invocationId\": \"0\", \"error\": \"Ooops\" }\x1e"
// "{}"
// };
//
// call_number = std::min(call_number + 1, 2);
//
// if (call_number > 0)
// {
// callback_registered_event->wait();
// }
//
// return pplx::task_from_result(responses[call_number]);
// });
//
// auto hub_connection = create_hub_connection(websocket_client);
// try
// {
// hub_connection->start()
// .then([hub_connection, callback_registered_event]()
// {
// auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
// callback_registered_event->set();
// return t;
// }).get();
//
// ASSERT_TRUE(false); // exception expected but not thrown
// }
// catch (const hub_exception& e)
// {
// ASSERT_STREQ("\"Ooops\"", e.what());
// }
//}
if (call_number > 0)
{
callback_registered_event->wait();
}
return pplx::task_from_result(responses[call_number]);
});
auto hub_connection = create_hub_connection(websocket_client);
try
{
hub_connection->start()
.then([hub_connection, callback_registered_event]()
{
auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
callback_registered_event->set();
return t;
}).get();
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const std::runtime_error& e)
{
ASSERT_STREQ("\"Ooops\"", e.what());
}
}
TEST(invoke_void, invoke_propagates_hub_errors_from_server_as_hub_exceptions)
{
auto callback_registered_event = std::make_shared<event>();
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ [call_number, callback_registered_event]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{\"I\":\"0\", \"E\" : \"Ooops\", \"H\": true, \"D\": { \"ErrorNumber\" : 42 }}\x1e",
"{}"
};
call_number = std::min(call_number + 1, 2);
if (call_number > 0)
{
callback_registered_event->wait();
}
return pplx::task_from_result(responses[call_number]);
});
auto hub_connection = create_hub_connection(websocket_client);
try
{
hub_connection->start()
.then([hub_connection, callback_registered_event]()
{
auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
callback_registered_event->set();
return t;
}).get();
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const hub_exception& e)
{
ASSERT_STREQ("\"Ooops\"", e.what());
}
}
TEST(invoke_void, invoke_creates_hub_exception_even_if_no_error_data)
{
auto callback_registered_event = std::make_shared<event>();
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ [call_number, callback_registered_event]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{\"I\":\"0\", \"E\" : \"Ooops\", \"H\": true }\x1e",
"{}"
};
call_number = std::min(call_number + 1, 2);
if (call_number > 0)
{
callback_registered_event->wait();
}
return pplx::task_from_result(responses[call_number]);
});
auto hub_connection = create_hub_connection(websocket_client);
try
{
hub_connection->start()
.then([hub_connection, callback_registered_event]()
{
auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
callback_registered_event->set();
return t;
}).get();
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const hub_exception& e)
{
ASSERT_STREQ("\"Ooops\"", e.what());
}
}
TEST(invoke_void, invoke_creates_runtime_error_when_hub_exception_indicator_false)
{
auto callback_registered_event = std::make_shared<event>();
int call_number = -1;
auto websocket_client = create_test_websocket_client(
/* receive function */ [call_number, callback_registered_event]()
mutable {
std::string responses[]
{
"{ }\x1e",
"{\"I\":\"0\", \"E\" : \"Ooops\", \"H\": false }\x1e",
"{}"
};
call_number = std::min(call_number + 1, 2);
if (call_number > 0)
{
callback_registered_event->wait();
}
return pplx::task_from_result(responses[call_number]);
});
auto hub_connection = create_hub_connection(websocket_client);
try
{
hub_connection->start()
.then([hub_connection, callback_registered_event]()
{
auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
callback_registered_event->set();
return t;
}).get();
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("\"Ooops\"", e.what());
ASSERT_TRUE(dynamic_cast<const hub_exception *>(&e) == nullptr);
}
}
// TODO Flaky until hub_connection.start waits for handshake response
//TEST(invoke_void, invoke_creates_runtime_error_when_hub_exception_indicator_false)
//{
// auto callback_registered_event = std::make_shared<event>();
//
// int call_number = -1;
// auto websocket_client = create_test_websocket_client(
// /* receive function */ [call_number, callback_registered_event]()
// mutable {
// std::string responses[]
// {
// "{ }\x1e",
// "{ \"type\": 3, \"invocationId\": \"0\", \"error\": \"Ooops\" }\x1e"
// "{}"
// };
//
// call_number = std::min(call_number + 1, 2);
//
// if (call_number > 0)
// {
// callback_registered_event->wait();
// }
//
// return pplx::task_from_result(responses[call_number]);
// });
//
// auto hub_connection = create_hub_connection(websocket_client);
// try
// {
// hub_connection->start()
// .then([hub_connection, callback_registered_event]()
// {
// auto t = hub_connection->invoke_void(_XPLATSTR("method"), json::value::array());
// callback_registered_event->set();
// return t;
// }).get();
//
// ASSERT_TRUE(false); // exception expected but not thrown
// }
// catch (const signalr_exception& e)
// {
// ASSERT_STREQ("\"Ooops\"", e.what());
// ASSERT_TRUE(dynamic_cast<const hub_exception *>(&e) == nullptr);
// }
//}
// TODO Flaky until hub_connection.start waits for handshake response
//TEST(invoke_void, invoke_creates_runtime_error)
//{
// auto callback_registered_event = std::make_shared<event>();
@ -786,3 +713,84 @@ TEST(connection_id, can_get_connection_id)
ASSERT_EQ(_XPLATSTR("f7707523-307d-4cba-9abf-3eef701241e8"), connection_id);
ASSERT_EQ(_XPLATSTR("f7707523-307d-4cba-9abf-3eef701241e8"), hub_connection->get_connection_id());
}
TEST(on, event_name_must_not_be_empty_string)
{
auto hub_connection = create_hub_connection();
try
{
hub_connection->on(_XPLATSTR(""), [](const json::value&) {});
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const std::invalid_argument& e)
{
ASSERT_STREQ("event_name cannot be empty", e.what());
}
}
TEST(on, cannot_register_multiple_handlers_for_event)
{
auto hub_connection = create_hub_connection();
hub_connection->on(_XPLATSTR("ping"), [](const json::value&) {});
try
{
hub_connection->on(_XPLATSTR("ping"), [](const json::value&) {});
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("an action for this event has already been registered. event name: ping", e.what());
}
}
TEST(on, cannot_register_handler_if_connection_not_in_disconnected_state)
{
try
{
auto websocket_client = create_test_websocket_client(
/* receive function */ []() { return pplx::task_from_result(std::string("{ }\x1e")); });
auto hub_connection = create_hub_connection(websocket_client);
hub_connection->start().get();
hub_connection->on(_XPLATSTR("myfunc"), [](const web::json::value&) {});
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("can't register a handler if the connection is in a disconnected state", e.what());
}
}
TEST(invoke_json, invoke_throws_when_the_underlying_connection_is_not_valid)
{
auto hub_connection = create_hub_connection();
try
{
hub_connection->invoke_json(_XPLATSTR("method"), json::value::array()).get();
ASSERT_TRUE(true); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("cannot send data when the connection is not in the connected state. current connection state: disconnected", e.what());
}
}
TEST(invoke_void, send_throws_when_the_underlying_connection_is_not_valid)
{
auto hub_connection = create_hub_connection();
try
{
hub_connection->invoke_void(_XPLATSTR("method"), json::value::array()).get();
ASSERT_TRUE(true); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("cannot send data when the connection is not in the connected state. current connection state: disconnected", e.what());
}
}

View File

@ -1,127 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#include "stdafx.h"
#include "trace_log_writer.h"
#include "test_utils.h"
#include "memory_log_writer.h"
#include "test_transport_factory.h"
#include "hub_connection_impl.h"
#include "signalrclient/signalr_exception.h"
#include "signalrclient/hub_connection.h"
using namespace signalr;
TEST(on, event_name_must_not_be_empty_string)
{
hub_connection hub_connection{ _XPLATSTR("") };
try
{
hub_connection.on(_XPLATSTR(""), [](const json::value&){});
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const std::invalid_argument& e)
{
ASSERT_STREQ("event_name cannot be empty", e.what());
}
}
TEST(on, cannot_register_multiple_handlers_for_event)
{
hub_connection hub_connection{ _XPLATSTR("") };
hub_connection.on(_XPLATSTR("ping"), [](const json::value&){});
try
{
hub_connection.on(_XPLATSTR("ping"), [](const json::value&){});
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("an action for this event has already been registered. event name: ping", e.what());
}
}
TEST(on, cannot_register_handler_if_connection_not_in_disconnected_state)
{
try
{
auto websocket_client = create_test_websocket_client(
/* receive function */ []() { return pplx::task_from_result(std::string("{ }\x1e")); });
auto hub_connection = hub_connection_impl::create(_XPLATSTR("http://fakeuri"), _XPLATSTR(""), trace_level::all,
std::make_shared<trace_log_writer>(), create_test_web_request_factory(),
std::make_unique<test_transport_factory>(websocket_client));
hub_connection->start().get();
hub_connection->on(_XPLATSTR("myfunc"), [](const web::json::value&){});
ASSERT_TRUE(false); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("can't register a handler if the connection is in a disconnected state", e.what());
}
}
//TEST(invoke_event, invoke_event_invokes_event_and_passes_arguments)
//{
// const auto payload = _XPLATSTR("{\"Contents\":\"My message\"}");
//
// hub_connection hub_connection{ _XPLATSTR("") };
//
// auto handler_invoked = false;
// hub_connection.on(_XPLATSTR("message"), [&handler_invoked, payload](const json::value& arguments)
// {
// handler_invoked = true;
// ASSERT_EQ(payload, arguments.serialize());
// });
//
// hub_connection.invoke_event(_XPLATSTR("message"), json::value::parse(payload));
//
// ASSERT_TRUE(handler_invoked);
//}
//TEST(invoke_event, logs_if_no_handler_for_an_event)
//{
// std::shared_ptr<log_writer> writer(std::make_shared<memory_log_writer>());
// internal_hub_proxy hub_proxy{ std::weak_ptr<hub_connection_impl>(), _XPLATSTR("hub"),
// logger{ writer, trace_level::info } };
// hub_proxy.invoke_event(_XPLATSTR("message"), json::value::parse(_XPLATSTR("{}")));
//
// auto log_entries = std::dynamic_pointer_cast<memory_log_writer>(writer)->get_log_entries();
// ASSERT_FALSE(log_entries.empty());
// auto entry = remove_date_from_log_entry(log_entries[0]);
// ASSERT_EQ(_XPLATSTR("[info ] no handler found for event. hub name: hub, event name: message\n"), entry);
//}
TEST(invoke_json, invoke_throws_when_the_underlying_connection_is_not_valid)
{
hub_connection hub_connection{ _XPLATSTR("") };
try
{
hub_connection.invoke(_XPLATSTR("method")).get();
ASSERT_TRUE(true); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("the connection for which this hub proxy was created is no longer valid - it was either destroyed or went out of scope", e.what());
}
}
TEST(invoke_void, send_throws_when_the_underlying_connection_is_not_valid)
{
hub_connection hub_connection{ _XPLATSTR("") };
try
{
hub_connection.send(_XPLATSTR("method")).get();
ASSERT_TRUE(true); // exception expected but not thrown
}
catch (const signalr_exception& e)
{
ASSERT_STREQ("the connection for which this hub proxy was created is no longer valid - it was either destroyed or went out of scope", e.what());
}
}

View File

@ -6,196 +6,23 @@
using namespace signalr;
//TEST(url_builder_negotiate, url_correct_if_query_string_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/negotiate")),
// url_builder::build_negotiate(web::uri{ _XPLATSTR("http://fake/") }, _XPLATSTR("")));
//}
//
//TEST(url_builder_negotiate, url_correct_if_query_string_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/negotiate?q1=1&q2=2")),
// url_builder::build_negotiate(web::uri{ _XPLATSTR("http://fake/signalr/") }, _XPLATSTR("q1=1&q2=2")));
//}
//
//TEST(url_builder_negotiate, url_correct_if_connection_data_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/negotiate?clientProtocol=1.4&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D")),
// url_builder::build_negotiate(web::uri{ _XPLATSTR("http://fake/signalr/") }, _XPLATSTR("")));
//}
//
//TEST(url_builder_connect_webSockets, url_correct_if_query_string_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/?q1=1&q2=2")),
// url_builder::build_connect(web::uri{ _XPLATSTR("http://fake/") }, transport_type::websockets, _XPLATSTR("q1=1&q2=2")));
//}
//
//TEST(url_builder_reconnect_longPolling, url_correct_if_query_string_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/reconnect?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("")));
//}
//
//TEST(url_builder_reconnect_longPolling, url_correct_if_query_string_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/reconnect?transport=longPolling&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("q1=1&q2=2")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/reconnect?transport=longPolling&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("&q1=1&q2=2")));
//}
//
//TEST(url_builder_reconnect_webSockets, url_correct_if_query_string_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("wss://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("https://fake/signalr/") }, transport_type::websockets, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("")));
//}
//
//TEST(url_builder_reconnect_webSockets, url_correct_if_query_string_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("q1=1&q2=2")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("&q1=1&q2=2")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("wss://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("https://fake/signalr/") }, transport_type::websockets, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("q1=1&q2=2")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("wss://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("https://fake/signalr/") }, transport_type::websockets, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("&q1=1&q2=2")));
//}
//
//TEST(url_builder_reconnect, url_correct_if_connection_data_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/reconnect?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets, _XPLATSTR(""), _XPLATSTR(""), _XPLATSTR("")));
//}
//
//TEST(url_builder_reconnect, url_correct_if_last_message_id_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/reconnect?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D&messageId=L45T%20M355463_1D")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection token"), _XPLATSTR("L45T M355463_1D"), _XPLATSTR(""), _XPLATSTR("")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D&messageId=L45T%20M355463_1D")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets,
// _XPLATSTR("connection token"), _XPLATSTR("L45T M355463_1D"), _XPLATSTR(""), _XPLATSTR("")));
//}
//
//TEST(url_builder_reconnect, url_correct_if_groups_token_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/reconnect?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D&groupsToken=G%207")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection token"), _XPLATSTR(""), _XPLATSTR("G 7"), _XPLATSTR("")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D&groupsToken=G%207")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets,
// _XPLATSTR("connection token"), _XPLATSTR(""), _XPLATSTR("G 7"), _XPLATSTR("")));
//}
//
//TEST(url_builder_reconnect, query_string_added_after_message_id_and_groups_token)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/reconnect?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D&messageId=L45T_M355463_1D&groupsToken=G7&X")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection token"), _XPLATSTR("L45T_M355463_1D"), _XPLATSTR("G7"), _XPLATSTR("X")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("ws://fake/signalr/reconnect?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D&messageId=L45T_M355463_1D&groupsToken=G7&X")),
// url_builder::build_reconnect(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets,
// _XPLATSTR("connection token"), _XPLATSTR("L45T_M355463_1D"), _XPLATSTR("G7"), _XPLATSTR("X")));
//}
//
//TEST(url_builder_start, url_correct_if_query_string_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/start?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token")),
// url_builder::build_start(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection token"), _XPLATSTR("")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/start?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token")),
// url_builder::build_start(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets,
// _XPLATSTR("connection token"), _XPLATSTR("")));
//}
//
//TEST(url_builder_start, url_correct_if_query_string_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/start?transport=longPolling&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_start(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection-token"), _XPLATSTR("q1=1&q2=2")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/start?transport=webSockets&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_start(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets,
// _XPLATSTR("connection-token"), _XPLATSTR("&q1=1&q2=2")));
//}
//
//TEST(url_builder_start, url_correct_if_connection_data_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/start?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D")),
// url_builder::build_start(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection token"), _XPLATSTR("")));
//}
//
//TEST(url_builder_abort, url_correct_if_query_string_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/abort?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token")),
// url_builder::build_abort(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection token"), _XPLATSTR("")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/abort?transport=webSockets&clientProtocol=1.4&connectionToken=connection%20token")),
// url_builder::build_abort(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets,
// _XPLATSTR("connection token"), _XPLATSTR("")));
//}
//
//TEST(url_builder_abort, url_correct_if_query_string_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/abort?transport=longPolling&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_abort(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection-token"), _XPLATSTR("q1=1&q2=2")));
//
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/abort?transport=webSockets&clientProtocol=1.4&connectionToken=connection-token&q1=1&q2=2")),
// url_builder::build_abort(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::websockets,
// _XPLATSTR("connection-token"), _XPLATSTR("&q1=1&q2=2")));
//}
//
//TEST(url_builder_abort, url_correct_if_connection_data_not_empty)
//{
// ASSERT_EQ(
// web::uri(_XPLATSTR("http://fake/signalr/abort?transport=longPolling&clientProtocol=1.4&connectionToken=connection%20token&connectionData=%5B%7B%22Name%22:%22ChatHub%22%7D%5D")),
// url_builder::build_abort(web::uri{ _XPLATSTR("http://fake/signalr/") }, transport_type::long_polling,
// _XPLATSTR("connection token"), _XPLATSTR("")));
//}
TEST(url_builder_negotiate, url_correct_if_query_string_empty)
{
ASSERT_EQ(
web::uri(_XPLATSTR("http://fake/negotiate")),
url_builder::build_negotiate(web::uri{ _XPLATSTR("http://fake/") }, _XPLATSTR("")));
}
TEST(url_builder_negotiate, url_correct_if_query_string_not_empty)
{
ASSERT_EQ(
web::uri(_XPLATSTR("http://fake/negotiate?q1=1&q2=2")),
url_builder::build_negotiate(web::uri{ _XPLATSTR("http://fake/") }, _XPLATSTR("q1=1&q2=2")));
}
TEST(url_builder_connect_webSockets, url_correct_if_query_string_not_empty)
{
ASSERT_EQ(
web::uri(_XPLATSTR("ws://fake/?q1=1&q2=2")),
url_builder::build_connect(web::uri{ _XPLATSTR("http://fake/") }, transport_type::websockets, _XPLATSTR("q1=1&q2=2")));
}