public void SchemeIsUsedIfSpecified(UriScheme scheme, string expectedScheme) { FluentUriBuilder.Create() .Scheme(scheme) .Host("example.com") .ToUri() .Scheme .Should().Be(expectedScheme); }
public void HostIsUsedIfSpecified() { var host = "test.example.com"; FluentUriBuilder.Create() .Host(host) .ToUri() .Host .Should().Be(host); }
public void GetsQueryParamValueUsingQueryParams() { FluentUriBuilder.Create() .Scheme(UriScheme.Http) .Host("example.com") .QueryParam("testkey", "testvalue") .GetParam("testkey") .Should() .Be("testvalue"); }
public void UserNameCannotBeNullOrWhiteSpace() { FluentUriBuilder.Create() .Invoking(b => b.Credentials(null, "password")) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.Credentials(string.Empty, "password")) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.Credentials(" ", "password")) .ShouldThrow <ArgumentException>(); }
public void HostCannotBeNullOrWhiteSpace() { FluentUriBuilder.Create() .Invoking(b => b.Host(null)) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.Host(string.Empty)) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.Host(" ")) .ShouldThrow <ArgumentException>(); }
public void QueryParamKeyCannotBeNullOrWhiteSpace() { FluentUriBuilder.Create() .Invoking(b => b.QueryParam(null, "a")) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.QueryParam(string.Empty, "a")) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.QueryParam(" ", "a")) .ShouldThrow <ArgumentException>(); }
public void QueryParamValueCannotBeNullOrWhiteSpace() { FluentUriBuilder.Create() .Invoking(b => b.QueryParam("a", (string)null)) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.QueryParam("a", string.Empty)) .ShouldThrow <ArgumentException>(); FluentUriBuilder.Create() .Invoking(b => b.QueryParam("a", " ")) .ShouldThrow <ArgumentException>(); }
/// <summary> /// Hämtar pågående driftavbrott på de kanaler som anges. Om något /// annat fel inträffar kastas ett ApplicationException. /// </summary> /// <param name="kanaler">Samling kanaler vars driftavbrott ska hämtas</param> /// <returns>Ska endast returnera noll eller ett driftavbrott i praktiken</returns> /// <exception cref="ApplicationException"></exception> public IEnumerable <driftavbrottType> GetPagaendeDriftavbrott(IEnumerable <String> kanaler) { if (senastFråganTillDriftavbrott < DateTime.Now) { #region Bygg frågan och klient // Använder ett tredjeparts-lib för att snyggt bygga en URI FluentUriBuilder builder = FluentUriBuilder.Create() .Scheme(myHttps ? UriScheme.Https : UriScheme.Http) .Host(myServer) .Port(myPort) .Path(BASE_URI + PÅGÅENDE_PATH); foreach (var kanal in kanaler) { builder = builder.QueryParam(KANAL_PARAM, kanal); } // Släng in systemId som parameter till tjänsten, som alltid är ett krav builder = builder.QueryParam(SYSTEM_PARAM, mySystemId); // REST client RestClient restClient = new RestClient { // BaseUrl (REST Service EndPoint adress) BaseUrl = builder.ToUri(), Encoding = Encoding.UTF8 }; // Request som skickas RestRequest restRequest = new RestRequest { // Metod (POST, GET, PUT, DELETE) // RequestFormat (XML, JSON) Method = Method.GET, RequestFormat = DataFormat.Xml }; // Lägg till Header (endast XML accepteras) restRequest.AddHeader("Accept", "application/xml,application/json"); #endregion // Gör anropet IRestResponse <driftavbrottType> restResponse = restClient.Execute <driftavbrottType>(restRequest); // Fick vi något svar alls? if (restResponse != null) { if (restResponse.IsSuccessful) { // Sätter tidpunkten för senaste frågan. senastFråganTillDriftavbrott = DateTime.Now.AddMinutes(1); // Hämta HTTP statuskoden i numerisk form (ex: 200) Int32 numericStatusCode = (Int32)restResponse.StatusCode; // Servern returnerade 404 eller 406 (HTTP Statuskod=404) if (restResponse.StatusCode == HttpStatusCode.NotFound) { throw new ApplicationException($"#Driftavbrottstjänsten returnerade 404/406. ResponseCode={numericStatusCode} {restResponse.StatusCode}, ResponseServer={restResponse.Server}, RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}.", new HttpException(404, "File Not Found")); } // Servern returnerade inga driftavbrott alls (HTTP Statuskod=204, innehåll saknas) if (restResponse.StatusCode == HttpStatusCode.NoContent) { gällandeSvarFrånDriftavbrott = Enumerable.Empty <driftavbrottType>(); return(gällandeSvarFrånDriftavbrott); } // Servern returnerade eventuella driftavbrott (HTTP Statuskod=200) if (restResponse.StatusCode == HttpStatusCode.OK) { // Sätter gällande svar till svar eller tomt om vi inte fick någon data. gällandeSvarFrånDriftavbrott = restResponse.Data == null?Enumerable.Empty <driftavbrottType>() : new[] { restResponse.Data }; return(gällandeSvarFrånDriftavbrott); } // Servern returnerade någon form av annan statuskod som ej behandlas specifikt throw new ApplicationException($"#Driftavbrottstjänsten returnerade en oväntad statuskod. ResponseCode={numericStatusCode} {restResponse.StatusCode}, ResponseServer={restResponse.Server}, RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}."); } throw new ApplicationException($"Driftavbrottstjänsten svarar inte. ResponseServer={restResponse.Server}, RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}."); } // Servern returnerade inget svar (Response) alls throw new ApplicationException($"#Fick inget svar från driftavbrottstjänsten. RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}."); } // returnerar senaste svaret. return(gällandeSvarFrånDriftavbrott); }
public void PortCanBe65535() { FluentUriBuilder.Create() .Invoking(b => b.Port(65535)) .ShouldNotThrow <ArgumentOutOfRangeException>(); }
public void PortCannotBeGreaterThan65535() { FluentUriBuilder.Create() .Invoking(b => b.Port(65536)) .ShouldThrow <ArgumentOutOfRangeException>(); }
public void PortCannotBeLessThanMinus1() { FluentUriBuilder.Create() .Invoking(b => b.Port(-2)) .ShouldThrow <ArgumentOutOfRangeException>(); }
public void QueryParamsObjectCannotBeNull() { FluentUriBuilder.Create() .Invoking(b => b.QueryParams((object)null)) .ShouldThrow <ArgumentNullException>(); }
public void FragmentCannotBeNull() { FluentUriBuilder.Create().Invoking(b => b.Fragment(null)).ShouldThrow <ArgumentNullException>(); }
public void CreateReturnsFluentUriBuilderInstance() { FluentUriBuilder.Create().Should().NotBeNull(); }