예제 #1
0
 def test_session_create_or_update_failed_create_success_update(
         self, mock_session_list, mock_session_update, mock_session_create):
     mock_session_create.return_value = MagicMock(status_code=400)
     mock_session_list.return_value = MagicMock(
         status_code=200,
         content=json.dumps({'results': [{
             'id': 'vettel2021'
         }]}))
     mock_session_update.return_value = MagicMock(status_code=200)
     api = F1LapsAPI("vettel4tw", "f12020")
     success, f1laps_session_id = api.session_create_or_update(
         f1laps_session_id=None,
         track_id=1,
         team_id=2,
         session_uid=345,
         conditions='dry',
         session_type='race',
         finish_position=None,
         points=None,
         result_status=None,
         lap_times=[],
         setup_data={},
         is_online_game=False,
         ai_difficulty=None)
     self.assertEqual(success, True)
     self.assertEqual(f1laps_session_id, "vettel2021")
     self.assertEqual(mock_session_create.call_count, 1)
     self.assertEqual(mock_session_update.call_count, 1)
     self.assertEqual(mock_session_list.call_count, 1)
예제 #2
0
 def test__get_error_message(self):
     api = F1LapsAPI("vettel4tw", "f12020")
     response_content = '{"detail":"Invalid token."}'
     self.assertEqual(api._get_error_message(response_content),
                      "Invalid token.")
     response_content = 'notavalidjson'
     self.assertEqual(api._get_error_message(response_content),
                      "notavalidjson")
예제 #3
0
 def test_get_headers(self, mock_system, mock_release):
     mock_system.return_value = "F1Laps Test Runner"
     mock_release.return_value = "2021.02.28"
     headers = F1LapsAPI("vettel4tw", "f12020")._get_headers()
     self.assertEqual(
         headers, {
             'Content-Type': 'application/json',
             'Authorization': 'Token vettel4tw',
             'X-F1Laps-App': 'F1Laps Telemetry v%s' % config.VERSION,
             'X-F1Laps-Platform': "F1Laps Test Runner 2021.02.28"
         })
예제 #4
0
 def create_lap_in_f1laps(self, lap_number):
     """ Send Lap to F1Laps """
     response = F1LapsAPI(self.f1laps_api_key, "f12020").lap_create(
                     track_id              = self.track_id,
                     team_id               = self.team_id,
                     conditions            = self.map_weather_ids_to_f1laps_token(),
                     game_mode             = "time_trial", # hardcoded as the only supported value
                     sector_1_time         = self.lap_list[lap_number]["sector_1_time_ms"],
                     sector_2_time         = self.lap_list[lap_number]["sector_2_time_ms"],
                     sector_3_time         = self.lap_list[lap_number]["sector_3_time_ms"],
                     setup_data            = self.setup,
                     is_valid              = self.lap_list[lap_number].get("is_valid", True),
                     telemetry_data_string = self.get_lap_telemetry_data(lap_number)
                 )
     if response.status_code == 201:
         log.info("Lap #%s successfully created in F1Laps" % lap_number)
         return True
     else:
         log.error("Error creating lap %s in F1Laps" % lap_number)
         log.error("F1Laps API response: %s" % json.loads(response.content))
         return False
예제 #5
0
 def create_or_update_session_in_f1laps(self):
     log.info("Updating session (%s) in F1Laps" % self.map_udp_session_id_to_f1laps_token())
     success,self.f1_laps_session_id = F1LapsAPI(self.f1laps_api_key, "f12020").session_create_or_update(
                 f1laps_session_id = self.f1_laps_session_id,
                 track_id          = self.track_id,
                 team_id           = self.team_id,
                 session_uid       = self.session_udp_uid,
                 conditions        = self.map_weather_ids_to_f1laps_token(),
                 session_type      = self.map_udp_session_id_to_f1laps_token(),
                 finish_position   = self.finish_position,
                 points            = self.points,
                 result_status     = self.result_status, 
                 lap_times         = self.get_f1laps_lap_times_list(),
                 setup_data        = self.setup,
                 is_online_game    = self.is_online_game
             )
     if success:
         log.info("Session (%s) successfully updated in F1Laps" % self.map_udp_session_id_to_f1laps_token())
         return True
     else:
         log.info("Session not updated in F1Laps")
         return False