public void Can_deserialize_object_without_xml_declaration() { const string xml = "<response status=\"ok\"><testObject id=\"1\"> <name>A big test object</name><listOfThings><string>one</string><string>two</string><string>three</string></listOfThings><listOfInnerObjects><InnerObject id=\"1\"><Name>Trevor</Name></InnerObject><InnerObject id=\"2\"><Name>Bill</Name></InnerObject></listOfInnerObjects></testObject></response>"; var stubResponse = new Response(HttpStatusCode.OK, xml); var xmlParser = new ResponseParser(new ApiResponseDetector()); Assert.DoesNotThrow(() => xmlParser.Parse <TestObject>(stubResponse)); var testObject = xmlParser.Parse <TestObject>(stubResponse); Assert.That(testObject.Id, Is.EqualTo(1)); }
public void Can_deserialize_object_without_xml_declaration() { const string xml = "<response status=\"ok\"><testObject id=\"1\"> <name>A big test object</name><listOfThings><string>one</string><string>two</string><string>three</string></listOfThings><listOfInnerObjects><InnerObject id=\"1\"><Name>Trevor</Name></InnerObject><InnerObject id=\"2\"><Name>Bill</Name></InnerObject></listOfInnerObjects></testObject></response>"; var stubResponse = new Response(HttpStatusCode.OK, xml); var xmlParser = new ResponseParser(new ApiResponseDetector()); Assert.DoesNotThrow(() => xmlParser.Parse<TestObject>(stubResponse)); var testObject = xmlParser.Parse<TestObject>(stubResponse); Assert.That(testObject.Id, Is.EqualTo(1)); }
public void Can_deserialize_object() { const string xml = "<?xml version=\"1.0\"?><response xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" status=\"ok\"><testObject id=\"1\"> <name>A big test object</name><listOfThings><string>one</string><string>two</string><string>three</string></listOfThings><listOfInnerObjects><InnerObject id=\"1\"><Name>Trevor</Name></InnerObject><InnerObject id=\"2\"><Name>Bill</Name></InnerObject></listOfInnerObjects></testObject></response>"; var stubResponse = new Response(HttpStatusCode.OK, xml); var xmlParser = new ResponseParser(new ApiResponseDetector()); Assert.DoesNotThrow(() => xmlParser.Parse <TestObject>(stubResponse)); var testObject = xmlParser.Parse <TestObject>(stubResponse); Assert.That(testObject.Id, Is.EqualTo(1)); }
public void Can_deserialize_object() { const string xml = "<?xml version=\"1.0\"?><response xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" status=\"ok\"><testObject id=\"1\"> <name>A big test object</name><listOfThings><string>one</string><string>two</string><string>three</string></listOfThings><listOfInnerObjects><InnerObject id=\"1\"><Name>Trevor</Name></InnerObject><InnerObject id=\"2\"><Name>Bill</Name></InnerObject></listOfInnerObjects></testObject></response>"; var stubResponse = new Response(HttpStatusCode.OK, xml); var xmlParser = new ResponseParser(new ApiResponseDetector()); Assert.DoesNotThrow(() => xmlParser.Parse<TestObject>(stubResponse)); var testObject = xmlParser.Parse<TestObject>(stubResponse); Assert.That(testObject.Id, Is.EqualTo(1)); }
public bool remove(bool soft = false) { beforeRemove(); if (soft) { return(afterRemove(null, soft)); } HTTPRequest http = Request(); http.addParameter("entity", Entity + "/delete"); prepareRemoveData(http); if (!exec(http, this)) { return(false); } ResponseParser parser = ResponseParser.Parse(http.ResponseData); if (!parser.NoError) { LastError = parser.LastError; return(false); } if (parser.ServerErrorFlag != 0) { LastError = parser.ToObject <string>(); return(false); } return(afterRemove(parser)); }
public void ParsePresets() { var r = (FsResult <IEnumerable <Preset> >)ResponseParser.Parse(Verb.ListGetNext, Command.PRESETS, Xml.Presets); Assert.IsTrue(r.Succeeded); Assert.AreEqual(10, r.Value.Count()); }
private bool saveChuck(string chuck) { HTTPRequest http = Core.Model.Request(); http.addParameter("entity", Entity + "/savechuck"); http.addParameter("id", Id); http.addParameter("chuck", chuck); if (!Core.Model.exec(http, this)) { return(false); } ResponseParser parser = ResponseParser.Parse(http.ResponseData); if (!parser.NoError) { LastError = parser.LastError; return(false); } if (parser.ServerErrorFlag != 0) { LastError = parser.ToObject <string>(); return(false); } return(true); }
private bool changeRowOrder(string action) { HTTPRequest http = Request(); http.addParameter("entity", Entity + "/" + action); http.addParameter("id", Id); if (!exec(http, this)) { return(false); } ResponseParser parser = ResponseParser.Parse(http.ResponseData); if (!parser.NoError) { LastError = parser.LastError; return(false); } if (parser.ServerErrorFlag != 0) { LastError = parser.ToObject <string>(); return(false); } int changedRowId = parser.ToObject <int>(); if (changedRowId == 0) { return(true); } return(rowSwap(changedRowId)); }
public void ShouldCalculateFromHundredFilesCorrectly() { var parameters = new StringBuilder(); var correctMargins = new decimal(); for (var i = 0; i < 100; i++) { var inputValue = new InputValue { OpenPrice = 1, ClosePrice = 2, Volume = 3, ContractSize = 4, Leverage = 5, Commission = 7, }; correctMargins = (inputValue.Volume * inputValue.ContractSize / inputValue.Leverage); var tmpFilePath = InputValueSaver.SaveToTmpFile(inputValue); parameters.Append(tmpFilePath + " "); } var response = ResponseParser.Parse(new FileStarter().LaunchProcess("-f " + parameters)); Assert.That(response.FirstOrDefault(o => Math.Abs(o.Margin - correctMargins) > 0.0001M), Is.Null, "Error in group calculation (3)"); }
public void can_deserialise_response_user_cards() { var xmlParser = new ResponseParser <AddCard>(); var deserializedCards = xmlParser.Parse(response); Assert.That(deserializedCards, Is.Not.Null); }
private DateTime?GetExpirationDate(LicenseRegistration registration, string response) { var parsed = parser.Parse(response); return(parsed != null && parsed.Key == registration.Key ? parsed.Expiration : (DateTime?)null); }
public void WithoutDescriptionInAttribute_ReturnsResponseWithStatusCodeString() { var parser = new ResponseParser(); var response = parser.Parse(new ProducesResponseAttribute(HttpStatusCode.Accepted)); Assert.Equal("Accepted", response.Description); }
public void ReturnsResponseObjectWithHttpStatusCode() { var parser = new ResponseParser(); var response = parser.Parse(new ProducesResponseAttribute(HttpStatusCode.Accepted)); Assert.Equal(202, response.HttpStatusCode); }
public void can_deserialise_response_user_cards() { var xmlParser = new ResponseParser(new ApiResponseDetector()); var deserializedCards = xmlParser.Parse<AddCard>(response); Assert.That(deserializedCards, Is.Not.Null); }
public void can_deserialise_response_user_cards() { var xmlParser = new ResponseParser(new ApiResponseDetector()); var deserializedCards = xmlParser.Parse <AddCard>(response); Assert.That(deserializedCards, Is.Not.Null); }
public void ParseValidModes() { var r = (FsResult <IEnumerable <RadioMode> >)ResponseParser.Parse(Verb.ListGetNext, Command.VALID_MODES, Xml.RadioModes); Assert.IsTrue(r.Succeeded); Assert.AreEqual(8, r.Value.Count()); Assert.IsNotNull(r.Value.First(m => m.Label == "AUX-Modus")); }
public void can_deserialise_response_user_cards() { var xmlParser = new ResponseParser<AddCard>(); var deserializedCards = xmlParser.Parse(response); Assert.That(deserializedCards, Is.Not.Null); }
public void ParseEqualizerPresets() { var r = (FsResult <IEnumerable <EqualizerPreset> >)ResponseParser.Parse(Verb.ListGetNext, Command.EQUALIZER_PRESETS, Xml.EqualizerPresets); Assert.IsTrue(r.Succeeded); Assert.AreEqual(9, r.Value.Count()); Assert.IsNotNull(r.Value.First(m => m.Label == "Nachrichten")); }
public void WithDescriptionInAttribute_ReturnsResponseWithDescription() { const string description = "Your request has been accepted."; var parser = new ResponseParser(); var response = parser.Parse(new ProducesResponseAttribute(HttpStatusCode.Accepted, description)); Assert.Equal(description, response.Description); }
public void ParseNotificationSingle() { var r = (FsResult <IEnumerable <FsNotification> >)ResponseParser.Parse(Verb.GetNotify, null, Xml.NotificationSingle); Assert.IsTrue(r.Succeeded); Assert.AreEqual(1, r.Value.Count()); Assert.AreEqual("netremote.play.status", r.Value.ElementAt(0).Name); Assert.AreEqual(2, r.Value.ElementAt(0).GetValue <byte>()); }
public async Task ParseTokenResponse_post_binding_sp_initiated() { //ARRANGE var inResponseTo = Guid.NewGuid().ToString(); var response = ResponseFactoryMock.GetTokenResponseSuccess(inResponseTo, StatusCodes.Success); var logger = new LogProviderMock(); var serialised = ResponseFactoryMock.Serialize(response); var xmlSignatureManager = new XmlSignatureManager(); var document = new XmlDocument(); document.LoadXml(serialised); var cert = AssertionFactroryMock.GetMockCertificate(); xmlSignatureManager.SignXml(document, response.ID, cert.PrivateKey, null); var base64Encoded = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(document.DocumentElement.OuterXml)); var compressor = new DeflateCompressor(); var encoder = new MessageEncoding(compressor); var jsonSerialiser = new NSJsonSerializer(new DefaultSettingsProvider()); var relayStateSerialiser = new RelaystateSerialiser(jsonSerialiser, encoder, logger) as IRelayStateSerialiser; var relayState = await relayStateSerialiser.Serialize(new Dictionary <string, object> { { "Key", "Value" } }); var form = new SAMLForm(); form.SetResponse(base64Encoded); form.SetRelatState(relayState); Func <Type, IMetadataHandler> metadataHandlerFactory = t => new MetadataEntitityDescriptorHandler(); var certManager = new CertificateManager(logger); var signatureManager = new XmlSignatureManager(); Func <IEnumerable <ResponseValidationRule> > rulesResolver = () => new[] { new ResponseSignatureRule(logger, certManager, signatureManager) }; var validator = new Federation.Protocols.Response.Validation.ResponseValidator(logger, new RuleFactory(rulesResolver)); var configurationRetrieverMock = new ConfigurationRetrieverMock(); var federationPartyContextBuilderMock = new FederationPartyContextBuilderMock(); var configurationManger = new ConfigurationManager <MetadataBase>(federationPartyContextBuilderMock, configurationRetrieverMock); var relayStateHandler = new RelayStateHandler(relayStateSerialiser, logger); var responseParser = new ResponseParser(metadataHandlerFactory, t => new SamlTokenResponseParser(logger), configurationManger, relayStateHandler, logger, validator); var postBindingDecoder = new PostBindingDecoder(logger); var message = await postBindingDecoder.Decode(form.HiddenControls.ToDictionary(k => k.Key, v => v.Value)); var context = new SamlInboundContext { Message = message, DescriptorResolver = m => metadataHandlerFactory(typeof(object)).GetIdentityProviderSingleSignOnDescriptor(m).Single().Roles.Single() }; //ACT var result = await responseParser.Parse(context); //ASSERT Assert.IsTrue(result.IsValidated); }
public void ShouldRiseErrorIfLeverageBelowZero() { var parameters = "--open 1.2 --close 2 --volume 1.5 --contract-size 100000 --leverage -2"; var response = ResponseParser.Parse(new FileStarter().LaunchProcess(parameters)); Assert.That(response[0].Errors.Count == 1, "wrong errors count"); Assert.That(response[0].Errors[0].Contains("Leverage must be greater than 0"), "Wrong error: " + response[0].Errors[0]); }
public void Test1(string response, int processed, int failed, int total, decimal secondsSpent) { var parser = new ResponseParser(); var parsed = parser.Parse(response); Assert.Equal(processed, parsed.Processed); Assert.Equal(failed, parsed.Failed); Assert.Equal(secondsSpent, parsed.SecondsSpent); Assert.Equal(total, parsed.Total); }
public void should_deserialize_emtpy_release_type_to_unknown() { var responseXml = File.ReadAllText("StubResponses/ArtistReleases.xml"); var response = new Response(HttpStatusCode.OK, responseXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var release = xmlParser.Parse<ArtistReleases>(response).Releases.First(); Assert.That(release.Type,Is.EqualTo(ReleaseType.Unknown)); }
public void should_deserialize_emtpy_release_type_to_unknown() { var responseXml = File.ReadAllText("StubResponses/ArtistReleases.xml"); var response = new Response(HttpStatusCode.OK, responseXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var release = xmlParser.Parse <ArtistReleases>(response).Releases.First(); Assert.That(release.Type, Is.EqualTo(ReleaseType.Unknown)); }
public void can_deseralize_card_types() { var xmlParser = new ResponseParser(new ApiResponseDetector()); var result = xmlParser.Parse<PaymentCardTypes>(stubResponse); Assert.That(result.CardTypes.Count(),Is.EqualTo(4)); var lastCard = result.CardTypes.Last(); Assert.That(lastCard.Type, Is.EqualTo("American Express")); Assert.That(lastCard.Id, Is.EqualTo("AMEX")); }
public void Can_Deserialise_ok_response_without_body__as_DeleteCard() { const string ResponseXml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><response status=\"ok\" version=\"1.2\" />"; var response = new Response(HttpStatusCode.OK, ResponseXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var result = xmlParser.Parse <DeleteCard>(response); Assert.That(result, Is.Not.Null); }
public void Can_Deserialise_ok_response_without_body__as_DeleteCard() { const string ResponseXml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><response status=\"ok\" version=\"1.2\" />"; var response = new Response(HttpStatusCode.OK, ResponseXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var result = xmlParser.Parse<DeleteCard>(response); Assert.That(result, Is.Not.Null); }
public void ParseNotificationMultiple() { var r = (FsResult <IEnumerable <FsNotification> >)ResponseParser.Parse(Verb.GetNotify, null, Xml.NotificationMultiple); Assert.IsTrue(r.Succeeded); Assert.AreEqual(2, r.Value.Count()); Assert.AreEqual("netremote.play.info.name", r.Value.ElementAt(0).Name); Assert.AreEqual("Lounge FM Vienna", r.Value.ElementAt(0).GetValue <string>()); Assert.AreEqual("netremote.play.info.text", r.Value.ElementAt(1).Name); Assert.AreEqual("Coralie Clément - L'Ombre Et La Lumiere", r.Value.ElementAt(1).GetValue <string>()); }
public void WithFunctionWithProducesResponseAttrbiutes_ReturnsParsedAttributes() { var functionMethod = typeof(ResponseAttributeFuncs).GetMethod(nameof(ResponseAttributeFuncs.DeleteUser)); var parser = new ResponseParser(); var responses = parser.Parse(functionMethod); Assert.Equal(2, responses.Count()); Assert.Contains(responses, r => r.HttpStatusCode == 204); Assert.Contains(responses, r => r.HttpStatusCode == 404); }
/// <summary> /// Authenticates the specified network credentials with a provider endpoint and /// returns the SAML assertion data from which temporary AWS credentials can be obtained. /// </summary> /// <param name="identityProviderUrl">The authentication endpoint to be called.</param> /// <param name="credentials"> /// Credentials for the call. If null, the users default network credentials will be used /// in a temporary impersonation context. /// </param> /// <param name="authenticationType"> /// The authentication type expected by the endpoint. The default value if not specified /// is 'Kerberos'. Valid values are 'NTLM', 'Digest', 'Kerberos' and 'Negotiate'. /// </param> /// <returns>SAMLAssertion instance wrapping the returned document on successful authentication.</returns> public SAMLAssertion GetSAMLAssertion(Uri identityProviderUrl, ICredentials credentials, string authenticationType) { var response = AuthenticationController.Authenticate(identityProviderUrl, credentials, string.IsNullOrEmpty(authenticationType) ? SAMLEndpointSettings.DefaultAuthenticationType : authenticationType, ProxySettings); return(ResponseParser.Parse(response)); }
public void Error_captures_http_status_code_from_html() { const string badXml = "<html><head>Error</head><body>It did not work<br><hr></body></html>"; var response = new Response(HttpStatusCode.InternalServerError, badXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws <NonXmlResponseException>(() => xmlParser.Parse <TestObject>(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void ShouldRiseErrorIfMultipleMandatoryValuesBelowZero() { var parameters = "--open -1 --close -2 --volume 1.5 --contract-size -3 --leverage -4"; var response = ResponseParser.Parse(new FileStarter().LaunchProcess(parameters)); Assert.That(response[0].Errors.Count == 4, "wrong errors count"); Assert.That(response[0].Errors.Any(o => o.Contains("Leverage must be greater than 0")), "Wrong error"); Assert.That(response[0].Errors.Any(o => o.Contains("Close price must be greater than 0")), "Wrong error"); Assert.That(response[0].Errors.Any(o => o.Contains("Open price must be greater than 0")), "Wrong error"); Assert.That(response[0].Errors.Any(o => o.Contains("Contract size must be greater than 0")), "Wrong error"); }
public void Should_throw_unrecognised_error_exception_if_xml_is_missing_error_message() { const string validXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"123\"></error></response>"; var response = new Response(HttpStatusCode.OK, validXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws <UnrecognisedErrorException>(() => xmlParser.Parse <TestObject>(response)); Assert.That(ex.ResponseBody, Is.EqualTo(response.Body)); Assert.That(ex.Message, Is.EqualTo(UnrecognisedErrorException.DEFAULT_ERROR_MESSAGE)); }
public void Should_throw_non_xml_response_exception_when_response_body_is_empty() { var response = new Response(HttpStatusCode.OK, string.Empty); var xmlSerializer = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws <NonXmlResponseException>(() => xmlSerializer.Parse <TestObject>(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); Assert.That(ex.ResponseBody, Is.Empty); }
public void WithMethodWithoutPRoducesResponseAttributes_ReturnsDefaultAttibute() { var functionMethod = typeof(ResponseAttributeFuncs).GetMethod(nameof(ResponseAttributeFuncs.NoResponseAttribute)); var parser = new ResponseParser(); var responses = parser.Parse(functionMethod); var onlyResponse = Assert.Single(responses); Assert.Equal(parser.DefaultResponse.HttpStatusCode, onlyResponse.HttpStatusCode); Assert.Equal(parser.DefaultResponse.Description, onlyResponse.Description); }
public void can_deseralize_card_types() { var xmlParser = new ResponseParser(new ApiResponseDetector()); var result = xmlParser.Parse <PaymentCardTypes>(stubResponse); Assert.That(result.CardTypes.Count(), Is.EqualTo(4)); var lastCard = result.CardTypes.Last(); Assert.That(lastCard.Type, Is.EqualTo("American Express")); Assert.That(lastCard.Id, Is.EqualTo("AMEX")); }
public void Should_throw_input_parameter_exception_for_1001_error_code_with_error_http_status_code() { const string errorXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"1001\"><errorMessage>Test error</errorMessage></error></response>"; var response = new Response(HttpStatusCode.InternalServerError, errorXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<InputParameterException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); Assert.That(ex.ResponseBody, Is.EqualTo(errorXml)); Assert.That(ex.Message, Is.EqualTo("Test error")); Assert.That(ex.ErrorCode, Is.EqualTo(ErrorCode.RequiredParameterMissing)); }
public void Should_throw_invalid_resource_exception_for_2001_error_code_with_ok_http_status_code() { const string errorXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"2001\"><errorMessage>Test error</errorMessage></error></response>"; var response = new Response(HttpStatusCode.OK, errorXml); var xmlParser = new ResponseParser<TestObject>(); var ex = Assert.Throws<InvalidResourceException>(() => xmlParser.Parse(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); Assert.That(ex.ResponseBody, Is.EqualTo(errorXml)); Assert.That(ex.Message, Is.EqualTo("Test error")); Assert.That(ex.ErrorCode, Is.EqualTo(ErrorCode.ResourceNotFound)); }
public void can_deserialise_response_user_cards() { var xmlParser = new ResponseParser(new ApiResponseDetector()); var deserializedCards = xmlParser.Parse<Cards>(response); var firstCard = deserializedCards.UserCards[0]; Assert.That(deserializedCards.UserCards.Count(), Is.EqualTo(1)); Assert.That(firstCard.Id, Is.EqualTo(8154430)); Assert.That(firstCard.CardHolderName, Is.EqualTo("MR I HUNT")); Assert.That(firstCard.Type, Is.EqualTo("Visa")); Assert.That(firstCard.Last4Digits, Is.EqualTo("5485")); Assert.That(firstCard.IsoTwoLetterCountryCode, Is.EqualTo("NZ")); Assert.That(firstCard.ExpiryDate, Is.EqualTo("201202")); Assert.That(firstCard.FormatedExpiryDate, Is.EqualTo(new DateTime(2012, 02, 29, 23, 59, 59, 999))); }
public void Should_throw_non_xml_response_exception_for_content_that_appears_XML_but_is_not() { const string badXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?><response status=""ok"">LOL!</hah>"; var response = new Response(HttpStatusCode.OK, badXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo("Response is not xml")); Assert.That(ex.ResponseBody, Is.EqualTo(badXml)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Should_throw_non_xml_response_exception_for_html_ok_response() { const string badXml = "<html><head>Error</head><body>Some random html page<br><hr></body></html>"; var response = new Response(HttpStatusCode.OK, badXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo("Response is not xml")); Assert.That(ex.ResponseBody, Is.EqualTo(badXml)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Error_captures_http_status_code_from_html() { const string badXml = "<html><head>Error</head><body>It did not work<br><hr></body></html>"; var response = new Response(HttpStatusCode.InternalServerError, badXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Should_not_fail_if_xml_is_a_malformed_api_error() { const string badError = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error><errorme></errorme></error></response>"; var response = new Response(HttpStatusCode.OK, badError); var xmlParser = new ResponseParser<TestObject>(); var ex = Assert.Throws<UnrecognisedErrorException>(() => xmlParser.Parse(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); Assert.That(ex.ResponseBody, Is.EqualTo(response.Body)); Assert.That(ex.Message, Is.EqualTo(UnrecognisedErrorException.DEFAULT_ERROR_MESSAGE)); }
public void Detects_html_as_not_xml() { const string badXml = "<html><head>Error</head><body>It did not work<br><hr></body></html>"; var response = new Response(HttpStatusCode.InternalServerError, badXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo("Response is not xml")); Assert.That(ex.ResponseBody, Is.EqualTo(badXml)); }
public void Should_throw_unrecognised_error_exception_if_xml_is_missing_error_message() { const string validXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"123\"></error></response>"; var response = new Response(HttpStatusCode.OK, validXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<UnrecognisedErrorException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex.ResponseBody, Is.EqualTo(response.Body)); Assert.That(ex.Message, Is.EqualTo(UnrecognisedErrorException.DEFAULT_ERROR_MESSAGE)); }
public void Should_throw_non_xml_response_exception_when_response_body_is_empty() { var response = new Response(HttpStatusCode.OK, string.Empty); var xmlSerializer = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<NonXmlResponseException>(() => xmlSerializer.Parse<TestObject>(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); Assert.That(ex.ResponseBody, Is.Empty); }
public void Error_captures_http_status_code_from_html() { const string badXml = "<html><head>Error</head><body>It did not work<br><hr></body></html>"; var response = new Response(HttpStatusCode.InternalServerError, badXml); var xmlParser = new ResponseParser<TestObject>(); var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo("Response is not xml")); Assert.That(ex.ResponseBody, Is.EqualTo(badXml)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Should_handle_plaintext_oauth_fail_with_ok_status() { const string ErrorText = "OAuth authentication error: Not found"; var response = new Response(HttpStatusCode.OK, ErrorText); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<OAuthException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo(ErrorText)); Assert.That(ex.ResponseBody, Is.EqualTo(response.Body)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Should_throw_unrecognised_status_exception_when_deserializing_with_invalid_status() { const string InvalidStatusXmlResponse = "<?xml version=\"1.0\"?><response status=\"fish\" version=\"1.2\"></response>"; var response = new Response(HttpStatusCode.OK, InvalidStatusXmlResponse); var xmlParser = new ResponseParser<TestEmptyObject>(); var ex = Assert.Throws<UnrecognisedStatusException>(() => xmlParser.Parse(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo(UnrecognisedStatusException.DEFAULT_ERROR_MESSAGE)); Assert.That(ex.ResponseBody, Is.EqualTo(InvalidStatusXmlResponse)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Should_handle_plaintext_oauth_fail() { const string ErrorText = "OAuth authentication error: Not authorised - no user credentials provided"; var response = new Response(HttpStatusCode.Unauthorized, ErrorText); var xmlParser = new ResponseParser<TestObject>(); var ex = Assert.Throws<OAuthException>(() => xmlParser.Parse(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo(ErrorText)); Assert.That(ex.ResponseBody, Is.EqualTo(response.Body)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Should_throw_exception_when_deserialize_with_missing_status() { const string MissingStatusXmlResponse = "<?xml version=\"1.0\"?><response version=\"1.2\"></response>"; var response = new Response(HttpStatusCode.OK, MissingStatusXmlResponse); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<UnrecognisedStatusException>(() => xmlParser.Parse<TestEmptyObject>(response)); Assert.That(ex, Is.Not.Null); Assert.That(ex.Message, Is.EqualTo(UnrecognisedStatusException.DEFAULT_ERROR_MESSAGE)); Assert.That(ex.ResponseBody, Is.EqualTo(MissingStatusXmlResponse)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); }
public void Should_throw_argument_null_exception_when_reponse_is_null() { var apiXmlDeserializer = new ResponseParser(new ApiResponseDetector()); Assert.Throws<ArgumentNullException>(() => apiXmlDeserializer.Parse<TestObject>(null)); }
public void Should_throw_unrecognised_error_exception_for_error_code_out_of_range_with_ok_http_status_code() { const string errorXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"42\"><errorMessage>Test error</errorMessage></error></response>"; var response = new Response(HttpStatusCode.OK, errorXml); var xmlParser = new ResponseParser(new ApiResponseDetector()); var ex = Assert.Throws<UnrecognisedErrorException>(() => xmlParser.Parse<TestObject>(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); Assert.That(ex.ResponseBody, Is.EqualTo(errorXml)); Assert.That(ex.Message, Is.EqualTo("Test error")); }
public void Should_throw_non_xml_response_exception_when_response_body_is_null() { var response = new Response(HttpStatusCode.OK, null); var xmlSerializer = new ResponseParser<TestObject>(); var ex = Assert.Throws<NonXmlResponseException>(() => xmlSerializer.Parse(response)); Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode)); Assert.That(ex.ResponseBody, Is.Null); }