コード例 #1
0
ファイル: testUUID.py プロジェクト: InspectorIncognito/server
    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.userId2 = "4f20c8f4-ddea-4c6c-87bb-c7bd3d435a51"

        # loads the events
        self.helper = TestHelper(self)
        self.helper.insertEventsOnDatabase()

        # add dummy  bus
        self.licencePlate = 'AA1111'
        self.service = '507'

        self.machineId = self.helper.askForMachineId(self.licencePlate)
        self.helper.getInBusWithMachineId(
            self.userId, self.service, self.machineId)

        # add dummy bus stop
        self.helper.insertBusstopsOnDatabase(['PA459'])

        # add dummy service and its patha
        self.service = '507'
        self.direction = 'I'
        self.helper.insertServicesOnDatabase([self.service])

        self.helper.insertServiceStopDistanceOnDatabase(
            self.service, self.direction)

        self.helper.insertServiceLocationOnDatabase(
            self.service, self.direction)
コード例 #2
0
ファイル: tests.py プロジェクト: InspectorIncognito/server
    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"

        # inital config for DevicePositionInTime
        self.time = timezone.now()
        DevicePositionInTime.objects.create(
            userId=self.userId,
            longitud=3.5,
            latitud=5.2,
            timeStamp=self.time)
        DevicePositionInTime.objects.create(
            userId=self.userId,
            longitud=3.4,
            latitud=5.2,
            timeStamp=self.time)
        # this should not be answered
        DevicePositionInTime.objects.create(userId=self.userId, longitud=3.3, latitud=4.2, timeStamp=self.time
                                            - timezone.timedelta(minutes=11))

        # initial config for ActiveToken

        self.test = TestHelper(self)

        self.test.insertEventsOnDatabase()

        # add dummy  bus
        Bus.objects.create(
            registrationPlate='AA1111',
            service='507',
            uuid='159fc6b7-7a20-477e-b5c7-af421e1e0e16')
        # add dummy bus stop
        busStop = BusStop.objects.create(
            code='PA459', name='bla', longitud=0, latitud=0)

        # add dummy service and its path
        # '#00a0f0'color_id = models.IntegerField(default = 0)
        Service.objects.create(
            service='507',
            origin='origin_test',
            destiny='destination_test')
        ServiceStopDistance.objects.create(
            busStop=busStop, service='507I', distance=5)
        ServiceLocation.objects.create(
            service='507I', distance=1, longitud=4, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=2, longitud=5, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=3, longitud=6, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=4, longitud=7, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=5, longitud=8, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=6, longitud=9, latitud=5)
コード例 #3
0
    def setUp(self):
        """ this method will automatically call for every single test """

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"

        self.helper = TestHelper(self)

        self.service = "507"
        self.licencePlate = "PABJ45"

        self.helper.insertServicesOnDatabase([self.service])
コード例 #4
0
class CronTasksTestCase(TestCase):
    """ test for cron-task actions """

    def setUp(self):
        self.userId = '067e6162-3b6f-4ae2-a171-2470b63dff00'
        self.busService = '506'
        self.registrationPlate = 'XXYY25'

        self.helper = TestHelper(self)

    def test_clean_expired_active_token(self):

        # token requested. Simulate that request was asked double of time
        # defined in MINUTES_BEFORE_CLEAN_ACTIVE_TOKENS ago
        delta = cronTasks.MINUTES_BEFORE_CLEAN_ACTIVE_TOKENS * 2
        timeStamp = timezone.now() - timezone.timedelta(minutes=delta)

        token = self.helper.getInBusWithLicencePlate(
            self.userId, self.busService, self.registrationPlate, timeStamp)

        self.assertEqual(ActiveToken.objects.count(), 1)
        self.assertEqual(ActiveToken.objects.all().first().token_id, token)

        cronTasks.cleanActiveTokenTable()

        self.assertEqual(ActiveToken.objects.count(), 0)

    def test_keep_active_token(self):
        timeStamp = timezone.now()

        token = self.helper.getInBusWithLicencePlate(
            self.userId, self.busService, self.registrationPlate, timeStamp)

        self.assertEqual(ActiveToken.objects.count(), 1)
        self.assertEqual(ActiveToken.objects.all().first().token_id, token)

        cronTasks.cleanActiveTokenTable()

        self.assertEqual(ActiveToken.objects.count(), 1)
        self.assertEqual(ActiveToken.objects.all().first().token_id, token)
コード例 #5
0
    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"

        self.service = '507'
        self.stop = 'PA459'

        self.test = TestHelper(self)
        self.test.insertEventsOnDatabase()
        self.test.insertServicesOnDatabase([self.service])
        self.test.insertBusstopsOnDatabase([self.stop])
コード例 #6
0
    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.userId2 = "971087e3-b64c-4c22-88c2-2e1300ffd855"

        self.helper = TestHelper(self)

        self.service = '507'
        self.busStop = 'PA459'

        self.helper.insertServicesOnDatabase([self.service])
        self.helper.insertBusstopsOnDatabase([self.busStop])
        self.helper.insertServicesByBusstopsOnDatabase([self.busStop])
コード例 #7
0
    def setUp(self):
        self.factory = RequestFactory()

        self.test = TestHelper(self)
        self.test.insertEventsOnDatabase()

        # create bus stop
        self.stop = "PI62"
        self.test.insertBusstopsOnDatabase([self.stop])

        # define test events
        self.stopEventCode = "evn00010"
        self.busEventCode = "evn00200"

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.service = "506"
        self.registrationPlate = "XXYY25"
        self.machineId = self.test.askForMachineId(self.registrationPlate)
