public async Task Get_Flight_History_By_Original_Id()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);


            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(12),
                LandingTime          = DateTime.Now.AddHours(16),
                RemainingTickets     = 15
            };

            var response = await _httpClient.PostAsync("api/flights",
                                                       new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            var responseContent = await response.Content.ReadAsStringAsync();

            Flight flightResult = JsonSerializer.Deserialize <Flight>(responseContent, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            var deleteResponse = await _httpClient.DeleteAsync($"api/flights/{flightResult.Id}");

            var getResponse = await _httpClient.GetAsync($"api/history/flights/{flightResult.Id}");

            Assert.AreEqual(HttpStatusCode.OK, getResponse.StatusCode);
        }
Exemplo n.º 2
0
        public async Task Purchase_And_Get_List_Of_Flights()
        {
            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(2),
                LandingTime          = DateTime.Now.AddHours(6),
                RemainingTickets     = 1
            };

            await TestHelpers.Create_Flight_For_Tests(_httpClient, createFlightDTO);

            CreateCustomerDTO createCustomerDTO = await TestHelpers.Customer_Login(_httpClient);

            long flight_id = 1;

            await _httpClient.PostAsync("api/tickets",
                                        new StringContent(JsonSerializer.Serialize(flight_id), Encoding.UTF8, MediaTypeNames.Application.Json));

            flight_id = 2;

            await _httpClient.PostAsync("api/tickets",
                                        new StringContent(JsonSerializer.Serialize(flight_id), Encoding.UTF8, MediaTypeNames.Application.Json));

            var response = await _httpClient.GetAsync("api/customer/flights");

            var responseContent = await response.Content.ReadAsStringAsync();

            List <Flight> flightsResult = JsonSerializer.Deserialize <List <Flight> >(responseContent, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            Assert.AreEqual(flightsResult.Count, 2);
        }
        public async Task Create_New_Flight_With_Dates_In_Past_Should_Return_Bad_Request()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(-12),
                LandingTime          = DateTime.Now.AddHours(-6),
                RemainingTickets     = 15
            };
            var response = await _httpClient.PostAsync("api/flights",
                                                       new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);

            var responseContent = await response.Content.ReadAsStringAsync();

            var result = JsonSerializer.Deserialize <ValidationProblemDetails>(responseContent, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            Assert.AreEqual(result.Errors.Count, 2);
        }
        public async Task Remove_Flight_That_Belongs_To_Another_Airline_Should_Return_Forbidden()
        {
            CreateAirlineCompanyDTO createAirlineCompanyDTO = new CreateAirlineCompanyDTO
            {
                Name      = "Arkia",
                CountryId = 1,
                User      = new CreateUserDTO
                {
                    UserName = "******",
                    Password = "******",
                    Email    = "*****@*****.**",
                }
            };

            await TestHelpers.Airline_Company_Login(_httpClient, createAirlineCompanyDTO);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(12),
                LandingTime          = DateTime.Now.AddHours(16),
                RemainingTickets     = 15
            };

            await _httpClient.PostAsync("api/flights",
                                        new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            await TestHelpers.Airline_Company_Login(_httpClient);

            var deleteResponse = await _httpClient.DeleteAsync($"api/flights/1");

            Assert.AreEqual(HttpStatusCode.Forbidden, deleteResponse.StatusCode);
        }
        public async Task Get_All_Tickets_By_Flight()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(2),
                LandingTime          = DateTime.Now.AddHours(6),
                RemainingTickets     = 15
            };
            await _httpClient.PostAsync("api/flights",
                                        new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            await TestHelpers.Customer_Login(_httpClient);

            long flight_id = 1;

            await _httpClient.PostAsync("api/tickets",
                                        new StringContent(JsonSerializer.Serialize(flight_id), Encoding.UTF8, MediaTypeNames.Application.Json));

            CreateCustomerDTO createCustomerDTO = new CreateCustomerDTO
            {
                FirstName        = "Customer2",
                LastName         = "Custom2",
                Address          = null,
                PhoneNumber      = "052-5555512",
                CreditCardNumber = null,
                User             = new CreateUserDTO
                {
                    UserName = "******",
                    Password = "******",
                    Email    = "*****@*****.**",
                }
            };

            await TestHelpers.Customer_Login(_httpClient, createCustomerDTO);

            await _httpClient.PostAsync("api/tickets",
                                        new StringContent(JsonSerializer.Serialize(flight_id), Encoding.UTF8, MediaTypeNames.Application.Json));

            await TestHelpers.Airline_Company_Login(_httpClient, create_airline : false);

            var response = await _httpClient.GetAsync($"api/airline-company/flights/{flight_id}/tickets");

            var responseContent = await response.Content.ReadAsStringAsync();

            List <TicketDetailsDTO> ticketsResult = JsonSerializer.Deserialize <List <TicketDetailsDTO> >(responseContent, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            Assert.AreEqual(ticketsResult.Count, 2);
        }
        public async Task Create_And_Get_New_Flight()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(2),
                LandingTime          = DateTime.Now.AddHours(6),
                RemainingTickets     = 15
            };
            var response = await _httpClient.PostAsync("api/flights",
                                                       new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            var responseContent = await response.Content.ReadAsStringAsync();

            Flight flightPostResult = JsonSerializer.Deserialize <Flight>(responseContent, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });
            var    linkGeneratorService = _serviceProvider.GetRequiredService <LinkGenerator>();
            string createdPath          = linkGeneratorService.GetPathByAction(nameof(AnonymousFacadeController.GetFlightById), "AnonymousFacade", new { id = flightPostResult.Id });

            Assert.AreEqual(response.Headers.Location.OriginalString, createdPath);

            Assert.AreEqual(flightPostResult.Id, 1);

            var    mapperService     = _serviceProvider.GetRequiredService <IMapper>();
            Flight mappedFlightInput = mapperService.Map <Flight>(createFlightDTO);

            mappedFlightInput.Id             = flightPostResult.Id;
            mappedFlightInput.AirlineCompany = flightPostResult.AirlineCompany;

            TestHelpers.CompareProps(mappedFlightInput, flightPostResult);

            var response2 = await _httpClient.GetAsync($"api/flights/{flightPostResult.Id}");

            Assert.AreEqual(HttpStatusCode.OK, response2.StatusCode);

            var responseContent2 = await response2.Content.ReadAsStringAsync();

            FlightDetailsDTO flightGetResult = JsonSerializer.Deserialize <FlightDetailsDTO>(responseContent2, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            TestHelpers.CompareProps(flightGetResult, mapperService.Map <FlightDetailsDTO>(flightPostResult), true);
        }
        public async Task Get_List_Of_Flights()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(12),
                LandingTime          = DateTime.Now.AddHours(16),
                RemainingTickets     = 15
            };

            await _httpClient.PostAsync("api/flights",
                                        new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            await _httpClient.PostAsync("api/flights",
                                        new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            await _httpClient.PostAsync("api/flights",
                                        new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            var response = await _httpClient.GetAsync("api/flights");

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            var responseContent = await response.Content.ReadAsStringAsync();

            List <FlightDetailsDTO> flightsListResult = JsonSerializer.Deserialize <List <FlightDetailsDTO> >(responseContent, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            Assert.AreEqual(flightsListResult.Count, 3);

            var response2 = await _httpClient.GetAsync($"api/airline-company/flights");

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            var responseContent2 = await response2.Content.ReadAsStringAsync();

            List <FlightDetailsDTO> flightsByAirlineCompanyListResult = JsonSerializer.Deserialize <List <FlightDetailsDTO> >(responseContent2, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            Assert.AreEqual(flightsByAirlineCompanyListResult.Count, 3);
        }
        public async Task Create_New_Flight_With_Country_Id_That_Not_Exists_Should_Return_Not_Found()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 2,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(12),
                LandingTime          = DateTime.Now.AddHours(16),
                RemainingTickets     = 15
            };
            var response = await _httpClient.PostAsync("api/flights",
                                                       new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
        }
Exemplo n.º 9
0
        internal static async Task Create_Flight_For_Tests(HttpClient httpClient, CreateFlightDTO createFlightDTO = null)
        {
            if (createFlightDTO == null)
            {
                createFlightDTO = new CreateFlightDTO
                {
                    OriginCountryId      = 1,
                    DestinationCountryId = 1,
                    DepartureTime        = DateTime.Now.AddHours(2),
                    LandingTime          = DateTime.Now.AddHours(6),
                    RemainingTickets     = 15
                };
            }

            await httpClient.PostAsync("api/flights",
                                       new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));
        }
        public async Task Get_All_Tickets_By_Flight_That_has_No_Tickets_Should_Return_No_Content()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(2),
                LandingTime          = DateTime.Now.AddHours(6),
                RemainingTickets     = 15
            };
            await _httpClient.PostAsync("api/flights",
                                        new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            var response = await _httpClient.GetAsync($"api/airline-company/flights/1/tickets");

            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
        }
Exemplo n.º 11
0
        public ActionResult <Flight> CreateFlight(CreateFlightDTO createFlightDTO)
        {
            LoginToken <AirlineCompany> airline_token = DesirializeToken();

            Flight flight = _mapper.Map <Flight>(createFlightDTO);

            string uri = null;

            try
            {
                flight.Id = _loggedInAirlineFacade.CreateFlight(airline_token, flight);

                uri = _linkGenerator.GetPathByAction(nameof(AnonymousFacadeController.GetFlightById), "AnonymousFacade", new { id = flight.Id });
            }
            catch (RelatedRecordNotExistsException)
            {
                return(NotFound());
            }

            return(Created(uri, flight));
        }
Exemplo n.º 12
0
        public async Task Purchase_Ticket_For_Flight_That_Left_Should_Return_Gone()
        {
            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddSeconds(5),
                LandingTime          = DateTime.Now.AddHours(6),
                RemainingTickets     = 100
            };

            await TestHelpers.Create_Flight_For_Tests(_httpClient, createFlightDTO);

            await TestHelpers.Customer_Login(_httpClient);

            long flight_id = 2;

            var response = await _httpClient.PostAsync("api/tickets",
                                                       new StringContent(JsonSerializer.Serialize(flight_id), Encoding.UTF8, MediaTypeNames.Application.Json));

            Assert.AreEqual(HttpStatusCode.Gone, response.StatusCode);
        }
        public async Task Update_Flight_With_Country_Id_That_Not_Exists_Should_Return_Not_Found()
        {
            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(12),
                LandingTime          = DateTime.Now.AddHours(16),
                RemainingTickets     = 15
            };

            var response = await _httpClient.PostAsync("api/flights",
                                                       new StringContent(JsonSerializer.Serialize(createFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            var responseContent = await response.Content.ReadAsStringAsync();

            Flight flightResult = JsonSerializer.Deserialize <Flight>(responseContent, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            UpdateFlightDTO updateFlightDTO = new UpdateFlightDTO
            {
                Id = flightResult.Id,
                OriginCountryId      = 2,
                DestinationCountryId = 1,
                DepartureTime        = DateTime.Now.AddHours(10),
                LandingTime          = DateTime.Now.AddHours(16),
                RemainingTickets     = 10
            };

            var putResponse = await _httpClient.PutAsync($"api/flights/{flightResult.Id}",
                                                         new StringContent(JsonSerializer.Serialize(updateFlightDTO), Encoding.UTF8, MediaTypeNames.Application.Json));

            Assert.AreEqual(HttpStatusCode.NotFound, putResponse.StatusCode);
        }
Exemplo n.º 14
0
        public async Task SetUp()
        {
            _httpClient = _testHostFixture.Client;
            TestsDAOPGSQL.ClearDB();
            await TestHelpers.Create_Country_For_Tests(_httpClient);

            await TestHelpers.Create_Country_For_Tests(_httpClient, new CreateCountryDTO { Name = "Usa" });

            await TestHelpers.Create_Country_For_Tests(_httpClient, new CreateCountryDTO { Name = "Russia" });

            await TestHelpers.Create_Country_For_Tests(_httpClient, new CreateCountryDTO { Name = "Italy" });

            await TestHelpers.Airline_Company_Login(_httpClient);

            CreateFlightDTO createFlightDTO = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 2,
                DepartureTime        = DateTime.Now.AddDays(1),
                LandingTime          = DateTime.Now.AddDays(2),
                RemainingTickets     = 15
            };
            await TestHelpers.Create_Flight_For_Tests(_httpClient, createFlightDTO);

            CreateFlightDTO createFlightDTO2 = new CreateFlightDTO
            {
                OriginCountryId      = 1,
                DestinationCountryId = 2,
                DepartureTime        = DateTime.Now.AddDays(2),
                LandingTime          = DateTime.Now.AddDays(3),
                RemainingTickets     = 15
            };
            await TestHelpers.Create_Flight_For_Tests(_httpClient, createFlightDTO2);

            CreateFlightDTO createFlightDTO3 = new CreateFlightDTO
            {
                OriginCountryId      = 3,
                DestinationCountryId = 4,
                DepartureTime        = DateTime.Now.AddDays(2),
                LandingTime          = DateTime.Now.AddDays(3),
                RemainingTickets     = 15
            };
            await TestHelpers.Create_Flight_For_Tests(_httpClient, createFlightDTO3);

            CreateFlightDTO createFlightDTO4 = new CreateFlightDTO
            {
                OriginCountryId      = 3,
                DestinationCountryId = 4,
                DepartureTime        = DateTime.Now.AddDays(4),
                LandingTime          = DateTime.Now.AddDays(5),
                RemainingTickets     = 15
            };
            await TestHelpers.Create_Flight_For_Tests(_httpClient, createFlightDTO4);

            CreateFlightDTO createFlightDTO5 = new CreateFlightDTO
            {
                OriginCountryId      = 2,
                DestinationCountryId = 4,
                DepartureTime        = DateTime.Now.AddDays(1),
                LandingTime          = DateTime.Now.AddDays(2),
                RemainingTickets     = 15
            };
            await TestHelpers.Create_Flight_For_Tests(_httpClient, createFlightDTO5);
        }