def test_book_single_flight_for_user_user_not_exist(self):
        '''Book Flight for User Account - Invalid :- When user does not exist'''
        reservation_data = self.valid_reservation_data.copy()
        response = self.client.post(
            reverse(
                'account-reservations-reservations',
                kwargs={
                    'version': 'v1',
                    'pk': uuid.uuid4()
                }
            ),
            data=reservation_data,
            HTTP_AUTHORIZATION=utils.generate_token(self.super_user)
        )
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
        self.assertEqual(
            response.data.get('errors').get('global'),
            'No Accounts matches the given query.'
        )
        self.assertEqual(
            response.data.get('message'),
            'An error has occured.'
        )
Ejemplo n.º 2
0
    def test_schedule_airline_daily_flights_when_departure_same_as_arrival(
            self):
        '''Schedule Single Flight for Airline - Invalid :- When Departure and Arrival are same airport'''
        flight_data = self.flight_schedule.copy()

        flight_data['departure_airport'] = flight_data['arrival_airport']
        response = self.client.post(reverse('airlines-daily-schedule',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': 'DL'
                                            }),
                                    data=flight_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.super_user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('departure_airport')['message'],
            'Arrival airport cant be same as departure.')
        self.assertEqual(
            response.data.get('errors').get('departure_airport')['type'],
            'invalid')
        self.assertEqual(
            response.data.get('errors').get('arrival_airport')['message'],
            'Arrival airport cant be same as departure.')
        self.assertEqual(
            response.data.get('errors').get('arrival_airport')['type'],
            'invalid')
    def test_book_single_flight_for_user_bad_permission(self):
        '''Book Flight for User Account - Invalid :- When User does not have sufficient permission'''
        reservation_data = self.valid_reservation_data
        response = self.client.post(
            reverse(
                'account-reservations-reservations',
                kwargs={
                    'version': 'v1',
                    'pk': self.super_user.account.id,
                }
            ),
            data=reservation_data,
            HTTP_AUTHORIZATION=utils.generate_token(self.user)
        )
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertEqual(
            response.data.get('errors').get('global'),
            'Insufficient Permission.'
        )
        self.assertEqual(
            response.data.get('message'),
            'An error has occured.'
        )
Ejemplo n.º 4
0
    def test_make_reservation_when_return_same_as_first_flight(self):
        '''Make Reservation For self - Invalid :- When Return Flight same as First Flight'''
        reservation_data = self.valid_reservation_data_return.copy()

        reservation_data['return_flight'] = reservation_data['first_flight']
        response = self.client.post(reverse('reservations-list',
                                            kwargs={
                                                'version': 'v1',
                                            }),
                                    data=reservation_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('return_flight')['message'],
            'Return Flight cannot be same as first flight.')
        self.assertEqual(
            response.data.get('errors').get('return_flight')['type'],
            'invalid')
        self.assertEqual(
            response.data.get('errors').get('first_flight')['message'],
            'Return Flight cannot be same as first flight.')
        self.assertEqual(
            response.data.get('errors').get('first_flight')['type'], 'invalid')
    def test_book_single_flight_for_user_missing_fields(self):
        '''Book Flight for User Account - Invalid :- When Not all fields are sent in'''
        reservation_data = self.valid_reservation_data.copy()

        del reservation_data['first_flight']
        response = self.client.post(
            reverse(
                'account-reservations-reservations',
                kwargs={
                    'version': 'v1',
                    'pk': self.user.account.id,
                }
            ),
            data=reservation_data,
            HTTP_AUTHORIZATION=utils.generate_token(self.user)
        )
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('first_flight')['message'],
            'This field is required.'
        )
        self.assertEqual(
            response.data.get('errors').get('first_flight')['type'],
            'required'
        )
    def test_book_single_flight_for_user(self):
        '''Book Flight for User Account - Valid :- '''
        reservation_data = self.valid_reservation_data.copy()

        response = self.client.post(
            reverse(
                'account-reservations-reservations',
                kwargs={
                    'version': 'v1',
                    'pk': self.user.account.id,
                }
            ),
            data=reservation_data,
            HTTP_AUTHORIZATION=utils.generate_token(self.user)
        )
        self.assertTrue(response.data.get('success'))

        payload = response.data.get('payload')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        self.assertEqual(
            payload.get('flight_class'), reservation_data.get('flight_class')
        )
        self.assertEqual(
            payload.get('reserved_by').get('full_name'),
            '{} {}'.format(self.user.first_name, self.user.last_name)
        )
        self.assertEqual(
            response.data.get('message'),
            'Reservation made Successfully.'
        )