コード例 #8
0
ファイル: testUUID.py プロジェクト: InspectorIncognito/server
class DummyLicensePlateUUIDTest(TransactionTestCase):

    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.userId2 = "4f20c8f4-ddea-4c6c-87bb-c7bd3d435a51"

        # loads the events
        self.helper = TestHelper(self)
        self.helper.insertEventsOnDatabase()

        # add dummy  bus
        self.licencePlate = 'AA1111'
        self.service = '507'

        self.machineId = self.helper.askForMachineId(self.licencePlate)
        self.helper.getInBusWithMachineId(
            self.userId, self.service, self.machineId)

        # add dummy bus stop
        self.helper.insertBusstopsOnDatabase(['PA459'])

        # add dummy service and its patha
        self.service = '507'
        self.direction = 'I'
        self.helper.insertServicesOnDatabase([self.service])

        self.helper.insertServiceStopDistanceOnDatabase(
            self.service, self.direction)

        self.helper.insertServiceLocationOnDatabase(
            self.service, self.direction)

    def test_RequestTokenWithDummyLicensePlateUUID(self):
        ''' This method will test a token for a dummy license plate bus with uuid '''

        licencePlate = Constants.DUMMY_LICENSE_PLATE
        busService = '507'

        machineId = self.helper.askForMachineId(licencePlate)

        # a ghost bus is created with the same uuid that was recieved
        self.assertEqual(Busv2.objects.filter(uuid=machineId).exists(), True)

        testToken = self.helper.getInBusWithMachineId(
            self.userId, busService, machineId)

        # the created token is an active token
        self.assertEqual(
            ActiveToken.objects.filter(
                token=testToken).exists(), True)
        # the created token exist in the table of token
        self.assertEqual(Token.objects.filter(token=testToken).exists(), True)

        jsonResponse = self.helper.endRoute(testToken)

        self.assertEqual(jsonResponse['response'], 'Trip ended.')

    def test_RequestTokenV2WithRealLicencePlate(self):
        ''' This method will test a token for bus with uuid '''

        licencePlate = 'AA1111'
        busService = '507'

        machineId = self.helper.askForMachineId(licencePlate)

        # a ghost bus is created with the same uuid that was recieved
        self.assertEqual(Busv2.objects.filter(uuid=machineId).exists(), True)

        testToken = self.helper.getInBusWithMachineId(
            self.userId, busService, machineId)

        # the created token is an active token
        self.assertEqual(
            ActiveToken.objects.filter(
                token=testToken).exists(), True)
        # the created token exist in the table of token
        self.assertEqual(Token.objects.filter(token=testToken).exists(), True)

        jsonResponse = self.helper.endRoute(testToken)

        self.assertEqual(jsonResponse['response'], 'Trip ended.')

    def test_EventsByBusWithDummyLicensePlateUUID(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific dummy bus'''

        licencePlate = Constants.DUMMY_LICENSE_PLATE
        busService = '507'
        eventCode = 'evn00101'

        machineId = self.helper.askForMachineId(licencePlate)

        # a ghost bus is created with the same uuid that was recieved
        self.assertEqual(Busv2.objects.filter(uuid=machineId).exists(), True)

        testToken = self.helper.getInBusWithMachineId(
            self.userId, busService, machineId)

        # the created token is an active token
        self.assertEqual(
            ActiveToken.objects.filter(
                token=testToken).exists(), True)
        # the created token exist in the table of token
        self.assertEqual(Token.objects.filter(token=testToken).exists(), True)
        # the created token has the uuid for the dummybus
        # self.assertEqual(Token.objects.filter(uuid=puuid).exists(), True)

        # submitting one event to the server
        jsonResponse = self.helper.reportEventV2(
            self.userId, machineId, busService, eventCode)

        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        # verify the previous event reported
        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # do event +1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(self.userId, machineId, busService,
                                                           eventCode, 'confirm')

        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        # verify the previous event reported
        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(self.userId, machineId, busService,
                                                           eventCode, 'decline')

        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        # verify the previous event reported
        self.assertEqual(jsonResponse['uuid'], machineId)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # change manually the timeStamp to simulate an event that has expired
        bus = Busv2.objects.get(uuid=machineId)
        assignment = Busassignment.objects.get(service=busService, uuid=bus)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusv2.objects.get(
            busassignment=assignment, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for events and the answer should be none
        jsonResponse = self.helper.requestEventsForBusV2(machineId)

        self.assertEqual(len(jsonResponse['events']), 0)

    def test_EventsByBusv2(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific bus'''

        licencePlate = 'AA1111'
        busService = '507'
        eventCode = 'evn00101'

        machineId = self.helper.askForMachineId(licencePlate)

        # submitting one event to the server
        jsonResponse = self.helper.reportEventV2(
            self.userId, machineId, busService, eventCode)

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # getting events for a specific bus
        requestToRequestEventForBus = self.factory.get(
            '/android/requestEventsForBus/v2/')
        requestToRequestEventForBus.user = AnonymousUser()

        # verify the previous event reported
        requestEventForBusView = EventsByBusV2()
        responseToRequestEventForBus = requestEventForBusView.get(requestToRequestEventForBus,
                                                                  machineId)

        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(responseToRequestEventForBus[
                         'registrationPlate'], licencePlate)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventDecline'], 0)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # do event +1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(
            self.userId, machineId, busService, eventCode, 'confirm')

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        responseToRequestEventForBus = requestEventForBusView.get(requestToRequestEventForBus,
                                                                  machineId)
        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(responseToRequestEventForBus[
                         'registrationPlate'], licencePlate)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventDecline'], 0)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventConfirm'], 2)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        jsonResponse = self.helper.confirmOrDeclineEventV2(
            self.userId, machineId, busService, eventCode, 'decline')

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        responseToRequestEventForBus = requestEventForBusView.get(requestToRequestEventForBus,
                                                                  machineId)
        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(responseToRequestEventForBus[
                         'registrationPlate'], licencePlate)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventConfirm'], 2)
        self.assertEqual(responseToRequestEventForBus[
                         'events'][0]['eventcode'], eventCode)

        # change manually the timeStamp to simulate an event that has expired
        # bus= Bus.objects.get(registrationPlate=licencePlate, service=busService)
        bus = Busv2.objects.get(registrationPlate=licencePlate)
        busassignment = Busassignment.objects.get(uuid=bus, service=busService)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusv2.objects.get(
            busassignment=busassignment, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for events and the answer should be none
        responseToRequestEventForBus = requestEventForBusView.get(
            requestToRequestEventForBus, bus.uuid)
        responseToRequestEventForBus = json.loads(
            responseToRequestEventForBus.content)

        self.assertEqual(len(responseToRequestEventForBus['events']), 0)

    def test_EventsByBusStopv2(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific busStop'''

        busStopCode = 'PA459'
        eventCode = 'evn00001'
        # submitting some events to the server
        request = self.factory.get('/android/reportEventBusStop/v2/')
        request.user = AnonymousUser()

        request0 = self.factory.get('/android/requestEventsForBusStop/v2/')
        request0.user = AnonymousUser()

        reponseView = RegisterEventBusStop()
        # make a report
        reponseView.get(
            request,
            self.userId,
            busStopCode,
            eventCode,
            'confirm')

        # report one event, and confirm it
        response0View = EventsByBusStop()
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(response0['codeBusStop'], busStopCode)
        self.assertEqual(response0['events'][0]['eventDecline'], 0)
        self.assertEqual(response0['events'][0]['eventConfirm'], 1)
        self.assertEqual(response0['events'][0]['eventcode'], eventCode)

        # do event +1 to the event
        reponseView.get(
            request,
            self.userId,
            busStopCode,
            eventCode,
            'confirm')
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(response0['codeBusStop'], busStopCode)
        self.assertEqual(response0['events'][0]['eventDecline'], 0)
        self.assertEqual(response0['events'][0]['eventConfirm'], 2)
        self.assertEqual(response0['events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        reponseView.get(
            request,
            self.userId,
            busStopCode,
            eventCode,
            'decline')
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(response0['codeBusStop'], busStopCode)
        self.assertEqual(response0['events'][0]['eventDecline'], 1)
        self.assertEqual(response0['events'][0]['eventConfirm'], 2)
        self.assertEqual(response0['events'][0]['eventcode'], eventCode)

        # change manualy the timeStamp to simulate an event that has expired
        busStop = BusStop.objects.get(code=busStopCode)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusStop.objects.get(busStop=busStop, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for ecents and the answere should be none
        response0 = response0View.get(request0, busStopCode)
        response0 = json.loads(response0.content)

        self.assertEqual(len(response0['events']), 0)

    def test_RequestUUIDBasedOnLicensePlate(self):
        """ test the method to request an uuid based on license plate """
        licensePlates = ["AFJG21", "aFAf21", "AF-SD23", "FG-DF-45"]

        request = self.factory.get('/android/getUUID/')
        request.user = AnonymousUser()

        reponseView = RequestUUID()

        # it is a valid uuid
        pattern = re.compile(
            "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$")

        for licensePlate in licensePlates:
            response = reponseView.get(request, licensePlate)

            self.assertEqual(response.status_code, 200)

            testUUID = json.loads(response.content)
            uuid = testUUID['uuid']

            self.assertTrue((pattern.match(uuid.upper()) if True else False))

        """ if request a second uuid with an old license plate, i must to get the same uuid """
        response2 = reponseView.get(request, licensePlates[3])
        testUUID2 = json.loads(response2.content)
        uuid2 = testUUID2['uuid']

        self.assertTrue(pattern.match(uuid2.upper()))
        self.assertTrue(uuid == uuid2)

    def test_RequestUUIDBasedOnDummyLicensePlate(self):
        """ test the method to request an uuid based on dummy license plate """
        licensePlate = Constants.DUMMY_LICENSE_PLATE

        request = self.factory.get('/android/getUUID/')
        request.user = AnonymousUser()

        reponseView = RequestUUID()
        response = reponseView.get(request, licensePlate)

        self.assertEqual(response.status_code, 200)

        testUUID = json.loads(response.content)
        uuid = testUUID['uuid']

        # it is a valid uuid
        pattern = re.compile(
            "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$")
        self.assertTrue((pattern.match(uuid.upper()) if True else False))

        """ if request a second uuid wiht dummy license plate, i must to get a new uuid """
        response2 = reponseView.get(request, licensePlate)
        testUUID2 = json.loads(response2.content)
        uuid2 = testUUID2['uuid']

        self.assertTrue((pattern.match(uuid2.upper()) if True else False))
        self.assertFalse(uuid == uuid2)

    def test_MergeEventsFromTheSameBusButDifferenceService(self):
        """ test the method that merge event from the same bus machine but difference service """

        licencePlate = 'AA1111'
        busService1 = '506'
        busService2 = '509'
        eventCode1 = 'evn00230'
        eventCode2 = 'evn00240'
        eventCode3 = 'evn00232'

        # ask for bus and get the UUID
        request = self.factory.get('/android/getUUID/')
        view = RequestUUID()
        responseGetUUID = view.get(request, licencePlate)

        self.assertEqual(responseGetUUID.status_code, 200)

        testUUID = json.loads(responseGetUUID.content)['uuid']

        # creat bus to create an assignment
        request = self.factory.get('/android/requestToken/v2/')
        request.user = AnonymousUser()
        reponseView = RequestTokenV2()
        response = reponseView.get(request, self.userId, busService1, testUUID)
        self.assertEqual(response.status_code, 200)

        # creat bus to create an assignment
        request = self.factory.get('/android/requestToken/v2/')
        request.user = AnonymousUser()
        reponseView = RequestTokenV2()
        response = reponseView.get(request, self.userId, busService2, testUUID)
        self.assertEqual(response.status_code, 200)

        # submitting some events to the server
        requestToReportEventBus = self.factory.get(
            '/android/reportEventBus/v2/')
        requestToReportEventBus.user = AnonymousUser()

        # send first report with service 1
        reportEventBusView = RegisterEventBusV2()
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService1, eventCode1, 'confirm')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)

        # send second report with service 2- We declien the previous event
        # reportd
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService2, eventCode1, 'decline')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)

        # report second event to service
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService1, eventCode2, 'confirm')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         1]['eventcode'], eventCode2)

        # report third event to service
        responseToReportEventBus = reportEventBusView.get(requestToReportEventBus,
                                                          self.userId, testUUID, busService2, eventCode3, 'confirm')

        responseToReportEventBus = json.loads(responseToReportEventBus.content)

        self.assertEqual(responseToReportEventBus['uuid'], testUUID)
        self.assertEqual(
            responseToReportEventBus['registrationPlate'],
            licencePlate)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventDecline'], 1)
        self.assertEqual(responseToReportEventBus[
                         'events'][0]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         0]['eventcode'], eventCode1)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][1]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         1]['eventcode'], eventCode3)
        self.assertEqual(responseToReportEventBus[
                         'events'][2]['eventDecline'], 0)
        self.assertEqual(responseToReportEventBus[
                         'events'][2]['eventConfirm'], 1)
        self.assertEqual(responseToReportEventBus['events'][
                         2]['eventcode'], eventCode2)

    def test_AskForAnNonExistentBus(self):
        """ ask for events for a bus that does not exists """
        uuid = '2e5443b7-a824-4a78-bb62-6c4e24adaaeb'

        jsonResponse = self.helper.requestEventsForBusV2(uuid)

        self.assertEqual(len(jsonResponse['events']), 0)
        self.assertEqual(jsonResponse['registrationPlate'], '')
コード例 #9
0
ファイル: tests.py プロジェクト: InspectorIncognito/server
class DevicePositionInTimeTest(TransactionTestCase):
    """ test for DevicePositionInTime model """

    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"

        # inital config for DevicePositionInTime
        self.time = timezone.now()
        DevicePositionInTime.objects.create(
            userId=self.userId,
            longitud=3.5,
            latitud=5.2,
            timeStamp=self.time)
        DevicePositionInTime.objects.create(
            userId=self.userId,
            longitud=3.4,
            latitud=5.2,
            timeStamp=self.time)
        # this should not be answered
        DevicePositionInTime.objects.create(userId=self.userId, longitud=3.3, latitud=4.2, timeStamp=self.time
                                            - timezone.timedelta(minutes=11))

        # initial config for ActiveToken

        self.test = TestHelper(self)

        self.test.insertEventsOnDatabase()

        # add dummy  bus
        Bus.objects.create(
            registrationPlate='AA1111',
            service='507',
            uuid='159fc6b7-7a20-477e-b5c7-af421e1e0e16')
        # add dummy bus stop
        busStop = BusStop.objects.create(
            code='PA459', name='bla', longitud=0, latitud=0)

        # add dummy service and its path
        # '#00a0f0'color_id = models.IntegerField(default = 0)
        Service.objects.create(
            service='507',
            origin='origin_test',
            destiny='destination_test')
        ServiceStopDistance.objects.create(
            busStop=busStop, service='507I', distance=5)
        ServiceLocation.objects.create(
            service='507I', distance=1, longitud=4, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=2, longitud=5, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=3, longitud=6, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=4, longitud=7, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=5, longitud=8, latitud=5)
        ServiceLocation.objects.create(
            service='507I', distance=6, longitud=9, latitud=5)

    def test_consistencyModelDevicePositionInTime(self):
        '''This method test the database for the DevicePositionInTime model'''

        longituds = [3.5, 3.4, 3.3]
        latituds = [5.2, 5.2, 4.2]
        timeStamps = [
            self.time,
            self.time,
            self.time -
            timezone.timedelta(
                minutes=11)]

        for cont in range(3):
            devicePosition = DevicePositionInTime.objects.get(
                longitud=longituds[cont])
            self.assertEqual(devicePosition.latitud, latituds[cont])
            self.assertEqual(devicePosition.timeStamp, timeStamps[cont])

    def test_consistencyModelActiveToken(self):
        '''This method test the database for the ActiveToken model'''

        service = '503'
        licencePlate = 'ZZZZ00'
        travelToken = self.test.getInBusWithLicencePlate(
            self.userId, service, licencePlate)

        # the created token is an active token
        self.assertEqual(
            ActiveToken.objects.filter(
                token=travelToken).exists(), True)
        # the created token exist in the table of token
        self.assertEqual(
            Token.objects.filter(
                token=travelToken).exists(), True)

        jsonResponse = self.test.endRoute(travelToken)

        self.assertEqual(jsonResponse['response'], 'Trip ended.')

        # activeToken has to be missing but token has to exists
        self.assertEqual(
            ActiveToken.objects.filter(
                token=travelToken).exists(), False)
        self.assertEqual(
            Token.objects.filter(
                token=travelToken).exists(), True)

    def test_consistencyModelPoseInTrajectoryOfToken(self):
        '''this method test the PoseInTrajectoryOfToken'''

        service = '503'
        licencePlate = 'ZZZZ00'
        testToken = self.test.getInBusWithLicencePlate(
            self.userId, service, licencePlate)

        jsonResponse = self.test.sendFakeTrajectoryOfToken(testToken)

        self.assertEqual(jsonResponse['response'], 'Poses were register.')

        # remove the token
        self.test.endRoute(testToken)

        jsonResponse = self.test.sendFakeTrajectoryOfToken(testToken)

        self.assertEqual(jsonResponse['response'], 'Token doesn\'t exist.')

    def test_EventsByBusStopReportNegativelyForFistTime(self):
        """ report stop event negatively for fist time """

        busStopCode = 'PA459'
        eventCode = 'evn00001'

        jsonResponse = self.test.confirmOrDeclineStopEvent(
            self.userId, busStopCode, eventCode, 'decline')

        self.assertEqual(jsonResponse['codeBusStop'], busStopCode)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

    def test_EventsByBusStop(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific busStop'''

        busStopCode = 'PA459'
        eventCode = 'evn00001'
        # submitting some events to the server
        jsonResponse = self.test.reportStopEvent(
            self.userId, busStopCode, eventCode)

        # report one event, and confirm it
        self.assertEqual(jsonResponse['codeBusStop'], busStopCode)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # do event +1 to the event
        jsonResponse = self.test.confirmOrDeclineStopEvent(
            self.userId, busStopCode, eventCode, 'confirm')

        self.assertEqual(jsonResponse['codeBusStop'], busStopCode)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        jsonResponse = self.test.confirmOrDeclineStopEvent(
            self.userId, busStopCode, eventCode, 'decline')

        self.assertEqual(jsonResponse['codeBusStop'], busStopCode)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # change manualy the timeStamp to simulate an event that has expired
        busStop = BusStop.objects.get(code=busStopCode)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusStop.objects.get(busStop=busStop, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for ecents and the answere should be none
        jsonResponse = self.test.reportStopEvent(
            self.userId, busStopCode, eventCode)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

    def test_registerPose(self):
        request = self.factory.get('/android/userPosition')
        request.user = AnonymousUser()
        lat = 45
        lon = 46
        response = views.userPosition(request, self.userId, lat, lon)

        self.assertEqual(response.status_code, 200)

        self.assertEqual(
            DevicePositionInTime.objects.filter(
                longitud=lon,
                latitud=lat).exists(),
            True)

    def test_preferPositionOfPersonInsideABus(self):

        # Bus.objects.create(registrationPlate = 'AA1111', service = '507')
        thebus = Busv2.objects.create(registrationPlate='AA1111')
        Busassignment.objects.create(service='507', uuid=thebus)

        timeStampNow = str(timezone.localtime(timezone.now()))
        timeStampNow = timeStampNow[0:19]
        userLatitud = -33.458771
        userLongitud = -70.676266

        # first we test the position of the bus without passsangers
        # bus = Bus.objects.get(registrationPlate='AA1111', service='507')
        bus = Busv2.objects.get(registrationPlate='AA1111')
        busassignment = Busassignment.objects.get(service='507', uuid=bus)

        busPose = busassignment.getLocation()

        self.assertTrue(busPose['random'])
        self.assertEqual(busPose['latitude'], -500)
        self.assertEqual(busPose['longitude'], -500)
        self.assertEqual(busPose['passengers'], 0)

        # add the position of a passanger inside the bus
        service = '507'
        licencePlate = 'AA1111'
        testToken = self.test.getInBusWithLicencePlate(
            self.userId, service, licencePlate)

        testPoses = {"poses": [
            {"latitud": userLatitud, "longitud": userLongitud, "timeStamp": str(timeStampNow), "inVehicleOrNot": "vehicle"}]}

        jsonResponse = self.test.sendFakeTrajectoryOfToken(
            testToken, testPoses)

        self.assertEqual(jsonResponse['response'], 'Poses were register.')

        # ask the position of the bus whit a passanger
        bus = Busv2.objects.get(registrationPlate=licencePlate)
        busassignment = Busassignment.objects.get(uuid=bus, service=service)

        busPose = busassignment.getLocation()

        self.assertEqual(busPose['latitude'], userLatitud)
        self.assertEqual(busPose['longitude'], userLongitud)
        self.assertEqual(busPose['random'], False)
        self.assertEqual(busPose['passengers'] > 0, True)

        self.test.endRoute(testToken)
コード例 #10
0
class SetDirectionTest(TestCase):
    """ test for Setdirection url """

    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"

        self.helper = TestHelper(self)

        self.service = '507'
        self.licencePlate = 'PABJ45'
        self.busStop = 'PA459'

        self.helper.insertServicesOnDatabase([self.service])
        self.helper.insertBusstopsOnDatabase([self.busStop])
        self.helper.insertServicesByBusstopsOnDatabase([self.busStop])

    def test_setDirectionWithActiveTokenWithDummyLicencePlate(self):
        """ set direction of travel has not been finished with dummy licence plate """

        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, self.service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey)

        directions = ["I", "R"]
        for direction in directions:
            jsonResponse = self.helper.setDirection(travelKey, direction)

            self.assertEqual(jsonResponse['valid'], True)
            self.assertEqual(
                jsonResponse['message'],
                "User bus direction updated.")

        self.helper.endRoute(travelKey)

    def test_setDirectionWithActiveToken(self):
        """ set direction of travel has not been finished """

        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, self.service, self.licencePlate)
        self.helper.sendFakeTrajectoryOfToken(travelKey)

        directions = ["I", "R"]
        for direction in directions:
            jsonResponse = self.helper.setDirection(travelKey, direction)

            self.assertEqual(jsonResponse['valid'], True)
            self.assertEqual(
                jsonResponse['message'],
                "User bus direction updated.")

        self.helper.endRoute(travelKey)

    def test_setDirectionWithoutActiveToken(self):
        """ set direction of travel has been finished """

        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, self.service, self.licencePlate)
        self.helper.sendFakeTrajectoryOfToken(travelKey)
        self.helper.endRoute(travelKey)

        directions = ["I", "R"]
        for direction in directions:
            jsonResponse = self.helper.setDirection(travelKey, direction)

            self.assertEqual(jsonResponse['valid'], False)
            self.assertEqual(jsonResponse['message'], "Token doesn't exist.")

    def test_setDirectionWithoutActiveTokenWithDummyLicencePlate(self):
        """ set direction of travel has been finished """

        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, self.service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey)
        self.helper.endRoute(travelKey)

        directions = ["I", "R"]
        for direction in directions:
            jsonResponse = self.helper.setDirection(travelKey, direction)

            self.assertEqual(jsonResponse['valid'], False)
            self.assertEqual(jsonResponse['message'], "Token doesn't exist.")

    def test_setDirectionWithWrongDirection(self):
        """ set direction of travel has been finished """

        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, self.service, self.licencePlate)
        self.helper.sendFakeTrajectoryOfToken(travelKey)

        directions = ["Z", "S", "other things"]
        for direction in directions:
            jsonResponse = self.helper.setDirection(travelKey, direction)

            self.assertEqual(jsonResponse['valid'], False)
            self.assertEqual(jsonResponse['message'], "Invalid direction.")

        self.helper.endRoute(travelKey)
