import 'dart:convert'; import 'package:backend/service/db_access.dart'; import 'package:http/http.dart' as http; import 'package:shared_models/room.dart'; import 'package:shared_models/user.dart'; import 'package:test/test.dart'; void main() { const baseUrl = 'http://localhost:8080'; // Adjust as needed test('Complete room creation and ping flow', () async { // 1. Create Room final createRoomResponse = await http.post( Uri.parse('$baseUrl/create_room'), ); expect(createRoomResponse.statusCode, 200); final createRoomData = CreateRoomResponse.fromJson( json.decode(createRoomResponse.body) as Map<String, dynamic>, ); expect(createRoomData.success, true); expect(createRoomData.roomCode, isNotNull); final roomCode = createRoomData.roomCode!; // 2. Join Room final joinRoomResponse = await http.post( Uri.parse('$baseUrl/join_room'), body: jsonEncode(JoinRoomRequest(username: 'testUser123', roomCode: createRoomData.roomCode!).toJson()), headers: {'Content-Type': 'application/json'}, ); expect(joinRoomResponse.statusCode, 200); final joinRoomData = JoinRoomResponse.fromJson( json.decode(joinRoomResponse.body) as Map<String, dynamic>, ); expect(joinRoomData.success, true); expect(joinRoomData.token, isNotNull); expect(joinRoomData.uuid, isNotNull); final token = joinRoomData.token!; // 3. Ping Room final pingResponse = await http.get( Uri.parse('$baseUrl/room/$roomCode/ping'), headers: { 'Authorization': 'Bearer $token', }, ); expect(pingResponse.statusCode, 200); final testUser = await Db.getUserById(joinRoomData.uuid!); expect(testUser, isNotNull); expect(testUser!.uuid, joinRoomData.uuid); final gameRoom = await Db.getRoomByCode(createRoomData.roomCode); expect(gameRoom, isNotNull); expect(gameRoom!.code, createRoomData.roomCode); }); }