mirror of
				https://github.com/Smaug123/WoofWare.Myriad
				synced 2025-10-31 08:38:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Forth
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Forth
		
	
	
	
	
	
| namespace WoofWare.Myriad.Plugins.Test
 | |
| 
 | |
| open System
 | |
| open System.Net
 | |
| open System.Net.Http
 | |
| open NUnit.Framework
 | |
| open PureGym
 | |
| open FsUnitTyped
 | |
| 
 | |
| [<TestFixture>]
 | |
| module TestBasePath =
 | |
|     [<Test>]
 | |
|     let ``Base address is respected`` () =
 | |
|         let proc (message : HttpRequestMessage) : HttpResponseMessage Async =
 | |
|             async {
 | |
|                 message.Method |> shouldEqual HttpMethod.Get
 | |
|                 let content = new StringContent (message.RequestUri.ToString ())
 | |
|                 let resp = new HttpResponseMessage (HttpStatusCode.OK)
 | |
|                 resp.Content <- content
 | |
|                 return resp
 | |
|             }
 | |
| 
 | |
|         use client = HttpClientMock.makeNoUri proc
 | |
|         let api = PureGymApi.make client
 | |
| 
 | |
|         let observedUri = api.GetPathParam("param").Result
 | |
|         observedUri |> shouldEqual "https://whatnot.com/endpoint/param"
 | |
| 
 | |
|     [<Test>]
 | |
|     let ``Without a base address attr but with BaseAddress on client, request goes through`` () =
 | |
|         let proc (message : HttpRequestMessage) : HttpResponseMessage Async =
 | |
|             async {
 | |
|                 message.Method |> shouldEqual HttpMethod.Get
 | |
|                 let content = new StringContent (message.RequestUri.ToString ())
 | |
|                 let resp = new HttpResponseMessage (HttpStatusCode.OK)
 | |
|                 resp.Content <- content
 | |
|                 return resp
 | |
|             }
 | |
| 
 | |
|         use client = HttpClientMock.make (System.Uri "https://baseaddress.com") proc
 | |
|         let api = ApiWithoutBaseAddress.make client
 | |
| 
 | |
|         let observedUri = api.GetPathParam("param").Result
 | |
|         observedUri |> shouldEqual "https://baseaddress.com/endpoint/param"
 | |
| 
 | |
|     [<Test>]
 | |
|     let ``Without a base address attr or BaseAddress on client, request throws`` () =
 | |
|         let proc (message : HttpRequestMessage) : HttpResponseMessage Async =
 | |
|             async {
 | |
|                 message.Method |> shouldEqual HttpMethod.Get
 | |
|                 let content = new StringContent (message.RequestUri.ToString ())
 | |
|                 let resp = new HttpResponseMessage (HttpStatusCode.OK)
 | |
|                 resp.Content <- content
 | |
|                 return resp
 | |
|             }
 | |
| 
 | |
|         use client = HttpClientMock.makeNoUri proc
 | |
|         let api = ApiWithoutBaseAddress.make client
 | |
| 
 | |
|         let observedExc =
 | |
|             async {
 | |
|                 let! result = api.GetPathParam ("param") |> Async.AwaitTask |> Async.Catch
 | |
| 
 | |
|                 match result with
 | |
|                 | Choice1Of2 _ -> return failwith "test failure"
 | |
|                 | Choice2Of2 exc -> return exc
 | |
|             }
 | |
|             |> Async.RunSynchronously
 | |
| 
 | |
|         let observedExc =
 | |
|             match observedExc with
 | |
|             | :? AggregateException as exc ->
 | |
|                 match exc.InnerException with
 | |
|                 | :? ArgumentNullException as exc -> exc
 | |
|                 | _ -> failwith "test failure"
 | |
|             | _ -> failwith "test failure"
 | |
| 
 | |
|         observedExc.Message
 | |
|         |> shouldEqual
 | |
|             "No base address was supplied on the type, and no BaseAddress was on the HttpClient. (Parameter 'BaseAddress')"
 |