コード例 #11
0
class EndRouteTest(TestCase):
    """ test for end route url """

    def setUp(self):
        """ this method will automatically call for every single test """

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"

        self.helper = TestHelper(self)

        self.service = "507"
        self.licencePlate = "PABJ45"

        self.helper.insertServicesOnDatabase([self.service])

    def test_endRouteWithValidActiveToken(self):
        """ finish active travel """

        travelKey = self.helper.getInBusWithLicencePlate(self.userId, self.service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey)

        jsonResponse = self.helper.endRoute(travelKey)

        self.assertEqual(jsonResponse["response"], "Trip ended.")

    def test_endRouteWithInvalidActiveToken(self):
        """ finish unactive travel """

        travelKey = self.helper.getInBusWithLicencePlate(self.userId, self.service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey)

        self.helper.endRoute(travelKey)

        jsonResponse = self.helper.endRoute(travelKey)

        self.assertEqual(jsonResponse["response"], "Token doesn't exist.")
コード例 #12
0
class CronTasksTestCase(TransactionTestCase):
    """ test for cron-task actions """

    def setUp(self):
        self.factory = RequestFactory()

        self.test = TestHelper(self)
        self.test.insertEventsOnDatabase()

        # create bus stop
        self.stop = "PI62"
        self.test.insertBusstopsOnDatabase([self.stop])

        # define test events
        self.stopEventCode = "evn00010"
        self.busEventCode = "evn00200"

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.service = "506"
        self.registrationPlate = "XXYY25"
        self.machineId = self.test.askForMachineId(self.registrationPlate)

    def test_does_not_have_the_minimum_number_of_declines_for_bus_stop(self):
        """ it does not have the minimum number of declines for bus stop """

        self.test.reportStopEvent(self.userId, self.stop, self.stopEventCode)

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES - 2):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusStop(self.stop)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.stopEventCode)

    def test_does_not_have_the_percentage_of_declines_for_bus_stop(self):
        """ it has the minimum number of declines but not the percentage of declines over confirms for bus stop"""

        self.test.reportStopEvent(self.userId, self.stop, self.stopEventCode)

        # report events for bus stop
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "confirm")

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusStop(self.stop)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.stopEventCode)

    def test_have_the_percentage_of_declines_and_the_minimum_number_of_declines_over_confirm_for_bus_stop(self):
        """ it has the minimum number of declines and the percentage of declines over confirms for bus stop"""

        self.test.reportStopEvent(self.userId, self.stop, self.stopEventCode)

        # report events for bus stop
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "confirm")

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES * 3):
            self.test.confirmOrDeclineStopEvent(self.userId, self.stop, self.stopEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusStop(self.stop)
        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 0)

    def test_does_not_have_the_minimum_number_of_declines_for_bus(self):
        """ it does not have the minimum number of declines for bus  """
        # create assignment
        self.test.createBusAndAssignmentOnDatabase(self.userId, self.service, self.registrationPlate)

        self.test.reportEventV2(self.userId, self.machineId, self.service, self.busEventCode)

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES - 1):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "decline")
        # decline isn't 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.busEventCode)
        self.assertEqual(jsonResponse["uuid"], self.machineId)
        self.assertEqual(jsonResponse["registrationPlate"], self.registrationPlate)

    def test_does_not_have_the_percentage_of_declines_for_bus(self):
        """ it has the minimum number of declines but not the percentage of declines over confirms for bus """

        # create assignment
        self.test.createBusAndAssignmentOnDatabase(self.userId, self.service, self.registrationPlate)
        # generate report events for bus
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "confirm")
        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES + 1):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "decline")
        # decline is 100% over confirm

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.busEventCode)
        self.assertEqual(jsonResponse["uuid"], self.machineId)
        self.assertEqual(jsonResponse["registrationPlate"], self.registrationPlate)

    def test_have_the_percentage_of_declines_and_the_minimum_number_of_declines_over_confirm_for_bus(self):
        """ it has the minimum number of declines and the percentage of declines over confirms for bus """
        # create assignment
        self.test.createBusAndAssignmentOnDatabase(self.userId, self.service, self.registrationPlate)

        self.test.reportEventV2(self.userId, self.machineId, self.service, self.busEventCode)

        # generate report events for bus
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "confirm")

        # decline event
        for index in range(0, cronTasks.MINIMUM_NUMBER_OF_DECLINES * 3):
            self.test.confirmOrDeclineEventV2(self.userId, self.machineId, self.service, self.busEventCode, "decline")
        # decline is 100% over confirm

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)
        self.assertEqual(len(jsonResponse["events"]), 1)
        self.assertEqual(jsonResponse["events"][0]["eventcode"], self.busEventCode)
        self.assertEqual(jsonResponse["uuid"], self.machineId)

        cronTasks.clearEventsThatHaveBeenDecline()

        jsonResponse = self.test.requestEventsForBusV2(self.machineId)

        # evaluate events
        self.assertEqual(len(jsonResponse["events"]), 0)
