public void InsertNewDetectedPlate_WhenConfidenceNotCorrect_ShouldThrowError()
        {
            //Arrange
            var fakeIQueryable = new List <DetectedLicensePlate>().AsQueryable();
            var fakeDbSet      = A.Fake <DbSet <DetectedLicensePlate> >();

            var fakeHucaresContext = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSet);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();
            var detectedPlateHelper    = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act and Assert
            Assert.Throws <ArgumentException>(() => detectedPlateHelper.InsertNewDetectedPlate(
                                                  "ABC001", new DateTime(2018, 09, 29),
                                                  1, "http://localhost:6969/images/cam01_21080929_235959", 101));

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .MustNotHaveHappened();
        }
        public void GetAllActiveDetectedPlatesByPlateNumber_WithStartDateEarlierThanEndDate_ShouldThrowError()
        {
            //Arrange
            var fakeHucaresContext   = A.Fake <HucaresContext>();
            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlatesRecords = new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    PlateNumber = "ABC001"
                }
            };

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            A.CallTo(() => fakeMissingPlateHelper.GetPlateRecordByPlateNumber("ABC001"))
            .Returns(fakeMissingPlatesRecords);

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            Assert.Throws <ArgumentException>(() => detectedPlateHelper.GetAllActiveDetectedPlatesByPlateNumber(plateNumber: "ABC001",
                                                                                                                startDateTime: new DateTime(2018, 10, 05), endDateTime: new DateTime(2018, 09, 05)));
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustNotHaveHappened();
        }
        public void GetAllActiveDetectedPlatesByPlateNumber_WithEndDateAfterMLP_ShouldReturn()
        {
            //Arrange
            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                Id = 0, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 10, 10)
            };

            var fakeDetectedPlateList = new List <DetectedLicensePlate>()
            {
                expectedDetectedPlate,
                new DetectedLicensePlate()
                {
                    Id = 2, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 09, 10)
                },
                new DetectedLicensePlate()
                {
                    Id = 3, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 11, 10)
                }
            };

            var fakeMissingPlateList = new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    Id                  = 0,
                    PlateNumber         = expectedDetectedPlate.PlateNumber,
                    SearchStartDateTime = new DateTime(2018, 10, 05),
                    SearchEndDateTime   = new DateTime(2018, 10, 15)
                }
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlateList.AsQueryable());

            var fakeHucaresContext = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            A.CallTo(() => fakeMissingPlateHelper.GetPlateRecordByPlateNumber(expectedDetectedPlate.PlateNumber))
            .Returns(fakeMissingPlateList);

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var result = detectedPlateHelper.GetAllActiveDetectedPlatesByPlateNumber(plateNumber: expectedDetectedPlate.PlateNumber,
                                                                                     endDateTime: new DateTime(2018, 11, 25)).ToList();

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustHaveHappened();
            result.Count().ShouldBe(1);
            result.FirstOrDefault().ShouldBe(expectedDetectedPlate);
        }
