Esempio n. 1
0
        public async Task GetPageComments_ShouldReturnOneComment_WhenCommentsListHasOneComment()
        {
            // Arrange
            var comments = new FacebookCommentsPage
            {
                Comments = new List <FacebookComment>
                {
                    new FacebookComment {
                        Id = "id"
                    }
                }
            };

            _httpMockHandler.When(FacebookOkCommentsUrlPattern)
            .Respond(HttpStatusCode.OK, "application/json", "{}");
            _jsonParser.ParseJsonResponse <FacebookCommentsPage>(Arg.Any <string>())
            .Returns(comments, null, null);     // null stops recursion
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            var result = await wrapper.GetPageCommentsAsync("accessToken", "pageId");

            // Assert
            result.Should().HaveCount(1);
            result.FirstOrDefault().Children.Should().BeEmpty();
        }
Esempio n. 2
0
        public void GetAccessToken_ShouldThrowArgumentNullException_WhenAppSecretIsInvalid(string appSecret)
        {
            // Arrange
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            Func <Task> action = async() => await wrapper.GetAccessTokenAsync("appId", appSecret);

            // Assert
            action.ShouldThrow <ArgumentNullException>();
        }
Esempio n. 3
0
        public void GetPageComments_ShouldThrowArgumentNullException_WhenPageIdIsInvalid(string pageId)
        {
            // Arrange
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            Func <Task> action = async() => await wrapper.GetPageCommentsAsync("accessToken", pageId);

            // Assert
            action.ShouldThrow <ArgumentNullException>();
        }
Esempio n. 4
0
        public void GetAccessToken_ShouldThrowFacebookApiException_WhenClientReponseIsNotSuccess()
        {
            // Arrange
            _httpMockHandler.When("*")
            .Respond(HttpStatusCode.InternalServerError, "application/json", string.Empty);
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            Func <Task> action = async() => await wrapper.GetAccessTokenAsync("appId", "appSecret");

            // Assert
            action.ShouldThrow <FacebookApiException>()
            .And.Message.Should().Be("Http client response was not successful.");
        }
Esempio n. 5
0
        public async Task GetPageComments_ShouldReturnEmptyList_WhenPageIsNull()
        {
            // Arrange
            _httpMockHandler.When(FacebookOkCommentsUrlPattern)
            .Respond(HttpStatusCode.OK, "application/json", "{}");
            _jsonParser.ParseJsonResponse <FacebookCommentsPage>(Arg.Any <string>()).Returns(null as FacebookCommentsPage);
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            var result = await wrapper.GetPageCommentsAsync("accessToken", "pageId");

            // Assert
            result.Should().BeEmpty();
        }
Esempio n. 6
0
        public void GetPageComments_ShouldThrowFacebookApiException_WhenClientReponseContentIsEmpty()
        {
            // Arrange
            _httpMockHandler.When(FacebookOkCommentsUrlPattern)
            .Respond(HttpStatusCode.OK, "application/json", string.Empty);
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            Func <Task> action = async() => await wrapper.GetPageCommentsAsync("accessToken", "pageId");

            // Assert
            action.ShouldThrow <FacebookApiException>()
            .And.Message.Should().Be("Http client response is empty.");
        }
Esempio n. 7
0
        public void GetAccessToken_ShouldThrowFacebookApiException_WhenClientReponseParsingReturnsNull()
        {
            // Arrange
            _httpMockHandler.When("*")
            .Respond(HttpStatusCode.OK, "application/json", "content");
            _jsonParser.ParseJsonResponse <FacebookAccessToken>(Arg.Any <string>())
            .Returns(null as FacebookAccessToken);
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            Func <Task> action = async() => await wrapper.GetAccessTokenAsync("appId", "appSecret");

            // Assert
            action.ShouldThrow <FacebookApiException>()
            .And.Message.Should().Be("Token parsing failed.");
        }
Esempio n. 8
0
        public async Task GetPageComments_ShouldReturnOneCommentWithOneChild_WhenCommentsListHasOneCommentWithReply()
        {
            // Arrange
            const string commentId = "comment";
            const string replyId   = "reply";
            var          comments  = new FacebookCommentsPage
            {
                Comments = new List <FacebookComment>
                {
                    new FacebookComment
                    {
                        Id = commentId
                    }
                }
            };

            var comments2 = new FacebookCommentsPage
            {
                Comments = new List <FacebookComment>
                {
                    new FacebookComment
                    {
                        Id = replyId
                    }
                }
            };

            _httpMockHandler.When(FacebookOkCommentsUrlPattern)
            .Respond(HttpStatusCode.OK, "application/json", "{}");
            _jsonParser.ParseJsonResponse <FacebookCommentsPage>(Arg.Any <string>())
            .Returns(comments, comments2, null);     // second call returns reply, and null stops recursion
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            var result = await wrapper.GetPageCommentsAsync("accessToken", "pageId");

            // Assert
            result.Should().HaveCount(1);
            result.FirstOrDefault().Id.Should().Be(commentId);
            result.FirstOrDefault().Children.Should().HaveCount(1);
            result.FirstOrDefault().Children.FirstOrDefault().Id.Should().Be(replyId);
        }
Esempio n. 9
0
        public async Task GetAccessToken_ShouldReturnAccessToken_WhenClientReponseContentContainsAccessToken()
        {
            // Arrange
            const string accessToken = "123";

            _httpMockHandler.When("https://graph.facebook.com/oauth/access_token*")
            .Respond(HttpStatusCode.OK, "application/json", "content");
            _jsonParser.ParseJsonResponse <FacebookAccessToken>(Arg.Any <string>())
            .Returns(new FacebookAccessToken
            {
                AccessToken = accessToken
            });
            var wrapper = new FacebookCommentsApiWrapper(_httpClientFactory, _jsonParser);

            // Act
            var result = await wrapper.GetAccessTokenAsync("appId", "appSecret");

            // Assert
            result.Should().Be(accessToken);
        }