コード例 #13
0
    def setUp(self):
        self.userId = '067e6162-3b6f-4ae2-a171-2470b63dff00'
        self.busService = '506'
        self.registrationPlate = 'XXYY25'

        self.helper = TestHelper(self)
コード例 #14
0
class NearbyBusTest(TestCase):
    """ test for DevicePositionInTime model """

    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"
        self.userId2 = "971087e3-b64c-4c22-88c2-2e1300ffd855"

        self.helper = TestHelper(self)

        self.service = '507'
        self.busStop = 'PA459'

        self.helper.insertServicesOnDatabase([self.service])
        self.helper.insertBusstopsOnDatabase([self.busStop])
        self.helper.insertServicesByBusstopsOnDatabase([self.busStop])

    def test_nearbyBuses(self):
        request = self.factory.get('/android/nearbyBuses')
        request.user = AnonymousUser()

        busStopCodeThis = 'PA459'
        self.helper.insertServicesByBusstopsOnDatabase([busStopCodeThis])

        response = views.nearbyBuses(request, self.userId, busStopCodeThis)

        self.assertEqual(response.status_code, 200)

        jsonResponse = json.loads(response.content)

        if (jsonResponse['DTPMError'] != ""):
            self.assertEqual(jsonResponse['DTPMError'],
                    "You do not have permission to do this! >:(.")
        else:
            self.assertEqual('servicios' in jsonResponse, True)
            self.assertEqual('eventos' in jsonResponse, True)

    def test_nearbyBusesWithFakeAuthorityInfoWithoutUserBuses(self):
        """ test methods used that uses nearbyBuses url. case: only authority buses """

        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        busStopCode = 'PA433'
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        # TODO: FALTA TOMAR UNA URL REAL Y LA FORMATEADA
        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)

        userBuses = views.getUserBuses(busStopCode, self.userId2)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)

        buses = views.mergeBuses(userBuses, authBuses)

        jsonUrlAnswer = json.loads('{"eventos": [], "servicios": [{"servicio": "506", "eventos": [], "tiempo": "Menos de 5 min.", "random": false, "busId": "417d8ef0-aaac-4c91-b9c2-3835060ece89", "distancia": "1691  mts.", "patente": "BJFB28", "valido": 1, "lon": -70.6817326, "distanciaV2": "1.69Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "0 a 5 min", "lat": -33.45898995, "direction": "I", "sentido": "right", "distanciaMts": 1691}, {"servicio": "506", "eventos": [], "tiempo": "Entre 03 Y 07 min. ", "random": false, "busId": "e86d3567-3a5d-48d3-b4a4-f0a139ab3825", "distancia": "1921  mts.", "patente": "BJFC56", "valido": 1, "lon": -70.68422918, "distanciaV2": "1.92Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "03 a 07 min", "lat": -33.45909322, "direction": "I", "sentido": "right", "distanciaMts": 1921}, {"servicio": "506e", "eventos": [], "tiempo": "Menos de 5 min.", "random": false, "busId": "2c88087e-1c8d-4c47-9ccc-f4a28a25dba3", "distancia": "771  mts.", "patente": "BJFH28", "valido": 1, "lon": -70.67206943, "distanciaV2": "771m", "color": 7, "tienePasajeros": 0, "tiempoV2": "0 a 5 min", "lat": -33.45841956, "direction": "I", "sentido": "right", "distanciaMts": 771}, {"servicio": "506v", "eventos": [], "tiempo": "Menos de 5 min.", "random": false, "busId": "9db62e10-37a7-4cc4-8ee8-d66718e3d9f2", "distancia": "1922  mts.", "patente": "FDJX64", "valido": 1, "lon": -70.68417605, "distanciaV2": "1.92Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "0 a 5 min", "lat": -33.45909223, "direction": "I", "sentido": "right", "distanciaMts": 1922}, {"servicio": "506v", "eventos": [], "tiempo": "Entre 04 Y 08 min. ", "random": false, "busId": "33c58d9e-355c-42db-9962-48150f17bb91", "distancia": "1572  mts.", "patente": "BFKB96", "valido": 1, "lon": -70.68060597, "distanciaV2": "1.57Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "04 a 08 min", "lat": -33.4589299, "direction": "I", "sentido": "right", "distanciaMts": 1572}, {"servicio": "507", "eventos": [], "tiempo": "Entre 11 Y 17 min. ", "random": false, "busId": "7978130a-1458-4415-8224-4b9e2a645da2", "distancia": "3194  mts.", "patente": "BJFH27", "valido": 1, "lon": -70.67964937, "distanciaV2": "3.19Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "11 a 17 min", "lat": -33.44337385, "direction": "I", "sentido": "right", "distanciaMts": 3194}, {"servicio": "507", "eventos": [], "tiempo": "Entre 20 Y 30 min. ", "random": false, "busId": "710b2e84-bc2c-44bc-829f-dbb07af0efb0", "distancia": "6094  mts.", "patente": "BJFC20", "valido": 1, "lon": -70.69886029, "distanciaV2": "6.09Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "20 a 30 min", "lat": -33.4318278, "direction": "I", "sentido": "right", "distanciaMts": 6094}, {"servicio": "509", "eventos": [], "tiempo": "Entre 04 Y 08 min. ", "random": false, "busId": "84a6dcf9-d69a-4ca2-8e83-8f996711a31f", "distancia": "1953  mts.", "patente": "FLXC45", "valido": 1, "lon": -70.68453181, "distanciaV2": "1.95Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "04 a 08 min", "lat": -33.45909886, "direction": "I", "sentido": "right", "distanciaMts": 1953}, {"servicio": "509", "eventos": [], "tiempo": "Entre 08 Y 14 min. ", "random": false, "busId": "1c5104a7-ae01-485c-9687-533d46ad965f", "distancia": "3273  mts.", "patente": "FLXD43", "valido": 1, "lon": -70.69789113, "distanciaV2": "3.27Km", "color": 7, "tienePasajeros": 0, "tiempoV2": "08 a 14 min", "lat": -33.46160623, "direction": "I", "sentido": "right", "distanciaMts": 3273}], "DTPMError": ""}')['servicios']

        self.assertEqual(buses[0]['patente'], jsonUrlAnswer[0]['patente'])
        self.assertEqual(buses[1]['patente'], jsonUrlAnswer[1]['patente'])
        self.assertEqual(buses[2]['patente'], jsonUrlAnswer[2]['patente'])
        self.assertEqual(buses[3]['patente'], jsonUrlAnswer[3]['patente'])
        self.assertEqual(buses[4]['patente'], jsonUrlAnswer[4]['patente'])
        self.assertEqual(buses[5]['patente'], jsonUrlAnswer[5]['patente'])
        self.assertEqual(buses[6]['patente'], jsonUrlAnswer[6]['patente'])
        self.assertEqual(buses[7]['patente'], jsonUrlAnswer[7]['patente'])
        self.assertEqual(buses[8]['patente'], jsonUrlAnswer[8]['patente'])

    def test_nearbyBusesWithFakeAuthorityInfoWithOneUserBus(self):
        """ test methods that uses nearbyBuses url. case: authority buses with one user bus"""

        direction = "I"
        busStopCode = 'PA433'
        self.helper.insertBusstopsOnDatabase([busStopCode])
        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, self.service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey)
        self.helper.setDirection(travelKey, direction)

        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)

        userBuses = views.getUserBuses(busStopCode, self.userId2)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)
        buses = views.mergeBuses(userBuses, authBuses)

        self.assertEqual(len(buses), 9 + 1)
        self.assertEqual(buses[0]['patente'], Constants.DUMMY_LICENSE_PLATE)
        self.assertEqual(buses[0]['servicio'], self.service)
        self.assertEqual(buses[0]['direction'], direction)
        self.assertEqual(
            buses[1]['patente'],
            fakeJsonAuthorityAnswer['servicios'][0]['patente'])
        self.assertEqual(
            buses[2]['patente'],
            fakeJsonAuthorityAnswer['servicios'][1]['patente'])
        self.assertEqual(
            buses[3]['patente'],
            fakeJsonAuthorityAnswer['servicios'][2]['patente'])
        self.assertEqual(
            buses[4]['patente'],
            fakeJsonAuthorityAnswer['servicios'][4]['patente'])
        self.assertEqual(
            buses[5]['patente'],
            fakeJsonAuthorityAnswer['servicios'][5]['patente'])
        self.assertEqual(
            buses[6]['patente'],
            fakeJsonAuthorityAnswer['servicios'][6]['patente'])
        self.assertEqual(
            buses[7]['patente'],
            fakeJsonAuthorityAnswer['servicios'][7]['patente'])
        self.assertEqual(
            buses[8]['patente'],
            fakeJsonAuthorityAnswer['servicios'][8]['patente'])
        self.assertEqual(
            buses[9]['patente'],
            fakeJsonAuthorityAnswer['servicios'][9]['patente'])

    def test_nearbyBusesWithFakeAuthorityInfoWithTwoUserBus(self):
        """ test methods that uses nearbyBuses url. case: authority buses with two dummy user bus"""

        busStopCode = 'PA433'
        self.helper.insertBusstopsOnDatabase([busStopCode])
        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        # first user
        direction1 = "I"
        travelKey1 = self.helper.getInBusWithLicencePlate(
            self.userId, self.service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey1)
        self.helper.setDirection(travelKey1, direction1)
        # second user
        userId2 = 'ce102dcd-0670-4086-a543-b3e6e58e8f58'
        direction2 = "I"
        travelKey2 = self.helper.getInBusWithLicencePlate(
            userId2, self.service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey2)
        self.helper.setDirection(travelKey2, direction2)

        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)

        userBuses = views.getUserBuses(busStopCode, self.userId2)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)
        buses = views.mergeBuses(userBuses, authBuses)

        self.assertEqual(len(buses), 9 + 1 + 1)
        self.assertEqual(buses[0]['patente'], Constants.DUMMY_LICENSE_PLATE)
        self.assertEqual(buses[0]['servicio'], self.service)
        self.assertEqual(buses[0]['direction'], direction1)
        self.assertEqual(buses[1]['patente'], Constants.DUMMY_LICENSE_PLATE)
        self.assertEqual(buses[1]['servicio'], self.service)
        self.assertEqual(buses[1]['direction'], direction2)
        self.assertEqual(
            buses[2]['patente'],
            fakeJsonAuthorityAnswer['servicios'][0]['patente'])
        self.assertEqual(
            buses[3]['patente'],
            fakeJsonAuthorityAnswer['servicios'][1]['patente'])
        self.assertEqual(
            buses[4]['patente'],
            fakeJsonAuthorityAnswer['servicios'][2]['patente'])
        self.assertEqual(
            buses[5]['patente'],
            fakeJsonAuthorityAnswer['servicios'][4]['patente'])
        self.assertEqual(
            buses[6]['patente'],
            fakeJsonAuthorityAnswer['servicios'][5]['patente'])
        self.assertEqual(
            buses[7]['patente'],
            fakeJsonAuthorityAnswer['servicios'][6]['patente'])
        self.assertEqual(
            buses[8]['patente'],
            fakeJsonAuthorityAnswer['servicios'][7]['patente'])
        self.assertEqual(
            buses[9]['patente'],
            fakeJsonAuthorityAnswer['servicios'][8]['patente'])
        self.assertEqual(
            buses[10]['patente'],
            fakeJsonAuthorityAnswer['servicios'][9]['patente'])

    def test_nearbyBusesWithFakeAuthorityInfoWithTwoUserInTheSameBus(self):
        """ test methods that uses nearbyBuses url. case: authority buses with two user in the same bus"""

        direction1 = "I"
        direction2 = "I"
        busStopCode = 'PA433'
        self.helper.insertBusstopsOnDatabase([busStopCode])
        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        licencePlate = 'bjfb28'
        service = '506'
        # first user
        travelKey1 = self.helper.getInBusWithLicencePlate(
            self.userId, service, licencePlate)
        self.helper.sendFakeTrajectoryOfToken(travelKey1)
        self.helper.setDirection(travelKey1, direction1)
        # second user
        userId2 = 'ce102dcd-0670-4086-a543-b3e6e58e8f58'
        travelKey2 = self.helper.getInBusWithLicencePlate(
            userId2, service, licencePlate)
        self.helper.sendFakeTrajectoryOfToken(travelKey2)
        self.helper.setDirection(travelKey2, direction2)

        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)
        userBuses = views.getUserBuses(busStopCode, self.userId2)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)
        buses = views.mergeBuses(userBuses, authBuses)
        self.assertEqual(len(buses), 9)
        self.assertEqual(buses[0]['patente'], licencePlate.upper())
        self.assertEqual(buses[0]['servicio'], service)
        self.assertEqual(buses[0]['tienePasajeros'], 2)
        self.assertEqual(buses[0]['distanciaMts'], 1691)
        self.assertEqual(buses[0]['tiempoV2'], "0 a 5 min")
        self.assertEqual(buses[0]['distanciaV2'], "1.69Km")
        self.assertEqual(buses[0]['direction'], "I")
        self.assertEqual(
            buses[1]['patente'],
            fakeJsonAuthorityAnswer['servicios'][1]['patente'])
        self.assertEqual(
            buses[2]['patente'],
            fakeJsonAuthorityAnswer['servicios'][2]['patente'])
        self.assertEqual(
            buses[3]['patente'],
            fakeJsonAuthorityAnswer['servicios'][4]['patente'])
        self.assertEqual(
            buses[4]['patente'],
            fakeJsonAuthorityAnswer['servicios'][5]['patente'])
        self.assertEqual(
            buses[5]['patente'],
            fakeJsonAuthorityAnswer['servicios'][6]['patente'])
        self.assertEqual(
            buses[6]['patente'],
            fakeJsonAuthorityAnswer['servicios'][7]['patente'])
        self.assertEqual(
            buses[7]['patente'],
            fakeJsonAuthorityAnswer['servicios'][8]['patente'])
        self.assertEqual(
            buses[8]['patente'],
            fakeJsonAuthorityAnswer['servicios'][9]['patente'])

    def test_nearbyBusesWithFakeAuthorityInfoWithUserBusThatMatchWithAuthorityBus(
            self):
        """ test methods that uses nearbyBuses url. case: authority buses with user bus that match with authority bus """

        busStopCode = 'PA433'
        self.helper.insertBusstopsOnDatabase([busStopCode])
        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        direction = "I"
        licencePlate = 'bjFb28'
        service = '506'
        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, service, licencePlate)
        self.helper.sendFakeTrajectoryOfToken(travelKey)
        self.helper.setDirection(travelKey, direction)

        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)

        userBuses = views.getUserBuses(busStopCode, self.userId2)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)
        buses = views.mergeBuses(userBuses, authBuses)

        self.assertEqual(len(buses), 9)
        self.assertEqual(buses[0]['patente'], licencePlate.upper())
        self.assertEqual(buses[0]['servicio'], service)
        self.assertEqual(buses[0]['tienePasajeros'], 1)
        self.assertEqual(buses[0]['direction'], direction)
        self.assertEqual(
            buses[1]['patente'],
            fakeJsonAuthorityAnswer['servicios'][1]['patente'])
        self.assertEqual(
            buses[2]['patente'],
            fakeJsonAuthorityAnswer['servicios'][2]['patente'])
        self.assertEqual(
            buses[3]['patente'],
            fakeJsonAuthorityAnswer['servicios'][4]['patente'])
        self.assertEqual(
            buses[4]['patente'],
            fakeJsonAuthorityAnswer['servicios'][5]['patente'])
        self.assertEqual(
            buses[5]['patente'],
            fakeJsonAuthorityAnswer['servicios'][6]['patente'])
        self.assertEqual(
            buses[6]['patente'],
            fakeJsonAuthorityAnswer['servicios'][7]['patente'])
        self.assertEqual(
            buses[7]['patente'],
            fakeJsonAuthorityAnswer['servicios'][8]['patente'])
        self.assertEqual(
            buses[8]['patente'],
            fakeJsonAuthorityAnswer['servicios'][9]['patente'])

    def test_nearbyBusesWithFakeAuthorityInfoWithUserBusWithoutDirection(self):
        """ test methods that uses nearbyBuses url. case: authority buses with user bus without direction, so the user bus should not see in the list of buses """

        busStopCode = 'PA433'
        self.helper.insertBusstopsOnDatabase([busStopCode])
        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        # licencePlate = 'bjFb28'
        service = '506'
        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey)
        # self.helper.setDirection(travelKey, direction)

        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)

        userBuses = views.getUserBuses(busStopCode, self.userId2)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)
        buses = views.mergeBuses(userBuses, authBuses)

        self.assertEqual(len(buses), 9)
        self.assertEqual(
            buses[0]['patente'],
            fakeJsonAuthorityAnswer['servicios'][0]['patente'])
        self.assertEqual(
            buses[1]['patente'],
            fakeJsonAuthorityAnswer['servicios'][1]['patente'])
        self.assertEqual(
            buses[2]['patente'],
            fakeJsonAuthorityAnswer['servicios'][2]['patente'])
        self.assertEqual(
            buses[3]['patente'],
            fakeJsonAuthorityAnswer['servicios'][4]['patente'])
        self.assertEqual(
            buses[4]['patente'],
            fakeJsonAuthorityAnswer['servicios'][5]['patente'])
        self.assertEqual(
            buses[5]['patente'],
            fakeJsonAuthorityAnswer['servicios'][6]['patente'])
        self.assertEqual(
            buses[6]['patente'],
            fakeJsonAuthorityAnswer['servicios'][7]['patente'])
        self.assertEqual(
            buses[7]['patente'],
            fakeJsonAuthorityAnswer['servicios'][8]['patente'])
        self.assertEqual(
            buses[8]['patente'],
            fakeJsonAuthorityAnswer['servicios'][9]['patente'])

    def test_nearbyBusesWhenUserIsOnTheBus(self):
        """ test methods that uses nearbyBuses url.
        case: ask for buses when the user is in one of bus that goes to the bus stop asked """

        busStopCode = 'PA433'
        self.helper.insertBusstopsOnDatabase([busStopCode])
        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        direction = "I"
        licencePlate = 'bjFb28'
        service = '506'
        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, service, licencePlate)
        self.helper.sendFakeTrajectoryOfToken(travelKey)
        self.helper.setDirection(travelKey, direction)

        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)

        userBuses = views.getUserBuses(busStopCode, self.userId)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)
        buses = views.mergeBuses(userBuses, authBuses)

        self.assertEqual(len(buses), 8)
        self.assertEqual(
            buses[0]['patente'],
            fakeJsonAuthorityAnswer['servicios'][1]['patente'])
        self.assertEqual(
            buses[1]['patente'],
            fakeJsonAuthorityAnswer['servicios'][2]['patente'])
        self.assertEqual(
            buses[2]['patente'],
            fakeJsonAuthorityAnswer['servicios'][4]['patente'])
        self.assertEqual(
            buses[3]['patente'],
            fakeJsonAuthorityAnswer['servicios'][5]['patente'])
        self.assertEqual(
            buses[4]['patente'],
            fakeJsonAuthorityAnswer['servicios'][6]['patente'])
        self.assertEqual(
            buses[5]['patente'],
            fakeJsonAuthorityAnswer['servicios'][7]['patente'])
        self.assertEqual(
            buses[6]['patente'],
            fakeJsonAuthorityAnswer['servicios'][8]['patente'])
        self.assertEqual(
            buses[7]['patente'],
            fakeJsonAuthorityAnswer['servicios'][9]['patente'])

    def test_nearbyBusesWhenUserIsOnTheDummyBus(self):
        """ test methods that uses nearbyBuses url.
        case: ask for buses when the user is in one of bus that stops in the bus stop asked """

        busStopCode = 'PA433'
        self.helper.insertBusstopsOnDatabase([busStopCode])
        self.helper.insertServicesOnDatabase(['506', '506e', '506v', '509'])
        self.helper.insertServicesByBusstopsOnDatabase([busStopCode])

        direction = "I"
        # licencePlate = 'bjFb28'
        service = '506'
        travelKey = self.helper.getInBusWithLicencePlate(
            self.userId, service, Constants.DUMMY_LICENSE_PLATE)
        self.helper.sendFakeTrajectoryOfToken(travelKey)
        self.helper.setDirection(travelKey, direction)

        fakeAuthorityAnswer = '{"horaConsulta": "10:12", "servicios": [{"servicio": "506", "patente": "BJFB-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1691  mts."}, {"servicio": "506", "patente": "BJFC-56", "tiempo": "Entre 03 Y 07 min. ", "valido": 1, "distancia": "1921  mts."}, {"servicio": "506E", "patente": "BJFH-28", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "771  mts."}, {"servicio": "506E", "patente": null, "tiempo": null, "valido": 1, "distancia": "None  mts."}, {"servicio": "506V", "patente": "FDJX-64", "tiempo": "Menos de 5 min.", "valido": 1, "distancia": "1922  mts."}, {"servicio": "506V", "patente": "BFKB-96", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1572  mts."}, {"servicio": "507", "patente": "BJFH-27", "tiempo": "Entre 11 Y 17 min. ", "valido": 1, "distancia": "3194  mts."}, {"servicio": "507", "patente": "BJFC-20", "tiempo": "Entre 20 Y 30 min. ", "valido": 1, "distancia": "6094  mts."}, {"servicio": "509", "patente": "FLXC-45", "tiempo": "Entre 04 Y 08 min. ", "valido": 1, "distancia": "1953  mts."}, {"servicio": "509", "patente": "FLXD-43", "tiempo": "Entre 08 Y 14 min. ", "valido": 1, "distancia": "3273  mts."}], "webTransId": "TSPP00000000000000219461", "error": null, "descripcion": "PARADA 1 / ESCUELA   DE INGENIERIA", "fechaConsulta": "2016-11-02", "id": "PA433"}'

        fakeJsonAuthorityAnswer = json.loads(fakeAuthorityAnswer)

        userBuses = views.getUserBuses(busStopCode, self.userId)
        authBuses = views.getAuthorityBuses(fakeJsonAuthorityAnswer)
        buses = views.mergeBuses(userBuses, authBuses)

        self.assertEqual(len(buses), 9)
        self.assertEqual(
            buses[0]['patente'],
            fakeJsonAuthorityAnswer['servicios'][0]['patente'])
        self.assertEqual(
            buses[1]['patente'],
            fakeJsonAuthorityAnswer['servicios'][1]['patente'])
        self.assertEqual(
            buses[2]['patente'],
            fakeJsonAuthorityAnswer['servicios'][2]['patente'])
        self.assertEqual(
            buses[3]['patente'],
            fakeJsonAuthorityAnswer['servicios'][4]['patente'])
        self.assertEqual(
            buses[4]['patente'],
            fakeJsonAuthorityAnswer['servicios'][5]['patente'])
        self.assertEqual(
            buses[5]['patente'],
            fakeJsonAuthorityAnswer['servicios'][6]['patente'])
        self.assertEqual(
            buses[6]['patente'],
            fakeJsonAuthorityAnswer['servicios'][7]['patente'])
        self.assertEqual(
            buses[7]['patente'],
            fakeJsonAuthorityAnswer['servicios'][8]['patente'])

    def test_nearbyBusesFormatDistance(self):
        """ test method that apply distance format  """
        distanceLessThan1000 = 585
        distanceGreaterThan1000NotInt = 1856
        distanceGreaterThan1000Int = 2000

        self.assertEqual(views.formatDistance(distanceLessThan1000), "585m")
        self.assertEqual(views.formatDistance(
            distanceGreaterThan1000NotInt), "1.86Km")
        self.assertEqual(views.formatDistance(
            distanceGreaterThan1000Int), "2Km")

    def test_nearbyBusesFormatServiceName(self):
        """ test method that apply service format to service names """
        serviceName1 = "506E"
        serviceName2 = "506N"
        serviceName3 = "D03N"
        serviceName4 = "D03E"
        serviceName5 = "D03"
        serviceName6 = "N50"
        serviceName7 = "506"

        self.assertEqual(views.formatServiceName(serviceName1), "506e")
        self.assertEqual(views.formatServiceName(serviceName2), "506N")
        self.assertEqual(views.formatServiceName(serviceName3), "D03N")
        self.assertEqual(views.formatServiceName(serviceName4), "D03e")
        self.assertEqual(views.formatServiceName(serviceName5), "D03")
        self.assertEqual(views.formatServiceName(serviceName6), "N50")
        self.assertEqual(views.formatServiceName(serviceName7), "506")

    def test_nearbyBusesFormatTime(self):
        """ test method that apply time format """

        times = [
            "Menos de 5 min.",
            "Entre 19 Y 29 min.",
            "Mas de 45 min.",
            "En menos de 10 min.",
            "Otro caso"]
        distances = [50, 150]

        answers = [
            "Llegando",
            "0 a 5 min",
            "19 a 29 min",
            "19 a 29 min",
            "+ de 45 min",
            "+ de 45 min",
            "Llegando",
            "0 a 10 min",
            "Otro caso",
            "Otro caso"]
        index = 0
        for time in times:
            for distance in distances:
                self.assertEqual(
                    views.formatTime(
                        time,
                        distance),
                    answers[index])
                index += 1
