Beispiel #1
0
        public async Task PostAsync_ModelStateInvalid_ValidateModelStateDisabled()
        {
            // arrange
            var resource    = new Resource();
            var serviceMock = new Mock <ICreateService <Resource> >();

            _jsonApiContextMock.Setup(a => a.ApplyContext <Resource>(It.IsAny <BaseJsonApiController <Resource> >())).Returns(_jsonApiContextMock.Object);
            _jsonApiContextMock.SetupGet(a => a.Options).Returns(new JsonApiOptions {
                ValidateModelState = false
            });
            var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, create: serviceMock.Object);

            serviceMock.Setup(m => m.CreateAsync(It.IsAny <Resource>())).ReturnsAsync(resource);
            controller.ControllerContext = new Microsoft.AspNetCore.Mvc.ControllerContext {
                HttpContext = new DefaultHttpContext()
            };

            // act
            var response = await controller.PostAsync(resource);

            // assert
            serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Once);
            VerifyApplyContext();
            Assert.IsNotType <BadRequestObjectResult>(response);
        }
Beispiel #2
0
        public async Task PatchAsync_ModelStateInvalid_ValidateModelStateEnabled()
        {
            // arrange
            const int id          = 0;
            var       resource    = new Resource();
            var       serviceMock = new Mock <IUpdateService <Resource> >();

            _jsonApiContextMock.SetupGet(a => a.ContextGraph).Returns(_contextGraphMock.Object);
            _contextGraphMock.Setup(a => a.GetPublicAttributeName <Resource>("TestAttribute")).Returns("test-attribute");
            _jsonApiContextMock.Setup(a => a.ApplyContext <Resource>(It.IsAny <BaseJsonApiController <Resource> >())).Returns(_jsonApiContextMock.Object);
            _jsonApiContextMock.SetupGet(a => a.Options).Returns(new JsonApiOptions {
                ValidateModelState = true
            });
            var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, update: serviceMock.Object);

            controller.ModelState.AddModelError("TestAttribute", "Failed Validation");

            // act
            var response = await controller.PatchAsync(id, resource);

            // assert
            serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Never);
            Assert.IsType <UnprocessableEntityObjectResult>(response);
            Assert.IsType <ErrorCollection>(((UnprocessableEntityObjectResult)response).Value);
        }
Beispiel #3
0
        public async Task GetAsync_Calls_Service()
        {
            // Arrange
            var serviceMock = new Mock <IGetAllService <Resource> >();
            var controller  = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, getAll: serviceMock.Object);

            // Act
            await controller.GetAsync();

            // Assert
            serviceMock.Verify(m => m.GetAsync(), Times.Once);
        }
Beispiel #4
0
        public async Task GetAsync_Throws_405_If_No_Service()
        {
            // arrange
            var serviceMock = new Mock <IGetAllService <Resource> >();
            var controller  = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, null);

            // act
            var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.GetAsync());

            // assert
            Assert.Equal(405, exception.GetStatusCode());
        }
Beispiel #5
0
        public async Task PatchAsync_Throws_405_If_No_Service()
        {
            // Arrange
            const int id          = 0;
            var       serviceMock = new Mock <IUpdateService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, update: null);

            // Act
            var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.PatchAsync(id, It.IsAny <Resource>()));

            // Assert
            Assert.Equal(405, exception.GetStatusCode());
        }
Beispiel #6
0
        public async Task GetRelationshipsAsync_Throws_405_If_No_Service()
        {
            // Arrange
            const int id          = 0;
            var       serviceMock = new Mock <IGetRelationshipsService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, getRelationships: null);

            // Act
            var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.GetRelationshipsAsync(id, string.Empty));

            // Assert
            Assert.Equal(405, exception.GetStatusCode());
        }
