65 lines
1.9 KiB
Dart
65 lines
1.9 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:backend/db/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);
|
|
});
|
|
}
|