コード例 #15
0
class BusEventTest(TransactionTestCase):
    """ test for bus events """

    def setUp(self):
        """ this method will automatically call for every single test """
        # for testing requests inside the project
        self.factory = RequestFactory()

        self.userId = "067e6162-3b6f-4ae2-a171-2470b63dff00"

        self.service = '507'
        self.stop = 'PA459'

        self.test = TestHelper(self)
        self.test.insertEventsOnDatabase()
        self.test.insertServicesOnDatabase([self.service])
        self.test.insertBusstopsOnDatabase([self.stop])

    def test_EventsByBusWithDummyLicensePlate(self):
        '''This method test the bus with a dummy license plate '''

        licencePlate = Constants.DUMMY_LICENSE_PLATE
        self.test.getInBusWithLicencePlate(
            self.userId, self.service, licencePlate)
        eventCode = 'evn00101'

        # submitting one event to the server
        jsonResponse = self.test.reportEvent(
            self.userId, self.service, licencePlate, eventCode)

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['service'], self.service)
        self.assertEqual(len(jsonResponse['events']), 1)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

    def test_EventsByBus(self):
        '''This method test two thing, the posibility to report an event and asking
        the events for the specific bus'''

        licencePlate = 'AA0000'
        eventCode = 'evn00101'
        self.test.getInBusWithLicencePlate(
            self.userId, self.service, licencePlate)

        # submitting one event to the server
        jsonResponse = self.test.reportEvent(
            self.userId, self.service, licencePlate, eventCode)

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ===================================================================================
        # do event +1 to the event
        jsonResponse = self.test.confirmOrDeclineEvent(
            self.userId, self.service, licencePlate, eventCode, 'confirm')

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # do event -1 to the event
        jsonResponse = self.test.confirmOrDeclineEvent(
            self.userId, self.service, licencePlate, eventCode, 'decline')

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # ask for events
        jsonResponse = self.test.requestEventsForBus(
            self.service, licencePlate)

        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 2)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

        # change manually the timeStamp to simulate an event that has expired
        bus = Busv2.objects.get(registrationPlate=licencePlate)
        busassignment = Busassignment.objects.get(
            uuid=bus, service=self.service)
        event = Event.objects.get(id=eventCode)
        anEvent = EventForBusv2.objects.get(
            busassignment=busassignment, event=event)

        anEvent.timeStamp = anEvent.timeCreation - \
            timezone.timedelta(minutes=event.lifespam)
        anEvent.save()

        # ask for ecents and the answere should be none
        jsonResponse = self.test.reportEvent(
            self.userId, self.service, licencePlate, eventCode)
        self.assertEqual(jsonResponse['events'][0]['eventDecline'], 0)
        self.assertEqual(jsonResponse['events'][0]['eventConfirm'], 1)
        self.assertEqual(jsonResponse['events'][0]['eventcode'], eventCode)

    def test_AskForEventsOfNonExistentBus(self):
        # ask for events for a bus that does not exists
        licencePlate = 'AABB00'

        jsonResponse = self.test.requestEventsForBus(
            self.service, licencePlate)

        self.assertEqual(len(jsonResponse['events']), 0)
        self.assertEqual(jsonResponse['registrationPlate'], licencePlate)
        self.assertEqual(jsonResponse['service'], self.service)