Beispiel #7
0
        public async Task DeleteAsync_Throws_405_If_No_Service()
        {
            // arrange
            const int id          = 0;
            var       serviceMock = new Mock <IUpdateRelationshipService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, delete: null);

            // act
            var exception = await Assert.ThrowsAsync <JsonApiException>(() => controller.DeleteAsync(id));

            // assert
            Assert.Equal(405, exception.GetStatusCode());
        }
Beispiel #8
0
        public async Task GetAsync_Calls_Service()
        {
            // arrange
            var serviceMock = new Mock <IGetAllService <Resource> >();
            var controller  = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, getAll: serviceMock.Object);

            // act
            await controller.GetAsync();

            // assert
            serviceMock.Verify(m => m.GetAsync(), Times.Once);
            VerifyApplyContext();
        }
Beispiel #9
0
        public async Task GetRelationshipsAsync_Calls_Service()
        {
            // Arrange
            const int id          = 0;
            var       serviceMock = new Mock <IGetRelationshipsService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, getRelationships: serviceMock.Object);

            // Act
            await controller.GetRelationshipsAsync(id, string.Empty);

            // Assert
            serviceMock.Verify(m => m.GetRelationshipsAsync(id, string.Empty), Times.Once);
        }
Beispiel #10
0
        public async Task GetRelationshipAsync_Calls_Service()
        {
            // arrange
            const int id          = 0;
            var       serviceMock = new Mock <IGetRelationshipService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, getRelationship: serviceMock.Object);

            // act
            await controller.GetRelationshipAsync(id, string.Empty);

            // assert
            serviceMock.Verify(m => m.GetRelationshipAsync(id, string.Empty), Times.Once);
            VerifyApplyContext();
        }
Beispiel #11
0
        public async Task DeleteAsync_Calls_Service()
        {
            // Arrange
            const int id          = 0;
            var       resource    = new Resource();
            var       serviceMock = new Mock <IDeleteService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, delete: serviceMock.Object);

            // Act
            await controller.DeleteAsync(id);

            // Assert
            serviceMock.Verify(m => m.DeleteAsync(id), Times.Once);
        }
Beispiel #12
0
        public async Task PatchRelationshipsAsync_Calls_Service()
        {
            // Arrange
            const int id          = 0;
            var       resource    = new Resource();
            var       serviceMock = new Mock <IUpdateRelationshipService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(new Mock <IJsonApiOptions>().Object, updateRelationships: serviceMock.Object);

            // Act
            await controller.PatchRelationshipsAsync(id, string.Empty, null);

            // Assert
            serviceMock.Verify(m => m.UpdateRelationshipsAsync(id, string.Empty, null), Times.Once);
        }
Beispiel #13
0
        public async Task PatchAsync_ModelStateInvalid_ValidateModelStateDisbled()
        {
            // Arrange
            const int id          = 0;
            var       resource    = new Resource();
            var       serviceMock = new Mock <IUpdateService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(new JsonApiOptions(), update: serviceMock.Object);

            // Act
            var response = await controller.PatchAsync(id, resource);

            // Assert
            serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Once);
            Assert.IsNotType <BadRequestObjectResult>(response);
        }
        public async Task PatchAsync_Calls_Service()
        {
            // arrange
            const int id          = 0;
            var       resource    = new Resource();
            var       serviceMock = new Mock <IUpdateService <Resource> >();
            var       controller  = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, update: serviceMock.Object);

            // act
            await controller.PatchAsync(id, resource);

            // assert
            serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Once);
            VerifyApplyContext();
        }
Beispiel #15
0
        public async Task PostAsync_Calls_Service()
        {
            // Arrange
            var resource    = new Resource();
            var serviceMock = new Mock <ICreateService <Resource> >();

            var controller = new BaseJsonApiController <Resource>(new JsonApiOptions(), create: serviceMock.Object);

            serviceMock.Setup(m => m.CreateAsync(It.IsAny <Resource>())).ReturnsAsync(resource);
            controller.ControllerContext = new Microsoft.AspNetCore.Mvc.ControllerContext {
                HttpContext = new DefaultHttpContext()
            };

            // Act
            await controller.PostAsync(resource);

            // Assert
            serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Once);
        }
