public async void TestUpdateManagersAsync()
        {
            var dbContext          = DbContextMocker.GetContext(nameof(this.TestUpdateManagersAsync));
            var managersRepository = new ManagersRepository(dbContext, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());
            var managersService    = new ManagersService(managersRepository, null);
            var controller         = new ManagersController(managersService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var parameters = new JObject()
            {
                new JProperty("customerName", "test"),
                new JProperty("managerId", "1"),
            };

            var manager = dbContext.Managers.FirstOrDefault();

            var updatewith = new ManagersViewModel()
            {
                Id        = manager.Id,
                FirstName = "johnTEST",
                LastName  = "Shon",
            };

            var response = await controller.UpdateManager(updatewith);

            Assert.Equal(updatewith.FirstName, dbContext.Managers.Find(manager.Id).FirstName);

            dbContext.Dispose();
        }
        public async Task TestGetManagersAsync()
        {
            var dbContext          = DbContextMocker.GetContext(nameof(this.TestGetManagersAsync));
            var managersRepository = new ManagersRepository(dbContext, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());
            var managersService    = new ManagersService(managersRepository, null);
            var controller         = new ManagersController(managersService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper())
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext(),
                },
            };
            var parameters = new ManagersPagingParameters()
            {
                PageNumber = 1,
                PageSize   = 1,
                MinId      = 0,
            };
            var response = await controller.GetManagers(parameters);

            var value = response.Value;

            Assert.Single(value);

            controller.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext(),
            };
            parameters = new ManagersPagingParameters()
            {
                PageNumber = 1,
                PageSize   = 2,
                MinId      = 0,
            };
            response = await controller.GetManagers(parameters);

            value = response.Value;
            Assert.Equal(2, value.Count());
            controller.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext(),
            };
            parameters = new ManagersPagingParameters()
            {
                PageNumber = 1,
                PageSize   = 2,
                MinId      = 2,
            };
            response = await controller.GetManagers(parameters);

            value = response.Value;
            Assert.Single(value);

            dbContext.Dispose();
        }
