Add FSharpWebSite plus simple functional test against it (#6231)
This commit is contained in:
parent
64ffcfaa89
commit
a80594d706
|
|
@ -4,6 +4,8 @@
|
||||||
<BenchmarkDotNetVersion>0.10.3</BenchmarkDotNetVersion>
|
<BenchmarkDotNetVersion>0.10.3</BenchmarkDotNetVersion>
|
||||||
<CoreFxVersion>4.3.0</CoreFxVersion>
|
<CoreFxVersion>4.3.0</CoreFxVersion>
|
||||||
<DependencyModelVersion>2.0.0-*</DependencyModelVersion>
|
<DependencyModelVersion>2.0.0-*</DependencyModelVersion>
|
||||||
|
<FSharpCoreVersion>4.1.0</FSharpCoreVersion>
|
||||||
|
<FSharpNetSdkVersion>1.0.*</FSharpNetSdkVersion>
|
||||||
<InternalAspNetCoreSdkVersion>2.1.0-*</InternalAspNetCoreSdkVersion>
|
<InternalAspNetCoreSdkVersion>2.1.0-*</InternalAspNetCoreSdkVersion>
|
||||||
<JsonNetBsonVersion>1.0.1</JsonNetBsonVersion>
|
<JsonNetBsonVersion>1.0.1</JsonNetBsonVersion>
|
||||||
<MoqVersion>4.7.1</MoqVersion>
|
<MoqVersion>4.7.1</MoqVersion>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||||
|
{
|
||||||
|
public class FSharpWebSiteTest : IClassFixture<MvcTestFixture<FSharpWebSite.Startup>>
|
||||||
|
{
|
||||||
|
public FSharpWebSiteTest(MvcTestFixture<FSharpWebSite.Startup> fixture)
|
||||||
|
{
|
||||||
|
Client = fixture.Client;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HttpClient Client { get; }
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task HomeIndex_ReturnsHtml()
|
||||||
|
{
|
||||||
|
// Act
|
||||||
|
var response = await Client.GetAsync("http://localhost/");
|
||||||
|
var responseBody = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
Assert.Contains("<h1>Hello from FSharpWebSite</h1>", responseBody);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,6 +31,7 @@
|
||||||
<ProjectReference Include="..\WebSites\FilesWebSite\FilesWebSite.csproj" />
|
<ProjectReference Include="..\WebSites\FilesWebSite\FilesWebSite.csproj" />
|
||||||
<ProjectReference Include="..\WebSites\FiltersWebSite\FiltersWebSite.csproj" />
|
<ProjectReference Include="..\WebSites\FiltersWebSite\FiltersWebSite.csproj" />
|
||||||
<ProjectReference Include="..\WebSites\FormatterWebSite\FormatterWebSite.csproj" />
|
<ProjectReference Include="..\WebSites\FormatterWebSite\FormatterWebSite.csproj" />
|
||||||
|
<ProjectReference Include="..\WebSites\FSharpWebSite\FSharpWebSite.fsproj" />
|
||||||
<ProjectReference Include="..\WebSites\HtmlGenerationWebSite\HtmlGenerationWebSite.csproj" />
|
<ProjectReference Include="..\WebSites\HtmlGenerationWebSite\HtmlGenerationWebSite.csproj" />
|
||||||
<ProjectReference Include="..\Microsoft.AspNetCore.Mvc.TestCommon\Microsoft.AspNetCore.Mvc.TestCommon.csproj" />
|
<ProjectReference Include="..\Microsoft.AspNetCore.Mvc.TestCommon\Microsoft.AspNetCore.Mvc.TestCommon.csproj" />
|
||||||
<ProjectReference Include="..\..\samples\MvcSandbox\MvcSandbox.csproj" />
|
<ProjectReference Include="..\..\samples\MvcSandbox\MvcSandbox.csproj" />
|
||||||
|
|
@ -45,6 +46,7 @@
|
||||||
<ProjectReference Include="..\WebSites\WebApiCompatShimWebSite\WebApiCompatShimWebSite.csproj" />
|
<ProjectReference Include="..\WebSites\WebApiCompatShimWebSite\WebApiCompatShimWebSite.csproj" />
|
||||||
<ProjectReference Include="..\WebSites\XmlFormattersWebSite\XmlFormattersWebSite.csproj" />
|
<ProjectReference Include="..\WebSites\XmlFormattersWebSite\XmlFormattersWebSite.csproj" />
|
||||||
|
|
||||||
|
<PackageReference Include="FSharp.Core" Version="$(FSharpCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.ChunkingCookieManager.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
<PackageReference Include="Microsoft.AspNetCore.ChunkingCookieManager.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="$(AspNetCoreVersion)" />
|
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="$(AspNetCoreVersion)" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="$(AspNetCoreVersion)" />
|
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="$(AspNetCoreVersion)" />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace FSharpWebSite.Controllers
|
||||||
|
|
||||||
|
open System
|
||||||
|
open System.Collections.Generic
|
||||||
|
open System.Linq
|
||||||
|
open System.Threading.Tasks
|
||||||
|
open Microsoft.AspNetCore.Mvc
|
||||||
|
|
||||||
|
type HomeController () =
|
||||||
|
inherit Controller()
|
||||||
|
|
||||||
|
member this.Index () =
|
||||||
|
this.View()
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
<Project Sdk="FSharp.NET.Sdk; Microsoft.NET.Sdk.Web">
|
||||||
|
<Import Project="..\..\..\build\dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<!--
|
||||||
|
Signing is normally configured in common.props, but we can't import that into an F# project
|
||||||
|
because Internal.AspNetCore.Sdk doesn't support it.
|
||||||
|
-->
|
||||||
|
<AssemblyOriginatorKeyFile>..\..\..\build\Key.snk</AssemblyOriginatorKeyFile>
|
||||||
|
<SignAssembly>true</SignAssembly>
|
||||||
|
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
|
||||||
|
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Controllers\*.fs" />
|
||||||
|
<Compile Include="Startup.fs" />
|
||||||
|
<Compile Include="Program.fs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.Mvc\Microsoft.AspNetCore.Mvc.csproj" />
|
||||||
|
|
||||||
|
<PackageReference Include="FSharp.Core" Version="$(FSharpCoreVersion)" />
|
||||||
|
<PackageReference Include="FSharp.NET.Sdk" Version="$(FSharpNetSdkVersion)" PrivateAssets="All" />
|
||||||
|
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(AspNetCoreVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace FSharpWebSite
|
||||||
|
|
||||||
|
open System.IO
|
||||||
|
open Microsoft.AspNetCore.Hosting
|
||||||
|
|
||||||
|
|
||||||
|
module Program =
|
||||||
|
|
||||||
|
[<EntryPoint>]
|
||||||
|
let main args =
|
||||||
|
let host =
|
||||||
|
WebHostBuilder()
|
||||||
|
.UseContentRoot(Directory.GetCurrentDirectory())
|
||||||
|
.UseStartup<Startup>()
|
||||||
|
.UseKestrel()
|
||||||
|
.UseIISIntegration()
|
||||||
|
.Build()
|
||||||
|
|
||||||
|
host.Run()
|
||||||
|
|
||||||
|
0
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace FSharpWebSite
|
||||||
|
|
||||||
|
open Microsoft.AspNetCore.Builder
|
||||||
|
open Microsoft.AspNetCore.Hosting
|
||||||
|
open Microsoft.Extensions.DependencyInjection
|
||||||
|
|
||||||
|
|
||||||
|
type Startup () =
|
||||||
|
|
||||||
|
member this.ConfigureServices(services: IServiceCollection) =
|
||||||
|
services.AddMvc() |> ignore
|
||||||
|
|
||||||
|
member this.Configure(app: IApplicationBuilder) =
|
||||||
|
app.UseDeveloperExceptionPage() |> ignore
|
||||||
|
app.UseStaticFiles() |> ignore
|
||||||
|
app.UseMvcWithDefaultRoute() |> ignore
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Home Page";
|
||||||
|
}
|
||||||
|
|
||||||
|
<h1>Hello from FSharpWebSite</h1>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>@ViewData["Title"] - FSharpWebSite</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
@RenderBody()
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
@using FSharpWebSite
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
@{
|
||||||
|
Layout = "_Layout";
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue