public void AttemptToGetJsonFromRealButBadUri() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new ApiUriBuilder(), new GzipHandlerWp()); handler.SendRequestAsync( new CountryResolverCommand("test", null) { BaseApiUri = "http://music.nokia.com/gb/en/badurl" }, new MockMusicClientSettings("test", null, null), null, new JsonResponseCallback((Response <JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode.Value, "Expected 404"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void TheEntityIsPlacedOnTheOutgoingStreamInJsonFormatDuringPost() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var stream = new MemoryStream(); request.EndGetRequestStream(Arg.Any <IAsyncResult>()).Returns(c => stream); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null); // act handler.Post(request, new UserContract() { Name = "Paul" }, (code, location) => { }, (uri, exception) => Assert.Fail(exception.Message)); // assert var reader = new StreamReader(new MemoryStream(stream.ToArray())); var data = reader.ReadToEnd().FromJson <UserContract>(); Assert.AreEqual("Paul", data.Name); }
public void AttemptToGetJsonFromRealButBadUri() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new ApiUriBuilder(), new GzipHandlerWp()); handler.SendRequestAsync( new CountryResolverCommand("test", null) { BaseApiUri = "http://music.nokia.com/gb/en/badurl" }, new MockMusicClientSettings("test", null), null, new JsonResponseCallback((Response<JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode.Value, "Expected 404"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
/// <exclude/> async protected Task MakeApiDeleteRequestAsync(Uri uri, ICompanyFileCredentials credentials, CancellationToken cancellationToken) { await RenewOAuthTokensAsync(cancellationToken); var api = new ApiRequestHandler(Configuration, credentials, _keyService.Maybe(_ => _.OAuthResponse)); await api.DeleteAsync(this.WebRequestFactory.Create(uri), cancellationToken); }
public void RequestWithInvalidHeaderCausesException() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com")), new GzipHandlerWp()); handler.SendRequestAsync( new ProductCommand(), new MockMusicClientSettings("test", null, null), null, new JsonResponseCallback((Response <JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); gotResult = true; waiter.Set(); }), new Dictionary <string, string> { { "Referer", @"test" } }); // this should cause the request to be rejected // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void TimeoutDuringEndRequestStreamGivesNoStatusCode() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://localhost:8123/")), new GzipHandlerWp()); handler.SendRequestAsync( new MockApiCommand(), new MockMusicClientSettings("test", null, null), null, new JsonResponseCallback((Response <JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error, status code:" + result.StatusCode); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNull(result.StatusCode, "Expected no status code"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
async public void DuringPostRequest_Async_ExpectedHeadersAreAttached() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act await handler.PostAsync(request, new UserContract() { Name = "Paul" }); // assert Assert.AreEqual("POST", request.Method); Assert.IsTrue(request.Headers[HttpRequestHeader.Authorization].StartsWith("Bearer")); Assert.IsTrue(request.Headers[HttpRequestHeader.AcceptEncoding].Split(new[] { ',' }).Contains("gzip")); Assert.AreEqual("<<clientid>>", request.Headers["x-myobapi-key"]); Assert.AreEqual("v2", request.Headers["x-myobapi-version"]); Assert.AreEqual(Convert.ToBase64String(Encoding.UTF8.GetBytes("user:pass")), request.Headers["x-myobapi-cftoken"]); }
public void AttemptToGetStatusCodeFromRealPost() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com")), new GzipHandlerWp()); handler.SendRequestAsync( new MockApiCommand(), new MockMusicClientSettings("test", null, null), null, new JsonResponseCallback((Response <JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void TimeoutResponseGivesNoStatusCode() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); MusicClient.RequestTimeout = 0; IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com")), new GzipHandlerWp()); handler.SendRequestAsync( new ProductCommand(), new MockMusicClientSettings("test", null, null), null, new JsonResponseCallback((Response <JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error, status code:" + result.StatusCode); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNull(result.StatusCode, "Expected no status code"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.AreEqual(0, MusicClient.RequestTimeout, "Expected timeout to return same value that was set"); Assert.IsTrue(gotResult, "Expected a result flag"); }
public TulingRobotApiResponseBaseMessage Chat(TulingRobotApiRequestMessage requestMessage) { requestMessage.Key = GlobalSettingConfig.TulingRobotApiKey; return(ApiRequestHandler <TulingRobotApiResponseBaseMessage> .ProcessRequest( GlobalSettingConfig.TulingRobotApiAddress, requestMessage)); }
public void TheLocationIsReturnedAfterASuccesfulPut() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", "", HttpStatusCode.OK, "http://localhost/ABC"); var request = factory.Create(new Uri("http://localhost")); var stream = new MemoryStream(); request.EndGetRequestStream(Arg.Any <IAsyncResult>()).Returns(c => stream); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null); string savedLocation = null; // act handler.Put(request, new UserContract() { Name = "Paul" }, (code, location) => { savedLocation = location; }, (uri, exception) => Assert.Fail(exception.Message)); // assert Assert.AreEqual("http://localhost/ABC", savedLocation); }
public void RegisterAll_ShouldRegisterTypesWithDefaultName_WhenAssemblyHasValidControllers() { var handler = new ApiRequestHandler("test"); var type = typeof(ValidController); handler.RegisterAll(Assembly.GetAssembly(type)); Assert.AreEqual(type.FullName, handler.GetControllerType("Valid").FullName); }
async public Task TheEntityIsPlacedOnTheOutgoingStreamInJsonFormatDuringPostAsync() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var stream = new MemoryStream(); #pragma warning disable 1998 request.GetRequestStreamAsync().Returns(async c => (Stream)stream); #pragma warning restore 1998 var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null); // act await handler.PostAsync(request, new UserContract() { Name = "Paul" }); // assert var reader = new StreamReader(new MemoryStream(stream.ToArray())); var data = reader.ReadToEnd().FromJson <UserContract>(); Assert.AreEqual("Paul", data.Name); }
public void Register_ShouldRegisterType_WhenTypeIsValid() { var handler = new ApiRequestHandler("test"); var type = typeof(ValidController); handler.Register("Test", type); Assert.AreEqual(type, handler.GetControllerType("Test")); }
public void DuringGetRequestExpectedHeadersAreAttached(bool supplyCredentials, bool supplyOAuth) { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", new UserContract() { Name = "David" }.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), supplyCredentials ? new CompanyFileCredentials("user", "pass") : null, supplyOAuth ? new OAuthTokens() : null); // act handler.Get <UserContract>(request, (code, response) => { }, (uri, exception) => Assert.Fail(exception.Message), null); // assert AssertStandardHeaders(supplyCredentials, supplyOAuth, request); var version = typeof(ApiRequestHandler).Assembly.GetName().Version.ToString(3); var userAgent = request.Headers[HttpRequestHeader.UserAgent]; Assert.IsTrue(userAgent.Contains(string.Format("MYOB-ARL-SDK/{0}", version))); Assert.IsNull(request.Headers[HttpRequestHeader.IfNoneMatch]); }
/// <exclude/> protected void MakeApiGetRequestDelegate <T>(Uri uri, ICompanyFileCredentials credentials, Action <HttpStatusCode, T> onComplete, Action <Uri, Exception> onError) where T : class { WrapApiRequestWithOAuthRenew(response => { var api = new ApiRequestHandler(Configuration, credentials, response); api.Get(WebRequestFactory.Create(uri), onComplete, onError); }, onError); }
protected void MakeApiDeleteRequestAsync(Uri uri, ICompanyFileCredentials credentials, Action <HttpStatusCode> onComplete, Action <Uri, Exception> onError) { WrapApiRequestWithOAuthRenew(response => { var api = new ApiRequestHandler(Configuration, credentials, response); api.Delete(WebRequestFactory.Create(uri), onComplete, onError); }, onError); }
/// <exclude/> async protected Task <T> MakeApiGetRequestAsync <T>(Uri uri, ICompanyFileCredentials credentials, CancellationToken cancellationToken) where T : class { await RenewOAuthTokensAsync(cancellationToken); var api = new ApiRequestHandler(Configuration, credentials, GetOAuthResponse()); var data = await api.GetAsync <T>(this.WebRequestFactory.Create(uri), cancellationToken); return(data.Item2); }
/// <exclude/> async protected Task <string> MakeApiPutRequestAsync <T>(Uri uri, T entity, ICompanyFileCredentials credentials, CancellationToken cancellationToken) where T : class { await RenewOAuthTokensAsync(cancellationToken); var api = new ApiRequestHandler(Configuration, credentials, _keyService.Maybe(_ => _.OAuthResponse)); var res = await api.PutAsync(WebRequestFactory.Create(uri), entity, cancellationToken); return(res); }
/// <exclude/> protected void MakeApiPutRequestDelegate <TRequest, TResponse>(Uri uri, TRequest entity, ICompanyFileCredentials credentials, Action <HttpStatusCode, string, TResponse> onComplete, Action <Uri, Exception> onError) where TRequest : class where TResponse : class { WrapApiRequestWithOAuthRenew(response => { var api = new ApiRequestHandler(Configuration, credentials, response); api.Put(WebRequestFactory.Create(uri), entity, onComplete, onError); }, onError); }
public async System.Threading.Tasks.Task <List <Game> > ToGameListAsync(ApiRequestHandler handler) { List <Game> games = new List <Game>(); foreach (var id in Id) { games.Add(await handler.GetGameByIdAsync(id.Idv)); } return(games); }
public ActionResult Sms(string interfacename) { //Log.Info("接收到请求"); StreamReader reader = new StreamReader(Request.InputStream, Encoding.UTF8); string data = reader.ReadToEnd(); //Log.Info("interfacename=" + interfacename + "; data=" + data); ApiRequestHandler api = new ApiRequestHandler(); var result = api.Handler(interfacename, data); return(Json(result)); }
public async Task ServerTimeOffsetIsSetForMulitpleRequests() { const int EPSILON = 25; ////25 hours IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com"))); var command = new MockApiCommand(null, HttpMethod.Head); await handler.SendRequestAsync(command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); await handler.SendRequestAsync(command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); Assert.IsTrue(Math.Abs(handler.ServerTimeUtc.Subtract(DateTime.Now).TotalHours) <= EPSILON); }
public void Register_ShouldThrowException_WhenTypeDoesNotHaveParameterlessConstructor() { try { var handler = new ApiRequestHandler("test"); handler.Register("test", typeof(BadController)); } catch (ApplicationException) { return; } Assert.Fail("ApplicationExcpetion was not thrown"); }
public void Register_ShouldThrowException_WhenTypeIsNotApiController() { try { var handler = new ApiRequestHandler("test"); handler.Register("test", typeof(int)); } catch (ApplicationException) { return; } Assert.Fail("ApplicationExcpetion was not thrown"); }
public void DuringGetRequest_IfNoneMatchHeaderAttached_IfSupplyETag() { // arrange var eTag = "123456789"; var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", new UserContract() { Name = "David" }.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act handler.Get<UserContract>(request, (code, response) => { }, (uri, exception) => Assert.Fail(exception.Message), eTag); // assert Assert.AreEqual(eTag, request.Headers[HttpRequestHeader.IfNoneMatch]); }
async public void DuringGetRequest_Async_ExpectedHeadersAreAttached(bool supplyCredentials, bool supplyOAuth) { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", new UserContract() { Name = "David" }.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), supplyCredentials ? new CompanyFileCredentials("user", "pass") : null, supplyOAuth ? new OAuthTokens() : null); // act var res = await handler.GetAsync<UserContract>(request, null); // assert AssertStandardHeaders(supplyCredentials, supplyOAuth, request); Assert.IsNull(request.Headers[HttpRequestHeader.IfNoneMatch]); }
public async Task ServerOffsetGotSet(int clientDateOffset, bool expectedResult) { const int EPSILON = 25; ////25 hours IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com"))); var command = new MockApiCommand(null, HttpMethod.Head); await handler.SendRequestAsync( command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); Assert.AreEqual(expectedResult, Math.Abs(handler.ServerTimeUtc.Subtract(DateTime.Now.AddHours(clientDateOffset)).TotalHours) <= EPSILON); }
public async Task SslCertFailureResultsInSendFailureException() { // Arrange var mockHttpClientProxy = new MockHttpClientRequestProxy(); mockHttpClientProxy.SetupException(new WebException("Message", WebExceptionStatus.SendFailure)); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com")), null, mockHttpClientProxy); var rawMessage = "This is the raw body of the message"; var command = new MockApiCommand(rawMessage, HttpMethod.Head, true); // Act var response = await handler.SendRequestAsync(command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); // Assert Assert.IsFalse(response.Succeeded); Assert.IsTrue(response.Error is SendFailureException); }
public async Task AttemptToGetJsonFromBadHttpUrlToEnsureWebExceptionCaught() { IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://baduritesting.co"))); var command = new ProductCommand(); var result = await handler.SendRequestAsync( command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); }
async public Task DuringDeleteRequest_Async_ExpectedHeadersAreAttached(bool supplyCredentials, bool supplyOAuth) { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), supplyCredentials ? new CompanyFileCredentials("user", "pass") : null, supplyOAuth ? new OAuthTokens() : null); // act await handler.DeleteAsync(request); // assert Assert.AreEqual("DELETE", request.Method); AssertStandardHeaders(supplyCredentials, supplyOAuth, request); }
public async Task AttemptToGetStatusCodeFromRealPost() { IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com"))); var command = new MockApiCommand(); var result = await handler.SendRequestAsync( command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); }
public async Task TimeoutDuringEndRequestStreamGivesNoStatusCode() { IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://localhost:8123/"))); var command = new MockApiCommand(); var result = await handler.SendRequestAsync( command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error, status code:" + result.StatusCode); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNull(result.StatusCode, "Expected no status code"); }
public void PutAsyncRequest_Return_Response() { // arrange var expected = new ExpectedResult { UID = Guid.NewGuid() }; var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", expected.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act var receivedEntity = handler.PutAsync <Parameter, ExpectedResult>(request, new Parameter()).Result; // assert Assert.AreEqual(expected.UID, receivedEntity.UID); }
async public Task DuringGetRequest_Async_IfNoneMatchHeaderAttached_IfSupplyETag() { // arrange var eTag = "123456789"; var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", new UserContract() { Name = "David" }.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act var res = await handler.GetAsync <UserContract>(request, eTag); // assert Assert.AreEqual(eTag, request.Headers[HttpRequestHeader.IfNoneMatch]); }
async public void DuringGetRequest_Async_ExpectedHeadersAreAttached() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", new UserContract() { Name = "David" }.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act var res = await handler.GetAsync<UserContract>(request); // assert Assert.IsTrue(request.Headers[HttpRequestHeader.Authorization].StartsWith("Bearer")); Assert.IsTrue(request.Headers[HttpRequestHeader.AcceptEncoding].Split(new[] { ',' }).Contains("gzip")); Assert.AreEqual("<<clientid>>", request.Headers["x-myobapi-key"]); Assert.AreEqual("v2", request.Headers["x-myobapi-version"]); Assert.AreEqual(Convert.ToBase64String(Encoding.UTF8.GetBytes("user:pass")), request.Headers["x-myobapi-cftoken"]); }
public async Task AttemptToGetStringFromRealUri() { IApiRequestHandler handler = new ApiRequestHandler(new ApiUriBuilder()); var command = new MockMusicClientCommand() { BaseApiUri = "http://mixrad.io/gb/en/badurl" }; var result = await handler.SendRequestAsync( command, new MockMusicClientSettings("test", "us", null), null, command.HandleRawData, null, null); Assert.IsNotNull(result, "Expected a result"); Assert.IsNull(result.Error, "Expected no error"); Assert.IsNotNull(result.Result, "Expected a result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode.Value, "Expected 404"); }
public async Task NullResponseWithoutMixRadioHeaderRaisesNetworkLimitedException() { IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com"))); var command = new MockApiCommand(null, HttpMethod.Head); var result = await handler.SendRequestAsync( command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, null, null); Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); Assert.IsInstanceOf <NetworkLimitedException>(result.Error, "Expected a NetworkLimitedException"); }
public async Task RequestWithValidHeaderIsSuccessful() { IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com"))); var command = new ProductCommand(); var result = await handler.SendRequestAsync( command, new MockMusicClientSettings("test", null, null), null, command.HandleRawData, new Dictionary <string, string> { { "Custom", @"test" } }, null); Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); }
public void DuringDeleteRequestExpectedHeadersAreAttached() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act handler.Delete(request, (code) => { }, (uri, exception) => Assert.Fail(exception.Message)); // assert Assert.AreEqual("DELETE", request.Method); Assert.IsTrue(request.Headers[HttpRequestHeader.Authorization].StartsWith("Bearer")); Assert.IsTrue(request.Headers[HttpRequestHeader.AcceptEncoding].Split(new[] { ',' }).Contains("gzip")); Assert.AreEqual("<<clientid>>", request.Headers["x-myobapi-key"]); Assert.AreEqual("v2", request.Headers["x-myobapi-version"]); Assert.AreEqual(Convert.ToBase64String(Encoding.UTF8.GetBytes("user:pass")), request.Headers["x-myobapi-cftoken"]); }
public void DuringGetRequestExpectedHeadersAreAttached(bool supplyCredentials, bool supplyOAuth) { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", new UserContract(){Name = "David"}.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), supplyCredentials ? new CompanyFileCredentials("user", "pass") : null, supplyOAuth ? new OAuthTokens() : null); // act handler.Get<UserContract>(request, (code, response) => { }, (uri, exception) => Assert.Fail(exception.Message), null); // assert AssertStandardHeaders(supplyCredentials, supplyOAuth, request); var version = typeof (ApiRequestHandler).Assembly.GetName().Version.ToString(3); var userAgent = request.Headers[HttpRequestHeader.UserAgent]; Assert.IsTrue(userAgent.Contains(string.Format("MYOB-ARL-SDK/{0}", version))); Assert.IsNull(request.Headers[HttpRequestHeader.IfNoneMatch]); }
public void AttemptToGetJsonFromBadHttpUrlToEnsureWebExceptionCaught() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://baduritesting.co")), new GzipHandlerWp()); handler.SendRequestAsync( new ProductCommand(), new MockMusicClientSettings("test", null), null, new JsonResponseCallback((Response<JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void GetJsonFromLocalFileToTestSuccessfulRequestAndBadJsonHandling() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new LocalFileUriBuilder("bad-result.json"), new GzipHandlerWp()); handler.SendRequestAsync( new ProductCommand(), new MockMusicClientSettings("test", null, null), null, new JsonResponseCallback((Response<JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(1000); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void TheLocationIsReturnedAfterASuccesfulPut() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", "", HttpStatusCode.OK, "http://localhost/ABC"); var request = factory.Create(new Uri("http://localhost")); var stream = new MemoryStream(); request.EndGetRequestStream(Arg.Any<IAsyncResult>()).Returns(c => stream); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null); string savedLocation = null; // act handler.Put(request, new UserContract() { Name = "Paul" }, (code, location) => { savedLocation = location; }, (uri, exception) => Assert.Fail(exception.Message)); // assert Assert.AreEqual("http://localhost/ABC", savedLocation); }
async public void TheEntityIsPlacedOnTheOutgoingStreamInJsonFormatDuringPostAsync() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var stream = new MemoryStream(); request.GetRequestStreamAsync().Returns(async c => (Stream)stream); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null); // act await handler.PostAsync(request, new UserContract() { Name = "Paul" }); // assert var reader = new StreamReader(new MemoryStream(stream.ToArray())); var data = reader.ReadToEnd().FromJson<UserContract>(); Assert.AreEqual("Paul", data.Name); }
public void TheEntityIsPlacedOnTheOutgoingStreamInJsonFormatDuringPost() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var stream = new MemoryStream(); request.EndGetRequestStream(Arg.Any<IAsyncResult>()).Returns(c => stream); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null); // act handler.Post(request, new UserContract() { Name = "Paul" }, (code, location) => { }, (uri, exception) => Assert.Fail(exception.Message)); // assert var reader = new StreamReader(new MemoryStream(stream.ToArray())); var data = reader.ReadToEnd().FromJson<UserContract>(); Assert.AreEqual("Paul", data.Name); }
public void PutAsyncRequest_Return_Response() { // arrange var expected = new ExpectedResult { UID = Guid.NewGuid() }; var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", expected.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act var receivedEntity = handler.PutAsync<Parameter, ExpectedResult>(request, new Parameter()).Result; // assert Assert.AreEqual(expected.UID, receivedEntity.UID); }
async public void DuringPostRequest_Async_ExpectedHeadersAreAttached(bool supplyCredentials, bool supplyOAuth) { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), supplyCredentials ? new CompanyFileCredentials("user", "pass") : null, supplyOAuth ? new OAuthTokens() : null); // act await handler.PostAsync(request, new UserContract() { Name = "Paul" }); // assert Assert.AreEqual("POST", request.Method); AssertStandardHeaders(supplyCredentials, supplyOAuth, request); }
public void PostRequest_Return_Response() { // arrange var expected = new ExpectedResult { UID = Guid.NewGuid() }; var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", expected.ToJson()); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act ExpectedResult receivedEntity = null; handler.Post<Parameter, ExpectedResult>(request, new Parameter(), (code, location, response) => { receivedEntity = response; }, (uri, exception) => Assert.Fail(exception.Message)); // assert Assert.AreEqual(expected.UID, receivedEntity.UID); }
public void TimeoutDuringEndRequestStreamGivesNoStatusCode() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://localhost:8123/")), new GzipHandlerWp()); handler.SendRequestAsync( new MockApiCommand(), new MockMusicClientSettings("test", null), null, new JsonResponseCallback((Response<JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error, status code:" + result.StatusCode); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNull(result.StatusCode, "Expected no status code"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void Ctor_ShouldSetPrefix() { var handler = new ApiRequestHandler("/test/"); Assert.AreEqual("/test/", handler.Prefix); }
public void AuthorizationHeaderNotAppliedWhenClientCertificateAttached() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", new UserContract() { Name = "David" }.ToJson()); var request = factory.Create(new Uri("http://localhost")); (request as HttpWebRequest).ClientCertificates.Add(new X509Certificate()); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), new CompanyFileCredentials("user", "pass")); // act handler.Get<UserContract>(request, (code, response) => { }, (uri, exception) => Assert.Fail(exception.Message), null); // assert Assert.IsNull(request.Headers[HttpRequestHeader.Authorization]); }
public void TimeoutResponseGivesNoStatusCode() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); MusicClient.RequestTimeout = 0; IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com")), new GzipHandlerWp()); handler.SendRequestAsync( new ProductCommand(), new MockMusicClientSettings("test", null), null, new JsonResponseCallback((Response<JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error, status code:" + result.StatusCode); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNull(result.StatusCode, "Expected no status code"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.AreEqual(0, MusicClient.RequestTimeout, "Expected timeout to return same value that was set"); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void AttemptToGetStatusCodeFromRealPost() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com")), new GzipHandlerWp()); handler.SendRequestAsync( new MockApiCommand(), new MockMusicClientSettings("test", null), null, new JsonResponseCallback((Response<JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); gotResult = true; waiter.Set(); })); // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
async public void TheLocationIsReturnedAfterASuccesfulPutAsync() { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", "", HttpStatusCode.OK, "http://localhost/ABC"); var request = factory.Create(new Uri("http://localhost")); var stream = new MemoryStream(); request.EndGetRequestStream(Arg.Any<IAsyncResult>()).Returns(c => stream); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), null); // act var res = await handler.PutAsync(request, new UserContract() { Name = "Paul" }); // assert Assert.AreEqual("http://localhost/ABC", res); }
public void RequestWithInvalidHeaderCausesException() { bool gotResult = false; ManualResetEvent waiter = new ManualResetEvent(false); IApiRequestHandler handler = new ApiRequestHandler(new TestHttpUriBuilder(new Uri("http://www.nokia.com")), new GzipHandlerWp()); handler.SendRequestAsync( new ProductCommand(), new MockMusicClientSettings("test", null), null, new JsonResponseCallback((Response<JObject> result) => { Assert.IsNotNull(result, "Expected a result"); Assert.IsNotNull(result.Error, "Expected an error"); Assert.IsNull(result.Result, "Expected no result object"); Assert.IsNotNull(result.StatusCode, "Expected a status code - this test can fail when you run tests with no internet connection!"); gotResult = true; waiter.Set(); }), new Dictionary<string, string> { { "Referer", @"test" } }); // this should cause the request to be rejected // Wait for the response and parsing... waiter.WaitOne(5000); Assert.IsTrue(gotResult, "Expected a result flag"); }
public void DuringDeleteRequestExpectedHeadersAreAttached(bool supplyCredentials, bool supplyOAuth) { // arrange var factory = new TestWebRequestFactory(); factory.RegisterResultForUri("http://localhost", ""); var request = factory.Create(new Uri("http://localhost")); var handler = new ApiRequestHandler(new ApiConfiguration("<<clientid>>", "<<clientsecret>>", "<<redirecturl>>"), supplyCredentials ? new CompanyFileCredentials("user", "pass"): null, supplyOAuth ? new OAuthTokens() : null); // act handler.Delete(request, (code) => { }, (uri, exception) => Assert.Fail(exception.Message)); // assert Assert.AreEqual("DELETE", request.Method); AssertStandardHeaders(supplyCredentials, supplyOAuth, request); }
public void Ctor_ShouldAppendSlashToPrefix() { var handler = new ApiRequestHandler("/test"); Assert.AreEqual("/test/", handler.Prefix); }