Ejemplo n.º 7
0
 def test_filter_airlines(self):
     '''Filter list of all Airlines - Valid: No filters'''
     response = self.client.get(reverse('airlines-list',
                                        kwargs={
                                            'version': 'v1',
                                        }),
                                HTTP_AUTHORIZATION=utils.generate_token(
                                    self.super_user))
     payload = response.data.get('payload')
     self.assertTrue(response.data.get('success'))
     self.assertGreaterEqual(payload.get('count'), 1)
Ejemplo n.º 8
0
 def test_filter_airline_schedule(self):
     '''List/Filter Airline Flight Schedule - Valid'''
     reservation_factory.create_single_flight(airline='WT')
     response = self.client.get(reverse('airlines-schedule',
                                        kwargs={
                                            'version': 'v1',
                                            'pk': 'WT'
                                        }),
                                HTTP_AUTHORIZATION=utils.generate_token(
                                    self.super_user))
     payload = response.data.get('payload')
     self.assertTrue(response.data.get('success'))
     self.assertGreaterEqual(len(payload), 1)
    def test_list_flights_filter_dates(self):
        '''List/Filter Flights - Valid :-Filter by Dates'''
        response = self.client.get(
            reverse('flights-list', kwargs={
                'version': 'v1',
            }),
            data={'date': timezone.now() + timedelta(days=1)},
            HTTP_AUTHORIZATION=utils.generate_token(self.user))
        payload = response.data.get('payload')

        self.assertTrue(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_200_OK)
Ejemplo n.º 10
0
 def test_retrieve_reservation(self):
     '''Retrieve Reservation - Valid : payload correct'''
     response = self.client.get(
         reverse('reservations-detail',
                 kwargs={
                     'version': 'v1',
                     'pk': self.return_ticket_reservation.id,
                 }),
         HTTP_AUTHORIZATION=utils.generate_token(self.user))
     payload = response.data.get('payload')
     self.assertTrue(response.data.get('success'))
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(payload.get('flight_class'),
                      self.return_ticket_reservation.flight_class)
Ejemplo n.º 11
0
    def test_retrieve_reservation_not_for_user(self):
        '''Retrieve Single Reservation - Invalid :- Bad permission'''
        response = self.client.get(
            reverse('reservations-detail',
                    kwargs={
                        'version': 'v1',
                        'pk': self.single_ticket_reservation.id
                    }),
            HTTP_AUTHORIZATION=utils.generate_token(self.user2))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

        self.assertEqual(response.data.get('message'), 'An error has occured.')
    def test_list_flights_no_query_params(self):
        '''List/Filter Flights - Valid :- No filter'''
        response = self.client.get(reverse('flights-list',
                                           kwargs={
                                               'version': 'v1',
                                           }),
                                   HTTP_AUTHORIZATION=utils.generate_token(
                                       self.user))
        payload = response.data.get('payload')

        self.assertTrue(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(payload), 2)
Ejemplo n.º 13
0
    def test_filter_airlines_filter_code(self):
        '''Filter list of all Airlines - Valid: filter Code'''
        response = self.client.get(reverse('airlines-list',
                                           kwargs={
                                               'version': 'v1',
                                           }),
                                   data={'code': 'BA'},
                                   HTTP_AUTHORIZATION=utils.generate_token(
                                       self.super_user))
        payload = response.data.get('payload')
        self.assertTrue(response.data.get('success'))
        self.assertEqual(payload.get('count'), 1)

        self.assertEqual(
            payload.get('results')[0].get('airline_name'), 'British Airways')
Ejemplo n.º 14
0
    def test_list_reservations_by_year(self):
        '''List/Filter Reservations by Year- Valid :- Payload correct'''
        response = self.client.get(
            reverse('reservations-filter-reservations-by-year',
                    kwargs={
                        'version': 'v1',
                        'year': timezone.now().year
                    }),
            HTTP_AUTHORIZATION=utils.generate_token(self.super_user))

        payload = response.data.get('payload')

        self.assertTrue(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_200_OK)
    def test_list_flights_filter_by_arrival_airport(self):
        '''List/Filter Flights - Valid :-Filter by Airports (Arrival)'''
        response = self.client.get(reverse('flights-list',
                                           kwargs={
                                               'version': 'v1',
                                           }),
                                   data={'destination': 'London Heathrow'},
                                   HTTP_AUTHORIZATION=utils.generate_token(
                                       self.user))
        payload = response.data.get('payload')

        self.assertTrue(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(payload), 1)
