// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var config = new ServerConfig();

            Configuration.Bind(config);

            var ipAddressDetailsContext = new DatabaseContext(config.MongoDB);

            var ipAddressDetailRepository = new IpAddressDetailsRepository(ipAddressDetailsContext);

            services.AddSingleton <IIpAddressDetailsRepository>(ipAddressDetailRepository);

            var ipAddressDetailsService = new IpAddressDetailsService(ipAddressDetailRepository);

            services.AddSingleton <IIpAddressDetailsService>(ipAddressDetailsService);

            services.AddScoped <IIpStackService, IpStackService>();

            services.AddAutoMapper(typeof(Startup));

            services.AddControllers();

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "GeoLocations API", Version = "v1"
                });
            });
        }
Exemple #2
0
        public void SetUp()
        {
            _ipAddressDetailsApiDao           = A.Fake <IIpAddressDetailsApiDao>();
            _ipAddressDateRangeDetailsBuilder = A.Fake <IIpAddressDateRangeDetailsBuilder>();

            _ipAddressDetailsService = new IpAddressDetailsService(_ipAddressDetailsApiDao, _ipAddressDateRangeDetailsBuilder);
        }
Exemple #3
0
        public async Task AddGeoLocationData_ValidObjectPassed_NewDataIsAdded()
        {
            //Arrange

            var mockAddressDetailsRepository = new Mock <IIpAddressDetailsRepository>();

            var addressDetailsService = new IpAddressDetailsService(mockAddressDetailsRepository.Object);

            var iIpAddressDetails = new IpAddressDetails()
            {
                City          = "City",
                ContinentCode = "Code",
                ContinentName = "ConnectionName",
                CountryCode   = "ContryCode",
                CountryName   = "CountryName",
                DatabaseId    = new MongoDB.Bson.ObjectId(),
                Hostname      = "hostName",
                Id            = 1,
                Ip            = "127.0.0.1"
            };

            //Action

            await addressDetailsService.AddGeoLocationData(iIpAddressDetails);

            //Assert

            mockAddressDetailsRepository.Verify(m => m.Add(iIpAddressDetails), Times.Once);
        }
Exemple #4
0
        public void UpdateGeoLocationData_ObjectDoesNotExist_ExceptionIsRaised()
        {
            //Arrange

            var mockAddressDetailsRepository = new Mock <IIpAddressDetailsRepository>();

            mockAddressDetailsRepository.Setup(m => m.GetById(It.IsAny <long>())).ReturnsAsync(() => null);

            var addressDetailsService = new IpAddressDetailsService(mockAddressDetailsRepository.Object);

            //Action && Assert

            Assert.ThrowsAsync <InvalidOperationException>(() => addressDetailsService.UpdateGeoLocationData(new IpAddressDetails()));
        }
Exemple #5
0
        public async Task UpdateGeoLocationData_ObjectExistsInDatabase_ObjectIsUpdated()
        {
            //Arrange

            var iIpAddressDetailsFromDb = new IpAddressDetails()
            {
                City          = "City",
                ContinentCode = "Code",
                ContinentName = "ConnectionName",
                CountryCode   = "ContryCode FROM DB",
                CountryName   = "CountryName FROM DB",
                DatabaseId    = new MongoDB.Bson.ObjectId(),
                Hostname      = "FROM DB",
                Id            = 1,
                Ip            = "127.0.0.1"
            };

            var detailsToUpdateOnDb = new IpAddressDetails()
            {
                City          = "NEW CITY",
                ContinentCode = "Code",
                ContinentName = "ConnectionName",
                CountryCode   = "ContryCode",
                CountryName   = "CountryName",
                DatabaseId    = new MongoDB.Bson.ObjectId(),
                Hostname      = "hostName",
                Id            = 1,
                Ip            = "127.0.0.1"
            };

            var mockAddressDetailsRepository = new Mock <IIpAddressDetailsRepository>();

            mockAddressDetailsRepository.Setup(m => m.GetById(It.IsAny <long>())).ReturnsAsync(iIpAddressDetailsFromDb);

            mockAddressDetailsRepository.Setup(m => m.Update(It.IsAny <IpAddressDetails>())).Callback(() => iIpAddressDetailsFromDb.City = detailsToUpdateOnDb.City).ReturnsAsync(true);

            var addressDetailsService = new IpAddressDetailsService(mockAddressDetailsRepository.Object);

            //Action

            var result = await addressDetailsService.UpdateGeoLocationData(detailsToUpdateOnDb);

            //Assert

            mockAddressDetailsRepository.Verify(m => m.GetById(It.IsAny <long>()), Times.Once);

            Assert.AreEqual(iIpAddressDetailsFromDb.City, detailsToUpdateOnDb.City);

            Assert.IsTrue(result);
        }
Exemple #6
0
        public async Task GetAllGeoLocationData_ObjectsExistInDatabase_AllObjectsAreReturned()
        {
            //Arrange
            var objects = new List <IpAddressDetails>()
            {
                new IpAddressDetails()
                {
                    City          = "City",
                    ContinentCode = "Code",
                    ContinentName = "ConnectionName",
                    CountryCode   = "ContryCode FROM DB",
                    CountryName   = "CountryName FROM DB",
                    DatabaseId    = new MongoDB.Bson.ObjectId(),
                    Hostname      = "FROM DB",
                    Id            = 1,
                    Ip            = "127.0.0.1"
                },
                new IpAddressDetails()
                {
                    City          = "NEW CITY",
                    ContinentCode = "Code 123 ",
                    ContinentName = "ConnectionName asdas",
                    CountryCode   = "ContryCode 123",
                    CountryName   = "CountryName asd12",
                    DatabaseId    = new MongoDB.Bson.ObjectId(),
                    Hostname      = "hostName vxc231",
                    Id            = 1,
                    Ip            = "127.0.0.1"
                },
            };

            var mockAddressDetailsRepository = new Mock <IIpAddressDetailsRepository>();

            mockAddressDetailsRepository.Setup(m => m.GetAll()).ReturnsAsync(objects);

            var addressDetailsService = new IpAddressDetailsService(mockAddressDetailsRepository.Object);

            //Action

            var result = await addressDetailsService.GetAllGeoLocationData();

            //Assert

            mockAddressDetailsRepository.Verify(m => m.GetAll(), Times.Once);

            Assert.IsNotEmpty(result);

            Assert.AreEqual(2, result.ToList().Count);
        }