Example #1
0
        private void BuildSutDependencies <T>(T data, string routeName, string url, string method) where T : class
        {
            _mockHateoasContext
            .SetupAllProperties()
            .Setup(x => x.GetApplicableLinkBuilders(data))
            .Returns(new IHateoasLinkBuilder[] { new HateoasLinkBuilder <T>(routeName) });

            _mockUrlHelper.Setup(x => x.Link(It.IsAny <string>(), It.IsAny <object>())).Returns(url);

            var actionDescriptors = new List <ActionDescriptor>
            {
                new ActionDescriptor
                {
                    AttributeRouteInfo = new AttributeRouteInfo {
                        Name = routeName
                    },
                    ActionConstraints = new List <IActionConstraintMetadata>
                    {
                        new HttpMethodActionConstraint(new List <string> {
                            method
                        })
                    }
                }
            };

            _mockActionDescriptorCollectionProvider
            .Setup(x => x.ActionDescriptors)
            .Returns(new ActionDescriptorCollection(actionDescriptors, 1));

            _sut = new Hateoas(_mockHateoasContext.Object, _mockUrlHelper.Object, _mockActionDescriptorCollectionProvider.Object);
        }
Example #2
0
        public NotaFiscalController(NotaFiscalContext database)
        {
            this.Database = database;

            HATEOAS = new Hateoas("localhost:5001/v1/NotaFiscal");
            HATEOAS.AddAction("get_notafiscal", "GET");
            HATEOAS.AddAction("edit_notafiscal", "PATCH");
        }
Example #3
0
 public FornecedoresController(ApplicationDbContext database)
 {
     _database = database;
     Hateoas   = new Hateoas("localhost:5001/api/v1/Fornecedores");
     Hateoas.AddAction("BUSCAR_FORNECEDOR", "GET");
     Hateoas.AddAction("DELETAR_FORNECEDOR", "DELETE");
     Hateoas.AddAction("EDITAR_FORNECEDOR", "PUT");
     Hateoas.AddAction("EDITAR_FORNECEDOR", "PATCH");
 }
Example #4
0
 public ClientesController(ApplicationDbContext database)
 {
     _database = database;
     Hateoas   = new Hateoas("localhost:5001/api/v1/Clientes");
     Hateoas.AddAction("BUSCAR_CLIENTE", "GET");
     Hateoas.AddAction("DELETAR_CLIENTE", "DELETE");
     Hateoas.AddAction("EDITAR_CLIENTE", "PUT");
     Hateoas.AddAction("EDITAR_CLIENTE", "PATCH");
 }
Example #5
0
 public ProdutosController(ApplicationDbContext database)
 {
     _database = database;
     Hateoas   = new Hateoas("localhost:5001/api/v1/Produtos");
     Hateoas.AddAction("BUSCAR_PRODUTO", "GET");
     Hateoas.AddAction("DELETAR_PRODUTO", "DELETE");
     Hateoas.AddAction("EDITAR_PRODUTO", "PUT");
     Hateoas.AddAction("EDITAR_PRODUTO", "PATCH");
 }
Example #6
0
        public ClientesController(NotaFiscalContext database)
        {
            this._database = database;

            HATEOAS = new Hateoas("localhost:5001/v1/Clientes");
            HATEOAS.AddAction("get_cliente", "GET");
            HATEOAS.AddAction("delete_cliente", "DELETE");
            HATEOAS.AddAction("edit_cliente", "PATCH");
        }
Example #7
0
 public VendasController(ApplicationDbContext database)
 {
     _database = database;
     Hateoas   = new Hateoas("localhost:5001/api/v1/Vendas");
     Hateoas.AddAction("BUSCAR_VENDA", "GET");
     Hateoas.AddAction("DELETAR_VENDA", "DELETE");
     Hateoas.AddAction("EDITAR_VENDA", "PUT");
     Hateoas.AddAction("EDITAR_VENDA", "PATCH");
 }
Example #8
0
 public VendasController(DataContext database, IMapper mapper)
 {
     this.Mapper = mapper;
     Database    = database;
     HATEOAS     = new Hateoas("localhost:5001/api/vendas");
     HATEOAS.AddAction("get_venda", "GET");
     HATEOAS.AddAction("edit_venda", "PATCH");
     HATEOAS.AddAction("update_venda", "PUT");
 }
Example #9
0
 public FornecedoresController(DataContext database, IMapper mapper)
 {
     this.Mapper = mapper;
     Database    = database;
     HATEOAS     = new Hateoas("localhost:5001/api/fornecedores");
     HATEOAS.AddAction("get_fornecedor", "GET");
     HATEOAS.AddAction("edit_fornecedor", "PATCH");
     HATEOAS.AddAction("update_fornecedor", "PUT");
     HATEOAS.AddAction("delete_fornecedor", "DELETE");
 }