Ejemplo n.º 16
0
    def test_list_reservations(self):
        '''List/Filter All Reservations - Valid :- Payload correct'''
        response = self.client.get(reverse('reservations-list',
                                           kwargs={
                                               'version': 'v1',
                                           }),
                                   HTTP_AUTHORIZATION=utils.generate_token(
                                       self.super_user))

        payload = response.data.get('payload')

        self.assertTrue(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(payload.get('count'), 2)
        self.assertEqual(len(payload.get('results')), 2)
Ejemplo n.º 17
0
    def test_list_flights_by_month_invalid_month(self):
        '''List/Filter Reservations by Month - Invalid :- Invalid Month'''
        response = self.client.get(
            reverse('reservations-filter-reservations-by-month',
                    kwargs={
                        'version': 'v1',
                        'year': timezone.now().year,
                        'month': 26
                    }),
            HTTP_AUTHORIZATION=utils.generate_token(self.super_user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('global'), 'Not a valid month.')
        self.assertEqual(response.data.get('message'), 'An error has occured.')
    def test_make_reservation_for_flight_invalid_flight(self):
        '''Make Reservation for Flight - Invalid :-  When Flight pk is of invalid type'''
        reservation_data = self.valid_reservation_data.copy()

        response = self.client.post(reverse('flights-reservations',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': 'WTA'
                                            }),
                                    data=reservation_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
        self.assertEqual(response.data.get('message'), 'An error has occured.')
    def test_book_single_flight_for_user_when_return_airport_different(self):
        '''Book Flight for User Account - Invalid :- When Return Flight Lands in different city'''
        reservation_data = self.valid_reservation_data.copy()

        return_flight = create_single_flight(
            flight_number='0192',
            departure_airport='LOS',
            arrival_airport='JFK',
            expected_departure=timezone.now() + timedelta(days=1),
            expected_arrival=timezone.now() + timedelta(days=1, hours=12)
        )

        reservation_data['return_flight'] = return_flight.id
        reservation_data['ticket_type'] = Reservation.RETURN

        response = self.client.post(
            reverse(
                'account-reservations-reservations',
                kwargs={
                    'version': 'v1',
                    'pk': self.user.account.id
                }
            ),
            data=reservation_data,
            HTTP_AUTHORIZATION=utils.generate_token(self.user)
        )

        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('return_flight')['message'],
            'Return Flight must land in same city as first flight.',
        )
        self.assertEqual(
            response.data.get('errors').get('return_flight')['type'],
            'invalid'
        )
        self.assertEqual(
            response.data.get('errors').get('first_flight')['message'],
            'Return Flight must land in same city as first flight.',
        )
        self.assertEqual(
            response.data.get('errors').get('first_flight')['type'],
            'invalid'
        )
Ejemplo n.º 20
0
    def test_make_reservation_bad_permission(self):
        '''Make Reservation For self - Invalid :- When User does not have sufficient permission'''
        reservation_data = self.valid_reservation_data
        response = self.client.post(reverse('reservations-list',
                                            kwargs={
                                                'version': 'v1',
                                            }),
                                    data=reservation_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.super_user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertEqual(
            response.data.get('errors').get('global'),
            'Insufficient Permission.')
        self.assertEqual(response.data.get('message'), 'An error has occured.')
    def test_make_reservation_for_flight__flight_not_exist(self):
        '''Make Reservation for Flight - Invalid :- When Flight does not exist'''
        reservation_data = self.valid_reservation_data.copy()

        response = self.client.post(reverse('flights-reservations',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': uuid.uuid4()
                                            }),
                                    data=reservation_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.user))
        self.assertFalse(response.data.get('success'))
        self.assertEqual(
            response.data.get('errors').get('global'),
            'No Flight matches the given query.')
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
        self.assertEqual(response.data.get('message'), 'An error has occured.')
