public async Task DoesRefreshExpiredTokenTest() { User newUser = new User() { UserId = user.UserId, AccessToken = GenerateAccessToken(user.UserId, DateTime.Today.AddDays(1)), RefreshToken = GenerateRefreshToken().Token }; Card card = new Card() { CardId = 1 }; HttpClientFactoryMock mock = CreateMock <object>(HttpStatusCode.OK, null); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; user.AccessToken = GenerateAccessToken(user.UserId, DateTime.Now.AddMilliseconds(100)); HttpResponseMessage responseMessage = new HttpResponseMessage(HttpStatusCode.OK); string json = JsonConvert.SerializeObject(new Card(), new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }); StringContent stringContent = new StringContent(json); responseMessage.Content = stringContent; mock.ResponseMessages.Push(responseMessage); responseMessage = new HttpResponseMessage(HttpStatusCode.OK); json = JsonConvert.SerializeObject(newUser, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }); stringContent = new StringContent(json); responseMessage.Content = stringContent; mock.ResponseMessages.Push(responseMessage); await Task.Delay(100); ApiReply <Card> reply = await connector.PutAsync(card); TestApiReply(reply, true, null, HttpStatusCode.OK); HttpRequestMessage request = TestRequest(mock, "Cards", HttpMethod.Put, newUser.AccessToken); string requestBody = await request.Content.ReadAsStringAsync(); Card card1 = JsonConvert.DeserializeObject <Card>(requestBody); Assert.AreEqual(card.CardId, card1.CardId); request = TestRequest(mock, "Users/RefreshToken", HttpMethod.Post, user.AccessToken); requestBody = await request.Content.ReadAsStringAsync(); RefreshRequest refreshRequest = JsonConvert.DeserializeObject <RefreshRequest>(requestBody); Assert.AreEqual(user.AccessToken, refreshRequest.AccessToken); Assert.AreEqual(user.RefreshToken, refreshRequest.RefreshToken); Assert.AreEqual(newUser.AccessToken, connector.CurrentUser.AccessToken); Assert.AreEqual(newUser.RefreshToken, connector.CurrentUser.RefreshToken); }
public async Task PutEntityTest() { Card card = new Card() { CardId = 1 }; HttpClientFactoryMock mock = CreateMock <object>(HttpStatusCode.OK, null); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; HttpResponseMessage responseMessage = new HttpResponseMessage(HttpStatusCode.OK); string json = JsonConvert.SerializeObject(new Card(), new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }); StringContent stringContent = new StringContent(json); responseMessage.Content = stringContent; mock.ResponseMessages.Push(responseMessage); ApiReply reply = await connector.PutAsync(card); TestApiReply(reply, true, null, HttpStatusCode.OK); HttpRequestMessage request = TestRequest(mock, "Cards", HttpMethod.Put, user.AccessToken); string requestBody = await request.Content.ReadAsStringAsync(); Card card1 = JsonConvert.DeserializeObject <Card>(requestBody); Assert.AreEqual(card.CardId, card1.CardId); }
public async Task PostErrorTest() { Card card = new Card() { CardId = 1 }; HttpClientFactoryMock mock = CreateMock(HttpStatusCode.InternalServerError, new NotifyException("test-error")); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; ApiReply reply = await connector.PostAsync("test", card); TestApiReply(reply, false, "test-error", HttpStatusCode.InternalServerError); mock = CreateMock(HttpStatusCode.InternalServerError, new NotifyException("test-error")); connector = new ApiConnector(mock) { CurrentUser = user }; ApiReply <Card> reply1 = await connector.PostAsync <Card>("test", card); TestApiReply(reply, false, "test-error", HttpStatusCode.InternalServerError); Assert.IsNull(reply1.Result); }
public async Task GetEntitiesTest() { Card card = new Card() { CardId = 1 }; List <Card> cards = new List <Card>() { card }; HttpClientFactoryMock mock = CreateMock(HttpStatusCode.OK, cards); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; Dictionary <string, object> parameters = new Dictionary <string, object>() { { "test", 1 } }; ApiReply <List <Card> > reply = await connector.GetAsync <Card>(parameters); TestApiReply(reply, true, null, HttpStatusCode.OK); Assert.AreEqual(card.CardId, reply.Result[0].CardId); HttpRequestMessage request = TestRequest(mock, "Cards", HttpMethod.Get, user.AccessToken); string requestBody = await request.Content.ReadAsStringAsync(); parameters = JsonConvert.DeserializeObject <Dictionary <string, object> >(requestBody); Assert.AreEqual((long)1, parameters["test"]); }
public DataPushWorkerFixture() { HttpClientFactoryMock .Setup(t => t.GetHttpClient(It.IsAny <string>(), It.IsAny <string>())) .Returns(new HttpClient()); Instance = new DataPushWorker(HttpClientFactory, ListRetrievalWorker, XmlHelper); }
private HttpRequestMessage TestRequest(HttpClientFactoryMock mock, string address, HttpMethod method, string accessToken) { HttpRequestMessage request = mock.RequestMessages.Pop(); Assert.AreEqual(mock.BaseAddress + address, request.RequestUri.ToString()); Assert.AreEqual(method, request.Method); Assert.AreEqual(accessToken, request.Headers.Authorization.Parameter); return(request); }
public async Task GetSingleEntityErrorTest() { HttpClientFactoryMock mock = CreateMock(HttpStatusCode.InternalServerError, new NotifyException("test-error")); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; ApiReply <Card> reply = await connector.GetAsync <Card>(1); TestApiReply(reply, false, "test-error", HttpStatusCode.InternalServerError); Assert.IsNull(reply.Result); }
public void HttpHandlerGetJsonBadFormatShouldReturnThrowException() { // ARRANGE var response = "{\"json_prop\": \"hello world\"}"; HttpClientFactoryMock factoryMock = new HttpClientFactoryMock(); factoryMock.SetResponse(response); var httpHandler = new HttpHandler(factoryMock.Object); // ACT & ASSERT var result = Assert.ThrowsAsync <JsonException>(() => httpHandler.GetJson <SerializedReturn>("http://fake.com")); }
public async Task DeleteEntityErrorTest() { Card card = new Card() { CardId = 1 }; HttpClientFactoryMock mock = CreateMock(HttpStatusCode.InternalServerError, new NotifyException("test-error")); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; ApiReply reply = await connector.DeleteAsync(card); TestApiReply(reply, false, "test-error", HttpStatusCode.InternalServerError); }
private HttpClientFactoryMock CreateMock <TContent>(HttpStatusCode statusCode, TContent content) { HttpResponseMessage responseMessage = new HttpResponseMessage(statusCode); HttpClientFactoryMock mock = new HttpClientFactoryMock(); if (content != null) { string json = JsonConvert.SerializeObject(content, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }); StringContent stringContent = new StringContent(json); responseMessage.Content = stringContent; } mock.ResponseMessages.Push(responseMessage); return(mock); }
public async Task GetEntitiesErrorTest() { HttpClientFactoryMock mock = CreateMock(HttpStatusCode.InternalServerError, new NotifyException("test-error")); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; Dictionary <string, object> parameters = new Dictionary <string, object>() { { "test", 1 } }; ApiReply <List <Card> > reply = await connector.GetAsync <Card>(parameters); TestApiReply(reply, false, "test-error", HttpStatusCode.InternalServerError); Assert.IsNull(reply.Result); }
public async Task HttpHandlerGetJsonShouldReturnCorrectContent() { // ARRANGE var response = "{\"json_prop\": \"hello world\"}"; HttpClientFactoryMock factoryMock = new HttpClientFactoryMock(); factoryMock.SetResponse(response); var httpHandler = new HttpHandler(factoryMock.Object); // ACT var result = await httpHandler.GetJson <SerializedReturn>("http://fake.com").ConfigureAwait(false); // ASSERT Assert.Equal("hello world", result?.Property); }
public async Task HttpHandlerPostJsonNoReturnShouldReturnCorrectContent() { // ARRANGE var response = "{\"json_prop\": \"hello world\"}"; HttpClientFactoryMock factoryMock = new HttpClientFactoryMock(); factoryMock.SetResponse(response); var httpHandler = new HttpHandler(factoryMock.Object); // ACT await httpHandler.PostJson("http://fake.com", new { posted = "some value" }).ConfigureAwait(false); // ASSERT Assert.Equal("{\"posted\":\"some value\"}", factoryMock?.MessageHandler?.RequestContent); }
public async Task GetSingleEntityTest() { Card card = new Card() { CardId = 1 }; HttpClientFactoryMock mock = CreateMock(HttpStatusCode.OK, card); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; ApiReply <Card> reply = await connector.GetAsync <Card>(1); TestApiReply(reply, true, null, HttpStatusCode.OK); Assert.AreEqual(card.CardId, reply.Result.CardId); TestRequest(mock, "Cards/1", HttpMethod.Get, user.AccessToken); }
public async Task DeleteEntityTest() { Card card = new Card() { CardId = 1 }; HttpClientFactoryMock mock = CreateMock <object>(HttpStatusCode.OK, null); ApiConnector connector = new ApiConnector(mock) { CurrentUser = user }; ApiReply reply = await connector.DeleteAsync(card); TestApiReply(reply, true, null, HttpStatusCode.OK); HttpRequestMessage request = TestRequest(mock, "Cards", HttpMethod.Delete, user.AccessToken); string requestBody = await request.Content.ReadAsStringAsync(); Card card1 = JsonConvert.DeserializeObject <Card>(requestBody); Assert.AreEqual(card.CardId, card1.CardId); }