Example #10
0
        public ProdutosController(NotaFiscalContext database)
        {
            this._database = database;

            //Criação do objeto HATEOS
            HATEOAS = new Hateoas("localhost:5001/v1/Produtos");
            HATEOAS.AddAction("get_product", "GET");
            HATEOAS.AddAction("delete_product", "DELETE");
            HATEOAS.AddAction("edit_product", "PATCH");
        }
 public ClientesController(DataContext database, IMapper mapper)
 {
     this.Mapper   = mapper;
     this.Database = database;
     HATEOAS       = new Hateoas("localhost:5001/api/clientes");
     HATEOAS.AddAction("get_cliente", "GET");
     HATEOAS.AddAction("edit_cliente", "PATCH");
     HATEOAS.AddAction("update_cliente", "PUT");
     HATEOAS.AddAction("delete_cliente", "DELETE");
 }
 public ProdutosController(DataContext database, IMapper mapper)
 {
     this.Mapper = mapper;
     Database    = database;
     HATEOAS     = new Hateoas("localhost:5001/api/produtos");
     HATEOAS.AddAction("get_produto", "GET");
     HATEOAS.AddAction("edit_produto", "PATCH");
     HATEOAS.AddAction("update_produto", "PUT");
     HATEOAS.AddAction("delete_produto", "DELETE");
 }
Example #13
0
        public void StartupOverloadShouldCallCreateAndCallRegistrationClassOnce()
        {
            // arrange & act & assert
            Hateoas.Startup <RegistrationClass>(
                new HttpConfigurationWrapper(new HttpConfiguration()),
                default(IAuthorizationProvider),
                default(IDependencyResolver));

            RegistrationClass.ConstructorCalls.Should().Be(1);
            RegistrationClass.RegistrationCalls.Should().Be(1);
        }
Example #14
0
        public static void Register(HttpConfiguration config)
        {
            var container = UnityConfig.GetConfiguredContainer();

            FilterProviders.Providers.Remove(FilterProviders.Providers.OfType <FilterAttributeFilterProvider>().First());
            FilterProviders.Providers.Add(new Microsoft.Practices.Unity.Mvc.UnityFilterAttributeFilterProvider(container));

            DependencyResolver.SetResolver(new Microsoft.Practices.Unity.Mvc.UnityDependencyResolver(container));
            GlobalConfiguration.Configuration.DependencyResolver = new Microsoft.Practices.Unity.WebApi.UnityDependencyResolver(container);

            // Web API configuration and services
            Hateoas.Startup <SomeRegistrationClass>(config,
                                                    dependencyResolver: GlobalConfiguration.Configuration.DependencyResolver,
                                                    messageSerializers: new List <IMessageSerializer> {
                new JsonApiMessageSerializer()
            });

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;

            GlobalConfiguration.Configuration.Formatters.Clear();
            GlobalConfiguration.Configuration.Formatters.Add(jsonFormatter);

            var settings = new JsonSerializerSettings
            {
                NullValueHandling  = NullValueHandling.Ignore,
                DateFormatHandling = DateFormatHandling.IsoDateFormat,
                ContractResolver   = new CamelCasePropertyNamesContractResolver()
            };

            jsonFormatter.SerializerSettings            = settings;
            jsonFormatter.SerializerSettings.Converters = new List <JsonConverter> {
                new StringEnumConverter()
            };
        }
Example #15
0
        public void Generate_InvalidActionDescriptor_ThrowsEception()
        {
            // arrange
            var mockData = new HateoasTestData(
                "sample-exception",
                "exceptions",
                "GET",
                new Dictionary <string, object> {
                { "diferentKey", "diferentValue" }
            },
                "{otherValue}");

            MockHateoasContext(mockData);
            _sut = new Hateoas(_mockHateoasContext.Object);

            // act
            Action actual = () => _sut.HandleRouteTemplate(mockData.ExpectedUrl, mockData.Template, mockData.RouteValues);

            // assert
            Assert.Throws <InvalidOperationException>(actual);
        }
Example #16
0
        protected async Task <TestResult> RegisterGetAndAssertResponse(bool isHateoasResponse, object data, int linkCount, int commandCount)
        {
            Hateoas.Startup(RegistrationClass, _httpConfigurationWrapper, _authorizationProviderMock.Object, _dependencyResolver.Object);

            var handler = new HateoasHttpHandler(_responseProvider, new List <IMessageSerializer>())
            {
                InnerHandler = new TestHandler((request, cancellationToken) => Response)
            };

            var client = new HttpClient(handler);
            var result = await client.SendAsync(Request);

            var testResult = new TestResult(result);
            await testResult.GetResponseString();

            // assert
            testResult.IsHateoasResponse.Should().Be(isHateoasResponse);
            testResult.HateoasResponse.Data.Should().Be(data);
            testResult.HateoasResponse.Links.Should().HaveCount(linkCount);
            testResult.HateoasResponse.Commands.Should().HaveCount(commandCount);

            return(testResult);
        }
Example #17
0
 private void MockSutDependencies(HateoasTestData mockData)
 {
     MockHateoasContext(mockData);
     MockHttpContextAndActionDescriptors(mockData);
     _sut = new Hateoas(_mockHateoasContext.Object);
 }