Esempio n. 4
0
        public IHttpActionResult GetImage(DateTime dateTime, string fileName)
        {
            var endpoint    = LocationToUrl.ConvertPathToUrl(fileName, dateTime);
            var missingList = DetectedPlateHelper.GetDetectedPlatesByImgUrl(endpoint)
                              .Select(dlp => MissingPlateHelper.GetPlateRecordByPlateNumber(dlp.PlateNumber))
                              .Where(mlpList => 0 != mlpList.Count())
                              .Where(mlpList => mlpList.Where(mlp => mlp.Status == LicensePlateFoundStatus.Searching).Any())
                              .ToList();

            if (!missingList.Any())
            {
                throw new AccessViolationException(Resources.Error_FileAccessDenied);
            }

            var folderLocation = ImageManipulator.GenerateFolderLocationPath(dateTime);

            //TODO: Add regex check for ../

            var filePath = Path.Combine(folderLocation, fileName) + ".jpg";
            var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content    = new StreamContent(File.OpenRead(filePath)),
                StatusCode = HttpStatusCode.OK
            };

            response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");

            return(ResponseMessage(response));
        }
        public void DeletePlatesOlderThanDatetime_WithCorrectDateWithMissingNumber_ShouldReturn()
        {
            //Arrange
            var expectedRemainingDetectedLicensePlate = new DetectedLicensePlate()
            {
                DetectedDateTime = new DateTime(2018, 09, 10), PlateNumber = "FFF999"
            };
            var expectedDeletedDetectedLicensePlate = new DetectedLicensePlate()
            {
                DetectedDateTime = new DateTime(2018, 09, 10), PlateNumber = "ABC123"
            };

            var fakeDetectedPlatesList = new List <DetectedLicensePlate>()
            {
                expectedRemainingDetectedLicensePlate,
                expectedDeletedDetectedLicensePlate
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlatesList.AsQueryable());

            var fakeHucaresContext   = A.Fake <HucaresContext>();
            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords())
            .Returns(new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    PlateNumber = expectedRemainingDetectedLicensePlate.PlateNumber
                }
            });

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var deletedPlates = detectedPlateHelper.DeletePlatesOlderThanDatetime(new DateTime(2018, 10, 01)).ToList();

            //Assert
            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates).MustHaveHappened();
            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords()).MustHaveHappened();

            deletedPlates.Count.ShouldBe(1);
            deletedPlates.FirstOrDefault().ShouldBe(expectedDeletedDetectedLicensePlate);

            fakeHucaresContext.DetectedLicensePlates.FirstOrDefault()
            .ShouldBe(expectedRemainingDetectedLicensePlate);
        }
Esempio n. 6
0
        public IHttpActionResult AddDLP([FromBody] DemonstrationDlpInput input)
        {
            var imageLocation = ImageManipulator.SaveImage(input.CamId, input.DetectedDateTime, input.Img);

            var fileInfo    = new FileInfo(imageLocation);
            var newLocation = ImageManipulator.MoveFileToPerm(fileInfo, input.DetectedDateTime);

            var imgUrl = LocationToUrlConverter.ConvertPathToUrl(fileInfo.Name, input.DetectedDateTime);
            var result = DetectedPlateHelper.InsertNewDetectedPlate(input.PlateNumber, input.DetectedDateTime, input.CamId, imgUrl, input.Confidence);

            return(Json(result));
        }
        public void GetAllDetectedPlatesByCamera_WithDates_ShouldReturn()
        {
            //Arrange
            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                Id = 0, CamId = 0, DetectedDateTime = new DateTime(2018, 10, 10)
            };

            var fakeDetectedPlateList = new List <DetectedLicensePlate>()
            {
                expectedDetectedPlate,
                new DetectedLicensePlate()
                {
                    Id = 1, CamId = 0, DetectedDateTime = new DateTime(2018, 09, 10)
                },
                new DetectedLicensePlate()
                {
                    Id = 2, CamId = 0, DetectedDateTime = new DateTime(2018, 11, 30)
                },
                new DetectedLicensePlate()
                {
                    Id = 3, CamId = 1, DetectedDateTime = new DateTime(2018, 10, 10)
                }
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlateList.AsQueryable());

            var fakeHucaresContext = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();
            var detectedPlateHelper    = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var result = detectedPlateHelper.GetAllDetectedPlatesByCamera(cameraId: expectedDetectedPlate.CamId,
                                                                          startDateTime: new DateTime(2018, 10, 05), endDateTime: new DateTime(2018, 10, 15)).ToList();

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustHaveHappened();
            result.Count().ShouldBe(1);
            result.FirstOrDefault().ShouldBe(expectedDetectedPlate);
        }
        public void GetAllDetectedPlatesByCamera_WithStartLaterThanEnd_ShouldThrow()
        {
            //Arrange
            var fakeHucaresContext   = A.Fake <HucaresContext>();
            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();
            var detectedPlateHelper    = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act & assert
            Assert.Throws <ArgumentException>(() => detectedPlateHelper.GetAllDetectedPlatesByCamera(cameraId: 0,
                                                                                                     startDateTime: new DateTime(2018, 10, 05), endDateTime: new DateTime(2018, 09, 05)));
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustNotHaveHappened();
        }