Ejemplo n.º 22
0
    def test_retrieve_reservation_by_email(self, mock_celery):
        '''Retrieve Reservation by Email - Valid : payload correct'''
        response = self.client.get(
            reverse('reservations-send-reservation-email',
                    kwargs={
                        'version': 'v1',
                        'pk': self.single_ticket_reservation.id,
                    }),
            HTTP_AUTHORIZATION=utils.generate_token(self.user1))
        payload = response.data.get('payload')

        self.assertTrue(response.data.get('success'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data.get('message'), 'Email Sent!.')
        self.assertEqual(payload.get('flight_class'),
                         self.single_ticket_reservation.flight_class)

        self.assertTrue(mock_celery.assert_called_once, 1)
Ejemplo n.º 23
0
    def test_schedule_airline_weekly_flights_bad_permission(self):
        '''Create Weekly Schedule Flight for Airline - Invalid :- When User does not have sufficient permission'''
        schedule_flight_data = self.flight_schedule
        response = self.client.post(reverse('airlines-weekly-schedule',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': 'BA'
                                            }),
                                    data=schedule_flight_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertEqual(
            response.data.get('errors').get('global'),
            'Insufficient Permission.')
        self.assertEqual(response.data.get('message'), 'An error has occured.')
Ejemplo n.º 24
0
    def test_make_reservation_flight_not_exist(self):
        '''Make Reservation For self - Invalid :- When Flight does not exist'''
        reservation_data = self.valid_reservation_data.copy()
        del reservation_data['first_flight']
        response = self.client.post(reverse('reservations-list',
                                            kwargs={
                                                'version': 'v1',
                                            }),
                                    data=reservation_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('first_flight')['message'],
            'This field is required.')
        self.assertEqual(
            response.data.get('errors').get('first_flight')['type'],
            'required')
Ejemplo n.º 25
0
    def test_schedule_airline_weekly_flights_invalid_airline(self):
        '''Create Weekly Schedule Flight for Airline - Invalid :- When airline does not exist'''
        flight_data = self.flight_schedule.copy()

        del flight_data['time_of_flight']
        response = self.client.post(reverse('airlines-weekly-schedule',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': 'BIH'
                                            }),
                                    data=flight_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.super_user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
        self.assertEqual(
            response.data.get('errors').get('global'),
            'No Airline matches the given query.')
        self.assertEqual(response.data.get('message'), 'An error has occured.')
Ejemplo n.º 26
0
    def test_schedule_airline_weekly_flights_missing_fields(self):
        '''Create Weekly Schedule Flight for Airline - Invalid :- When Not all fields are sent in'''
        flight_data = self.flight_schedule.copy()

        del flight_data['period']
        response = self.client.post(reverse('airlines-weekly-schedule',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': 'VA'
                                            }),
                                    data=flight_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.super_user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('period')['message'],
            'This field is required.')
        self.assertEqual(
            response.data.get('errors').get('period')['type'], 'required')
Ejemplo n.º 27
0
    def test_make_reservation(self):
        '''Make Reservation For self - Valid :- When Information is Valid'''
        reservation_data = self.valid_reservation_data
        response = self.client.post(reverse('reservations-list',
                                            kwargs={
                                                'version': 'v1',
                                            }),
                                    data=reservation_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.user))
        self.assertTrue(response.data.get('success'))

        payload = response.data.get('payload')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

        self.assertEqual(payload.get('flight_class'),
                         reservation_data.get('flight_class'))
        self.assertEqual(
            payload.get('reserved_by').get('full_name'),
            '{} {}'.format(self.user.first_name, self.user.last_name))
        self.assertEqual(response.data.get('message'),
                         'Reservation made Successfully.')
Ejemplo n.º 28
0
    def test_schedule_airline_single_flight(self):
        '''Schedule Single Flight for Airline - Valid :- When information provided okay'''
        flight_data = self.single_flight_schedule
        response = self.client.post(reverse('airlines-schedule',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': 'VS'
                                            }),
                                    data=flight_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.super_user))
        payload = response.data.get('payload')
        self.assertTrue(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(payload.get('flight_designation'),
                         'VS{}'.format(flight_data.get('flight_number')))

        self.assertEqual(payload.get('departure_airport'),
                         flight_data.get('departure_airport'))
        self.assertEqual(payload.get('arrival_airport'),
                         flight_data.get('arrival_airport'))
Ejemplo n.º 29
0
    def test_schedule_airline_weekly_flights_invalid_departure_airport(self):
        '''Create Weekly Schedule Flight for Airline - Invalid :- When departure airport does not exist'''
        flight_data = self.flight_schedule.copy()

        flight_data['departure_airport'] = 'USOSP'
        response = self.client.post(reverse('airlines-weekly-schedule',
                                            kwargs={
                                                'version': 'v1',
                                                'pk': 'BA'
                                            }),
                                    data=flight_data,
                                    HTTP_AUTHORIZATION=utils.generate_token(
                                        self.super_user))
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data.get('errors').get('departure_airport')['message'],
            'Invalid pk \"USOSP\" - object does not exist.')
        self.assertEqual(
            response.data.get('errors').get('departure_airport')['type'],
            'does_not_exist')
    def test_list_airlines_bad_permission(self):
        '''List/Filter Own Reservations - Invalid :- Insufficient Permissions'''
        response = self.client.get(
            reverse(
                'account-reservations-reservations',
                kwargs={
                    'version': 'v1',
                    'pk': self.super_user.account.id
                }
            ),
            HTTP_AUTHORIZATION=utils.generate_token(self.user)
        )
        self.assertFalse(response.data.get('success'))

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertEqual(
            response.data.get('errors').get('global'),
            'Insufficient Permission.'
        )
        self.assertEqual(
            response.data.get('message'),
            'An error has occured.'
        )