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)
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")
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" })
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
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