Beispiel #3
0
        public async void TestDeleteCustomer()
        {
            var customerService = new Mock <ICustomersService>();

            customerService.Setup(repo => repo.DeleteCustomer(It.IsAny <int>()));
            var controller = new CustomersController(customerService.Object, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var response = await controller.DeleteCustomer(1);

            Assert.Equal("Microsoft.AspNetCore.Mvc.OkResult", response.GetType().ToString());
        }
Beispiel #4
0
        public async Task TestGetCustomerAsync()
        {
            var dbContext           = DbContextMocker.GetContext(nameof(this.TestGetCustomerAsync));
            var customersRepository = new CustomersRepository(dbContext);
            var customerService     = new CustomersService(customersRepository, null);
            var controller          = new CustomersController(customerService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());
            var response            = await controller.GetCustomer(1);

            var value = response.Value;

            dbContext.Dispose();

            Assert.Equal("John Johnson", value.CustomerName);
        }
        public async Task TestGetManagerAsync()
        {
            var dbContext          = DbContextMocker.GetContext(nameof(this.TestGetManagerAsync));
            var managersRepository = new ManagersRepository(dbContext, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());
            var managersService    = new ManagersService(managersRepository, null);
            var controller         = new ManagersController(managersService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());
            var response           = await controller.GetManager(2);

            var value = response.Value;

            dbContext.Dispose();

            Assert.Equal("Test", value.FirstName);
        }
Beispiel #6
0
        public async Task TestGetCustomerUnitAsync()
        {
            var customerService = new Mock <ICustomersService>();

            customerService.Setup(repo => repo.GetCustomer(It.IsAny <int>())).ReturnsAsync(new Customer()
            {
                CustomerName = "Test"
            });
            var controller = new CustomersController(customerService.Object, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var response = await controller.GetCustomer(1);

            var value = response.Value;

            Assert.NotNull(value);
        }
Beispiel #7
0
        public async Task TestGetCustomersUnitAsync()
        {
            var customerService = new Mock <ICustomersService>();

            customerService.Setup(repo => repo.GetCustomers()).ReturnsAsync(new List <Customer>()
            {
                new Customer()
            });
            var controller = new CustomersController(customerService.Object, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var response = await controller.GetCustomers();

            var value = response.Value;

            Assert.Single(value);
        }
Beispiel #8
0
        public async void TestAddCustomer()
        {
            var customerService = new Mock <ICustomersService>();

            customerService.Setup(repo => repo.CreateCustomer(It.IsAny <string>(), It.IsAny <int>()));
            var controller = new CustomersController(customerService.Object, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var parameters = new JObject()
            {
                new JProperty("customerName", "test"),
                new JProperty("managerId", "1"),
            };

            var response = await controller.CreateNewCustomer(parameters);

            Assert.Equal("Microsoft.AspNetCore.Mvc.OkResult", response.GetType().ToString());
        }
Beispiel #9
0
        public async void TestAddCustomer()
        {
            var dbContext           = DbContextMocker.GetContext(nameof(this.TestAddCustomer));
            var customersRepository = new CustomersRepository(dbContext);
            var customerService     = new CustomersService(customersRepository, null);
            var controller          = new CustomersController(customerService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var parameters = new JObject()
            {
                new JProperty("customerName", "test"),
                new JProperty("managerId", "1"),
            };
            var response = await controller.CreateNewCustomer(parameters);

            Assert.Equal(1, dbContext.Customers.Where(c => c.CustomerName == "test").Count());

            dbContext.Dispose();
        }
        public async void TestCreateManager()
        {
            var dbContext          = DbContextMocker.GetContext(nameof(this.TestCreateManager));
            var managersRepository = new ManagersRepository(dbContext, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());
            var managersService    = new ManagersService(managersRepository, null);
            var controller         = new ManagersController(managersService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var parameters = new ManagersViewModel()
            {
                FirstName = "john",
                LastName  = "Shon",
            };
            var response = await controller.CreateNewManager(parameters);

            Assert.Equal(1, dbContext.Managers.Where(c => c.LastName == "Shon").Count());

            dbContext.Dispose();
        }
Beispiel #11
0
        public async void TestDeleteCustomer()
        {
            var dbContext           = DbContextMocker.GetContext(nameof(this.TestDeleteCustomer));
            var customersRepository = new CustomersRepository(dbContext);
            var customerService     = new CustomersService(customersRepository, null);
            var controller          = new CustomersController(customerService, AutoMapperConfiguration.ConfigureForWeb().CreateMapper());

            var parameters = new JObject()
            {
                new JProperty("customerName", "test"),
                new JProperty("managerId", "1"),
            };

            Assert.NotNull(dbContext.Customers.Find(2));
            var response = await controller.DeleteCustomer(2);

            Assert.Null(dbContext.Customers.Find(2));

            dbContext.Dispose();
        }
Beispiel #12
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo()
                {
                    Title   = "My API",
                    Version = "v1",
                });
                c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme()
                {
                    In          = ParameterLocation.Header,
                    Description = "Please insert JWT with Bearer into field",
                    Name        = "Authorization",
                    Type        = SecuritySchemeType.ApiKey,
                });
                c.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme()
                        {
                            Reference = new OpenApiReference()
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id   = "Bearer",
                            },
                        },
                        new string[] { }
                    },
                });
            });
            services.AddDbContext <CustomersContext>(
                options =>
            {
                options.UseSqlServer(this.Configuration.GetConnectionString("CustomersContext"));
            }, ServiceLifetime.Transient);
            services.AddSingleton(AutoMapperConfiguration.ConfigureForWeb().CreateMapper());
            services.AddTransient <IManagersRepository, ManagersRepository>();
            services.AddTransient <ICustomerRepository, CustomersRepository>();
            services.AddTransient <ICustomersService, CustomersService>();
            services.AddTransient <IManagersService, ManagersService>();

            services.AddCors(options =>
            {
                options.AddPolicy(
                    "CorsPolicy",
                    builder => builder.AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader());
            });

            var appSettingsSection = this.Configuration.GetSection("AppSettings");

            services.Configure <AppSettings>(appSettingsSection);

            // configure jwt authentication
            var appSettings = appSettingsSection.Get <AppSettings>();
            var key         = Encoding.ASCII.GetBytes(appSettings.Secret);

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata      = false;
                x.SaveToken                 = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(key),
                    ValidateIssuer           = false,
                    ValidateAudience         = false,
                };
            });

            // configure DI for application services
            services.AddScoped <IUserRepository, UserRepository>();
            services.AddScoped <IUserService, UserService>();

            services.AddControllers().AddNewtonsoftJson();
        }