Beispiel #16
0
        public async Task PatchAsync_ModelStateInvalid_ValidateModelStateDisbled()
        {
            // arrange
            const int id          = 0;
            var       resource    = new Resource();
            var       serviceMock = new Mock <IUpdateService <Resource> >();

            _jsonApiContextMock.Setup(a => a.ApplyContext <Resource>(It.IsAny <BaseJsonApiController <Resource> >())).Returns(_jsonApiContextMock.Object);
            _jsonApiContextMock.SetupGet(a => a.Options).Returns(new JsonApiOptions {
                ValidateModelState = false
            });
            var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, update: serviceMock.Object);

            // act
            var response = await controller.PatchAsync(id, resource);

            // assert
            serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Once);
            VerifyApplyContext();
            Assert.IsNotType <BadRequestObjectResult>(response);
        }
Beispiel #17
0
        public async Task PatchAsync_ModelStateInvalid_ValidateModelStateEnabled()
        {
            // Arrange
            const int id          = 0;
            var       resource    = new Resource();
            var       serviceMock = new Mock <IUpdateService <Resource> >();

            var controller = new BaseJsonApiController <Resource>(new JsonApiOptions {
                ValidateModelState = true
            }, update: serviceMock.Object);

            controller.ModelState.AddModelError("TestAttribute", "Failed Validation");

            // Act
            var response = await controller.PatchAsync(id, resource);

            // Assert
            serviceMock.Verify(m => m.UpdateAsync(id, It.IsAny <Resource>()), Times.Never);
            Assert.IsType <UnprocessableEntityObjectResult>(response);
            Assert.IsType <ErrorCollection>(((UnprocessableEntityObjectResult)response).Value);
        }
        public async Task PostAsync_ModelStateInvalid_ValidateModelStateEnabled()
        {
            // arrange
            var resource    = new Resource();
            var serviceMock = new Mock <ICreateService <Resource> >();

            _jsonApiContextMock.Setup(a => a.ApplyContext <Resource>(It.IsAny <BaseJsonApiController <Resource> >())).Returns(_jsonApiContextMock.Object);
            _jsonApiContextMock.SetupGet(a => a.Options).Returns(new JsonApiOptions {
                ValidateModelState = true
            });
            var controller = new BaseJsonApiController <Resource>(_jsonApiContextMock.Object, create: serviceMock.Object);

            controller.ModelState.AddModelError("Id", "Failed Validation");

            // act
            var response = await controller.PostAsync(resource);

            // assert
            serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Never);
            Assert.IsType <BadRequestObjectResult>(response);
            Assert.IsType <ErrorCollection>(((BadRequestObjectResult)response).Value);
        }
Beispiel #19
0
        public async Task PostAsync_ModelStateInvalid_ValidateModelStateEnabled()
        {
            // Arrange
            var resource    = new Resource();
            var serviceMock = new Mock <ICreateService <Resource> >();
            var controller  = new BaseJsonApiController <Resource>(new JsonApiOptions {
                ValidateModelState = true
            }, create: serviceMock.Object);

            controller.ControllerContext = new ControllerContext {
                HttpContext = new DefaultHttpContext()
            };
            controller.ModelState.AddModelError("TestAttribute", "Failed Validation");
            serviceMock.Setup(m => m.CreateAsync(It.IsAny <Resource>())).ReturnsAsync(resource);


            // Act
            var response = await controller.PostAsync(resource);

            // Assert
            serviceMock.Verify(m => m.CreateAsync(It.IsAny <Resource>()), Times.Never);
            Assert.IsType <UnprocessableEntityObjectResult>(response);
            Assert.IsType <ErrorCollection>(((UnprocessableEntityObjectResult)response).Value);
        }