Esempio n. 9
0
        public IHttpActionResult GenerateFakeDLPData()
        {
            var detectedPlateHelper = new DetectedPlateHelper();

            detectedPlateHelper.InsertNewDetectedPlate("JEZ123", new DateTime(2018, 10, 22), 1, "ipfs://hucares.io/detections/camera/28/20181022", 0.86);
            detectedPlateHelper.InsertNewDetectedPlate("JEZ123", new DateTime(2018, 10, 22), 2, "ipfs://hucares.io/detections/camera/23/20181022", 0.92);
            detectedPlateHelper.InsertNewDetectedPlate("JEZ123", new DateTime(2018, 10, 22), 1, "ipfs://hucares.io/detections/camera/28/20181022", 0.73);

            detectedPlateHelper.InsertNewDetectedPlate("BDI911", new DateTime(2018, 10, 20), 1, "ipfs://hucares.io/detections/camera/28/20181022", 0.71);
            detectedPlateHelper.InsertNewDetectedPlate("BDI911", new DateTime(2018, 10, 21), 1, "ipfs://hucares.io/detections/camera/28/20181022", 0.98);
            detectedPlateHelper.InsertNewDetectedPlate("BDI911", new DateTime(2018, 10, 22), 1, "ipfs://hucares.io/detections/camera/28/20181022", 0.95);
            detectedPlateHelper.InsertNewDetectedPlate("BDI911", new DateTime(2018, 10, 23), 2, "ipfs://hucares.io/detections/camera/23/20181022", 0.78);

            detectedPlateHelper.InsertNewDetectedPlate("HAH666", new DateTime(2018, 10, 25), 2, "ipfs://hucares.io/detections/camera/23/20181022", 0.999);

            return(Json("Fake DLP data generated"));
        }
        public void InsertNewDetectedPlate_WhenAllInfoCorrect_ShouldSucceedAndReturn()
        {
            //Arrange
            var fakeIQueryable = new List <DetectedLicensePlate>().AsQueryable();
            var fakeDbSet      = A.Fake <DbSet <DetectedLicensePlate> >();

            var fakeHucaresContext = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSet);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();
            var detectedPlateHelper    = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                PlateNumber      = "ABC001",
                DetectedDateTime = new DateTime(2018, 09, 29),
                CamId            = 1,
                ImgUrl           = "http://localhost:6969/images/cam01_21080929_235959",
                Confidence       = 75.75
            };

            var result = detectedPlateHelper.InsertNewDetectedPlate(expectedDetectedPlate.PlateNumber,
                                                                    expectedDetectedPlate.DetectedDateTime, expectedDetectedPlate.CamId, expectedDetectedPlate.ImgUrl,
                                                                    expectedDetectedPlate.Confidence);

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => fakeDbSet.Add(result))
            .MustHaveHappened();

            A.CallTo(() => fakeHucaresContext.SaveChanges())
            .MustHaveHappenedOnceExactly();

            result.ShouldBe(expectedDetectedPlate);
        }
        public void DeletePlatesOlderThanDatetime_WithDateInFuture_ShouldThrow()
        {
            //Arrange
            var fakeHucaresContext   = A.Fake <HucaresContext>();
            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords())
            .Returns(new List <MissingLicensePlate>());

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act & assert
            Assert.Throws <ArgumentException>(() => detectedPlateHelper.DeletePlatesOlderThanDatetime(DateTime.Today.AddDays(2)));
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustNotHaveHappened();
            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords()).MustNotHaveHappened();
        }
Esempio n. 12
0
        public IHttpActionResult DeleteDLPs()
        {
            var dlpList = DetectedPlateHelper.GetAllDlps();

            //delete images
            foreach (var dlp in dlpList)
            {
                var pathArray      = dlp.ImgUrl.Split('/');
                var fileName       = pathArray[pathArray.Length - 1];
                var dateTime       = DateTime.Parse(pathArray[pathArray.Length - 2]);
                var folderLocation = ImageManipulator.GenerateFolderLocationPath(dateTime);
                var filePath       = Path.Combine(folderLocation, fileName) + ".jpg";

                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
            }

            //delete records
            DetectedPlateHelper.DeleteAll();
            return(Ok());
        }
