Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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"]);
        }
Exemplo n.º 5
0
            public DataPushWorkerFixture()
            {
                HttpClientFactoryMock
                .Setup(t => t.GetHttpClient(It.IsAny <string>(), It.IsAny <string>()))
                .Returns(new HttpClient());

                Instance = new DataPushWorker(HttpClientFactory, ListRetrievalWorker, XmlHelper);
            }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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"));
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }