public async Task TestGetCarOwnersByUniqueNumber()
        {
            using (var transaction = Fixture.Connection.BeginTransaction())
            {
                using (var context = Fixture.CreateContext(transaction))
                {
                    using var serviceScope = _serviceProvider.CreateScope();
                    var appEnvirontent = serviceScope.ServiceProvider.GetRequiredService <IWebHostEnvironment>();
                    var seed           = new SeedData(new VehicleImageRetriever(), appEnvirontent);

                    var userManager     = serviceScope.ServiceProvider.GetRequiredService <ICustomUserManager>();
                    var userRoleManager = serviceScope.ServiceProvider.GetRequiredService <ICustomRoleManager>();
                    await seed.Initialize(userManager, userRoleManager, context);

                    var    carOwnerRepo = new CarOwnersRepository(context);
                    Random rnd          = new Random();
                    var    index        = rnd.Next(0, context.Cars.AsNoTracking().ToHashSet().Count);
                    var    car          = context.Cars.AsNoTracking().ToList()[index];
                    var    res          = await carOwnerRepo.GetCarOwners(car.UniqueNumber);

                    Assert.NotNull(res);
                    Assert.IsAssignableFrom <List <CustomUser> >(res);

                    var resJson = JsonConvert.SerializeObject(res);
                    Assert.NotNull(resJson);
                    Assert.IsAssignableFrom <string>(resJson);
                }
            }
        }
        public async Task TestVehicleController_GetCarsByCarOwner()
        {
            using (var transaction = Fixture.Connection.BeginTransaction())
            {
                using (var context = Fixture.CreateContext(transaction))
                {
                    using var serviceScope = _serviceProvider.CreateScope();
                    var appEnvirontent = serviceScope.ServiceProvider.GetRequiredService <IWebHostEnvironment>();
                    var seed           = new SeedData(new VehicleImageRetriever(), appEnvirontent);


                    var userManager     = serviceScope.ServiceProvider.GetRequiredService <ICustomUserManager>();
                    var userRoleManager = serviceScope.ServiceProvider.GetRequiredService <ICustomRoleManager>();
                    await seed.Initialize(userManager, userRoleManager, context);

                    var carsRepo       = new CarsRepository(context);
                    var carOwnerRepo   = new CarOwnersRepository(context);
                    var identitySevice = new Mock <IIdentityService>();

                    var carService      = new CarService(carsRepo, carOwnerRepo, identitySevice.Object);
                    var carOwnerService = new CarOwnerService(carOwnerRepo);

                    var mockLogger = new Mock <ILogger <VehiclesController> >();
                    ILogger <VehiclesController> logger = mockLogger.Object;

                    var mockWebHostingEnvironment = new Mock <IWebHostEnvironment>();

                    var mockCustomAuthorizationService = new Mock <ICustomAuthorizationService>();
                    mockCustomAuthorizationService
                    .Setup(m => m.AuthorizeAsync(
                               It.IsAny <ClaimsPrincipal>(),
                               It.IsAny <object>(),
                               It.IsAny <IAuthorizationRequirement>())
                           ).ReturnsAsync(AuthorizationResult.Success);

                    var controller = new VehiclesController(
                        carService,
                        logger,
                        new UriService("https://localhost:5010"),
                        new CustomMapper(
                            new VehicleImageRetriever()),
                        mockWebHostingEnvironment.Object,
                        new VehicleImageRetriever(),
                        mockCustomAuthorizationService.Object
                        );

                    Random rnd               = new Random();
                    var    index             = rnd.Next(0, context.Users.AsNoTracking().ToHashSet().Count);
                    var    owner             = context.Users.AsNoTracking().ToList()[index];
                    var    resJson           = JsonConvert.SerializeObject(owner);
                    var    deserializedOwner = JsonConvert.DeserializeObject <OwnerRequest>(resJson);

                    var res = await controller.GetCarsByCarOwner(deserializedOwner);

                    Assert.NotNull(res);
                    Assert.IsAssignableFrom <OkObjectResult>(res);
                }
            }
        }
        public async Task TestVehicleController_GetOwnersByCarUniqueNumber()
        {
            using (var transaction = Fixture.Connection.BeginTransaction())
            {
                using (var context = Fixture.CreateContext(transaction))
                {
                    using var serviceScope = _serviceProvider.CreateScope();
                    var appEnvirontent = serviceScope.ServiceProvider.GetRequiredService <IWebHostEnvironment>();
                    var seed           = new SeedData(new VehicleImageRetriever(), appEnvirontent);


                    var userManager     = serviceScope.ServiceProvider.GetRequiredService <ICustomUserManager>();
                    var userRoleManager = serviceScope.ServiceProvider.GetRequiredService <ICustomRoleManager>();
                    await seed.Initialize(userManager, userRoleManager, context);


                    var carsRepo       = new CarsRepository(context);
                    var carOwnerRepo   = new CarOwnersRepository(context);
                    var identitySevice = new Mock <IIdentityService>();

                    var carService = new CarService(carsRepo, carOwnerRepo, identitySevice.Object);


                    var carOwnerService = new CarOwnerService(carOwnerRepo);

                    var mockLogger = new Mock <ILogger <VehiclesController> >();
                    ILogger <VehiclesController> logger = mockLogger.Object;

                    var controller = new CarOwnersController(
                        carOwnerService,
                        logger,
                        new UriService("https://localhost:5010"),
                        new CustomMapper(
                            new VehicleImageRetriever())
                        );

                    Random rnd   = new Random();
                    var    index = rnd.Next(0, context.Cars.AsNoTracking().ToHashSet().Count);
                    var    car   = context.Cars.AsNoTracking().ToList()[index];

                    var res = await controller.GetOwnersByCarUniqueNumber(car.UniqueNumber);

                    Assert.NotNull(res);
                    Assert.IsAssignableFrom <OkObjectResult>(res);
                }
            }
        }
