49 lines
1.2 KiB
Dart
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']);
|
|
}
|