| import 'package:flutter_test/flutter_test.dart'; |
| import 'package:cachy/data/services/api_client.dart'; |
|
|
| void main() { |
| test('friendly messages never leak bodies or tracebacks', () { |
| expect(ApiException(500, '{"detail":"X","traceback":"Trace..."}').friendlyMessage, |
| 'Something went wrong on our side. Try again in a moment.'); |
| expect(ApiException(429, '{"error":"quota"}').friendlyMessage, |
| "You've hit today's limit. It resets at midnight UTC."); |
| expect(ApiException(401, 'x').friendlyMessage, |
| 'Session expired — please sign in again.'); |
| expect(ApiException(404, 'x').friendlyMessage, |
| "That card isn't there anymore."); |
| for (final code in [400, 401, 404, 429, 500, 503]) { |
| final msg = ApiException(code, 'traceback secret').friendlyMessage; |
| expect(msg.contains('traceback'), isFalse); |
| expect(msg.contains('secret'), isFalse); |
| } |
| }); |
|
|
| test('friendlyError handles non-Api exceptions', () { |
| expect(friendlyError(Exception('SocketException: conn refused')), |
| "Can't reach Cachy. Check your connection."); |
| }); |
| } |
|
|