Esempio n. 13
0
 public IHttpActionResult GetAllDetectedPlatesByPlateNumber(string plateNumber, DateTime?startDateTime = null,
                                                            DateTime?endDateTime = null)
 {
     return(Json(DetectedPlateHelper.GetAllActiveDetectedPlatesByPlateNumber(plateNumber, startDateTime, endDateTime)));
 }
Esempio n. 14
0
 public IHttpActionResult GetAllActiveDetectedPlatesByPlateNumberAndCameraId(string plateNumber, int cameraId)
 {
     return(Json(DetectedPlateHelper.GetAllActiveDetectedPlatesByPlateNumberAndCameraId(plateNumber, cameraId)));
 }
Esempio n. 15
0
 public IHttpActionResult GetAllDetectedPlatesByCamera(int cameraId, DateTime?startDateTime = null,
                                                       DateTime?endDateTime = null)
 {
     return(Json(DetectedPlateHelper.GetAllDetectedPlatesByCamera(cameraId, startDateTime, endDateTime)));
 }
        public void GetAllDetectedMissingPlates_ShouldReturn()
        {
            //Arrange

            var expectedDetectedPlate = new DetectedLicensePlate()
            {
                Id    = 1, PlateNumber = "ABC002", DetectedDateTime = new DateTime(2018, 09, 30),
                CamId = 2, ImgUrl = "http://localhost:6969/images", Confidence = 0.80
            };

            var fakeDetectedPlateList = new List <DetectedLicensePlate>()
            {
                expectedDetectedPlate,
                new DetectedLicensePlate()
                {
                    Id    = 0, PlateNumber = "ABC001", DetectedDateTime = new DateTime(2018, 09, 29),
                    CamId = 1, ImgUrl = "http://localhost:6969/images", Confidence = 80
                },
                new DetectedLicensePlate()
                {
                    Id    = 2, PlateNumber = "ABC003", DetectedDateTime = new DateTime(2018, 09, 30),
                    CamId = 2, ImgUrl = "http://localhost:6969/images", Confidence = 90.0
                }
            };

            var fakeMissingPlateList = new List <MissingLicensePlate>()
            {
                new MissingLicensePlate()
                {
                    Id                  = 0,
                    PlateNumber         = expectedDetectedPlate.PlateNumber,
                    SearchStartDateTime = new DateTime(2018, 09, 29),
                    SearchEndDateTime   = null,
                    Status              = LicensePlateFoundStatus.NotFound
                }
            };

            var fakeDbSetDetectedPlates = StorageTestsUtil.SetupFakeDbSet(fakeDetectedPlateList.AsQueryable());
            var fakeHucaresContext      = A.Fake <HucaresContext>();

            A.CallTo(() => fakeHucaresContext.DetectedLicensePlates)
            .Returns(fakeDbSetDetectedPlates);

            var fakeDbContextFactory = A.Fake <IDbContextFactory>();

            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext())
            .Returns(fakeHucaresContext);

            var fakeMissingPlateHelper = A.Fake <IMissingPlateHelper>();

            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords())
            .Returns(fakeMissingPlateList);

            var detectedPlateHelper = new DetectedPlateHelper(fakeDbContextFactory, fakeMissingPlateHelper);

            //Act
            var result = detectedPlateHelper.GetAllDetectedMissingPlates();

            //Assert
            A.CallTo(() => fakeDbContextFactory.BuildHucaresContext()).MustHaveHappened();
            A.CallTo(() => fakeMissingPlateHelper.GetAllPlateRecords()).MustHaveHappened();
            result.Count().ShouldBe(1);
            result.FirstOrDefault().ShouldBe(expectedDetectedPlate);
        }
Esempio n. 17
0
 public IHttpActionResult GetAllDetectedMissingPlates(int?page = null)
 {
     return(Json(DetectedPlateHelper.GetAllDetectedMissingPlates(page)));
 }