namespace OpenAPI.Tests open System open System.Net open System.Net.Http open System.IO open Microsoft.AspNetCore.Builder open Microsoft.AspNetCore.Hosting open Microsoft.AspNetCore.TestHost open Microsoft.Extensions.DependencyInjection open FSharp.Control.Tasks.V2.ContextInsensitive open Xunit open System.Text open Newtonsoft open TestHelper open UserApiHandlerTestsHelper open OpenAPI.UserApiHandler open OpenAPI.UserApiHandlerParams open OpenAPI.Model.User module UserApiHandlerTests = // --------------------------------- // Tests // --------------------------------- [] let ``CreateUser - Create user returns 0 where successful operation`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user" // use an example requestBody provided by the spec let examples = Map.empty.Add("application/json", getCreateUserExample "application/json") // or pass a body of type User let body = obj() :?> User |> Newtonsoft.Json.JsonConvert.SerializeObject |> Encoding.UTF8.GetBytes |> MemoryStream |> StreamContent body |> HttpPost client path |> isStatus (enum(0)) |> readText |> shouldEqual "TESTME" } [] let ``CreateUsersWithArrayInput - Creates list of users with given input array returns 0 where successful operation`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/createWithArray" // use an example requestBody provided by the spec let examples = Map.empty.Add("application/json", getCreateUsersWithArrayInputExample "application/json") // or pass a body of type User[] let body = obj() :?> User[] |> Newtonsoft.Json.JsonConvert.SerializeObject |> Encoding.UTF8.GetBytes |> MemoryStream |> StreamContent body |> HttpPost client path |> isStatus (enum(0)) |> readText |> shouldEqual "TESTME" } [] let ``CreateUsersWithListInput - Creates list of users with given input array returns 0 where successful operation`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/createWithList" // use an example requestBody provided by the spec let examples = Map.empty.Add("application/json", getCreateUsersWithListInputExample "application/json") // or pass a body of type User[] let body = obj() :?> User[] |> Newtonsoft.Json.JsonConvert.SerializeObject |> Encoding.UTF8.GetBytes |> MemoryStream |> StreamContent body |> HttpPost client path |> isStatus (enum(0)) |> readText |> shouldEqual "TESTME" } [] let ``DeleteUser - Delete user returns 400 where Invalid username supplied`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/{username}".Replace("username", "ADDME") HttpDelete client path |> isStatus (enum(400)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``DeleteUser - Delete user returns 404 where User not found`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/{username}".Replace("username", "ADDME") HttpDelete client path |> isStatus (enum(404)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``GetUserByName - Get user by user name returns 200 where successful operation`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/{username}".Replace("username", "ADDME") HttpGet client path |> isStatus (enum(200)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``GetUserByName - Get user by user name returns 400 where Invalid username supplied`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/{username}".Replace("username", "ADDME") HttpGet client path |> isStatus (enum(400)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``GetUserByName - Get user by user name returns 404 where User not found`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/{username}".Replace("username", "ADDME") HttpGet client path |> isStatus (enum(404)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``LoginUser - Logs user into the system returns 200 where successful operation`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/login" + "?username=ADDME&password=ADDME" HttpGet client path |> isStatus (enum(200)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``LoginUser - Logs user into the system returns 400 where Invalid username/password supplied`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/login" + "?username=ADDME&password=ADDME" HttpGet client path |> isStatus (enum(400)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``LogoutUser - Logs out current logged in user session returns 0 where successful operation`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/logout" HttpGet client path |> isStatus (enum(0)) |> readText |> shouldEqual "TESTME" |> ignore } [] let ``UpdateUser - Updated user returns 400 where Invalid user supplied`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/{username}".Replace("username", "ADDME") // use an example requestBody provided by the spec let examples = Map.empty.Add("application/json", getUpdateUserExample "application/json") // or pass a body of type User let body = obj() :?> User |> Newtonsoft.Json.JsonConvert.SerializeObject |> Encoding.UTF8.GetBytes |> MemoryStream |> StreamContent body |> HttpPut client path |> isStatus (enum(400)) |> readText |> shouldEqual "TESTME" } [] let ``UpdateUser - Updated user returns 404 where User not found`` () = task { use server = new TestServer(createHost()) use client = server.CreateClient() // add your setup code here let path = "/v2/user/{username}".Replace("username", "ADDME") // use an example requestBody provided by the spec let examples = Map.empty.Add("application/json", getUpdateUserExample "application/json") // or pass a body of type User let body = obj() :?> User |> Newtonsoft.Json.JsonConvert.SerializeObject |> Encoding.UTF8.GetBytes |> MemoryStream |> StreamContent body |> HttpPut client path |> isStatus (enum(404)) |> readText |> shouldEqual "TESTME" }