Esempio n. 4
0
        public virtual ICarOwnersRepository CreateRepository(MemoryType memory = MemoryType.InMemory, string connectionString = "")
        {
            ICarOwnersRepository carOwners = null;

            switch (memory)
            {
            case MemoryType.MongoDB:
                try{ carOwners = new CarOwnersRepository(connectionString); }
                catch { carOwners = new CarOwnersInMemRepository(); }
                break;

            default:
                carOwners = new CarOwnersInMemRepository();
                break;
            }
            return(carOwners);
        }
        public async Task TestGetCarOwnersby_UsingUniqueNumber_UsingIncudeThrowsExeption()
        {
            using (var transaction = Fixture.Connection.BeginTransaction())
            {
                using (var context = Fixture.CreateContext(transaction))
                {
                    using var serviceScope = _serviceProvider.CreateScope();
                    var appEnvirontent = serviceScope.ServiceProvider.GetRequiredService <IWebHostEnvironment>();
                    var seed           = new SeedData(new VehicleImageRetriever(), appEnvirontent);


                    var userManager     = serviceScope.ServiceProvider.GetRequiredService <ICustomUserManager>();
                    var userRoleManager = serviceScope.ServiceProvider.GetRequiredService <ICustomRoleManager>();
                    await seed.Initialize(userManager, userRoleManager, context);


                    var    carOwnerRepo = new CarOwnersRepository(context);
                    Random rnd          = new Random();
                    var    index        = rnd.Next(0, context.Cars.AsNoTracking().ToHashSet().Count);
                    var    car          = context.Cars.AsNoTracking().ToList()[index];

                    var res = await context.Cars.AsNoTracking()
                              .Include(c => c.ManyToManyCustomUserToVehicle)
                              .ThenInclude(mtm => mtm.CarOwner)
                              .FirstOrDefaultAsync(c => c.UniqueNumber == car.UniqueNumber);

                    var owners = res.ManyToManyCustomUserToVehicle.Select(mtm => mtm.CarOwner).ToList();

                    Assert.NotNull(owners);
                    Assert.IsAssignableFrom <List <CustomUser> >(owners);
                    try
                    {
                        var resJson = JsonConvert.SerializeObject(owners);
                    }
                    catch (Exception ex)
                    {
                        Assert.NotNull(ex);
                        Assert.IsAssignableFrom <JsonSerializationException>(ex);
                    }
                }
            }
        }
        public async Task TestVehicleController_PostVehicle()
        {
            using (var transaction = Fixture.Connection.BeginTransaction())
            {
                using (var context = Fixture.CreateContext(transaction))
                {
                    using var serviceScope = _serviceProvider.CreateScope();
                    var appEnvirontent = serviceScope.ServiceProvider.GetRequiredService <IWebHostEnvironment>();
                    var seed           = new SeedData(new VehicleImageRetriever(), appEnvirontent);


                    var userManager     = serviceScope.ServiceProvider.GetRequiredService <ICustomUserManager>();
                    var userRoleManager = serviceScope.ServiceProvider.GetRequiredService <ICustomRoleManager>();
                    await seed.Initialize(userManager, userRoleManager, context);

                    var carsRepo     = new CarsRepository(context);
                    var carOwnerRepo = new CarOwnersRepository(context);


                    var identitySevice = serviceScope.ServiceProvider.GetRequiredService <IIdentityService>();

                    var userLoginRequest = new UserLoginRequest()
                    {
                        Email    = "*****@*****.**",
                        Password = "******"
                    };

                    var loginResponse = await identitySevice
                                        .LoginAsync(userLoginRequest.Email, userLoginRequest.Password);

                    var carService = new CarService(carsRepo, carOwnerRepo, identitySevice);

                    var mockLogger = new Mock <ILogger <VehiclesController> >();
                    ILogger <VehiclesController> logger = mockLogger.Object;

                    var mockWebHostingEnvironment = new Mock <IWebHostEnvironment>();

                    var mockCustomAuthorizationService = new Mock <ICustomAuthorizationService>();
                    mockCustomAuthorizationService
                    .Setup(m => m.AuthorizeAsync(
                               It.IsAny <ClaimsPrincipal>(),
                               It.IsAny <object>(),
                               It.IsAny <IAuthorizationRequirement>()))
                    .ReturnsAsync(AuthorizationResult.Success);

                    var controller = new VehiclesController(
                        carService,
                        logger,
                        new UriService("https://localhost:5010/"),
                        new CustomMapper(new VehicleImageRetriever()),
                        mockWebHostingEnvironment.Object,
                        new VehicleImageRetriever(),
                        mockCustomAuthorizationService.Object
                        );

                    var testCar = new CarRequest
                    {
                        Brand        = "Test",
                        Price        = 23.4m,
                        Date         = DateTime.Now,
                        CarEngine    = 3,
                        Color        = "Grey",
                        Description  = "test",
                        Drive        = "Mixed",
                        Transmision  = "Auto",
                        UniqueNumber = SeedData.GenerateRandomRegistrationPlateNumber(),
                        Token        = loginResponse.Token
                    };

                    var res = await controller.PostCarItem(testCar);

                    Assert.NotNull(res);
                    var car = await context.Cars.AsNoTracking().SingleOrDefaultAsync(c => c.UniqueNumber == testCar.UniqueNumber);

                    Assert.NotNull(car);
                }
            }
        }