49 lines
1.2 KiB
Dart

// get nullable
import 'dart:convert';
import 'package:backend_dart/domain/entities/user.dart';
import 'package:backend_dart/domain/errors/error.dart';
import 'package:fpdart/fpdart.dart';
import 'package:shelf/shelf.dart';
import 'package:test/test.dart';
extension NullableGet<T> on TaskEither<IError, T> {
// !THIS IS ONLY FOR TESTING PURPOSES!
Future<T?> get get {
return match((e) => null, identity).run();
}
}
String? extractSessionTokenFromCookie(String? token) {
if (token == null) return null;
final parts = token.split('=');
if (parts[0] == 'session_token' && parts[1].isNotEmpty) {
return parts[1];
}
return null;
}
Future<String?> createLoggedInToken(
User? user,
Handler handler, {
String password = 'password',
}) async {
if (user == null) {
fail('User creation failed');
}
final responseLogin = await handler(Request(
'POST',
Uri.parse('http://localhost/api/auth/login'),
headers: <String, String>{
'Content-Type': 'application/json',
},
body: jsonEncode(
<String, String>{
'email': user.email,
'password': password,
},
),
));
return extractSessionTokenFromCookie(responseLogin.headers['Set-Cookie']);
}