TF-3341 Integration test web socket for mobile

This commit is contained in:
DatDang
2024-12-17 17:13:14 +07:00
committed by Dat H. Pham
parent ea58e3297b
commit 48a035edc9
6 changed files with 179 additions and 10 deletions
@@ -1,16 +1,15 @@
import 'dart:async';
import 'dart:io';
import 'dart:io' hide HttpClient;
import 'package:collection/collection.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/http/http_client.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart';
import 'package:jmap_dart_client/jmap/jmap_request.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/email/attachment.dart';
import 'package:model/email/email_action_type.dart';
import 'package:model/extensions/session_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/upload/file_info.dart';
import 'package:jmap_dart_client/jmap/mail/email/set/set_email_method.dart';
import 'package:model/model.dart';
import 'package:path_provider/path_provider.dart';
import 'package:tmail_ui_user/features/composer/domain/state/upload_attachment_state.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/create_new_and_send_email_interactor.dart';
@@ -22,11 +21,15 @@ import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_ident
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
import 'package:tmail_ui_user/main/error/capability_validator.dart';
import '../models/provisioning_email.dart';
mixin ScenarioUtilsMixin {
Future<void> provisionEmail(List<ProvisioningEmail> provisioningEmails) async {
Future<void> provisionEmail(
List<ProvisioningEmail> provisioningEmails, {
bool refreshEmailView = true,
}) async {
ComposerBindings().dependencies();
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
@@ -62,11 +65,62 @@ mixin ScenarioUtilsMixin {
}));
// Refresh view after provisioning emails
threadController.refreshAllEmail();
if (refreshEmailView) {
threadController.refreshAllEmail();
}
ComposerBindings().dispose();
}
Future<void> simulateUpdateFlagsOfEmailsWithSubjectsFromOutsideCurrentClient({
required List<String> subjects,
bool? isRead,
bool? isStar,
}) async {
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
final emails = mailboxDashBoardController
.emailsInCurrentMailbox
.where((presentationEmail) => subjects.contains(
presentationEmail.subject
))
.toList();
final session = mailboxDashBoardController.sessionCurrent;
final accountId = mailboxDashBoardController.accountId.value;
if (session == null || accountId == null) return;
final requestBuilder = JmapRequestBuilder(
Get.find<HttpClient>(),
ProcessingInvocation(),
);
final capabilities = <CapabilityIdentifier>{};
// Mark as read/unread
if (isRead != null) {
final markEmailAsReadMethod = SetEmailMethod(accountId)
..addUpdates(emails.listEmailIds.generateMapUpdateObjectMarkAsRead(
isRead ? ReadActions.markAsRead : ReadActions.markAsUnread
));
requestBuilder.invocation(markEmailAsReadMethod);
capabilities.addAll(markEmailAsReadMethod
.requiredCapabilities
.toCapabilitiesSupportTeamMailboxes(session, accountId));
}
// Mark as star/unstar
if (isStar != null) {
final markEmailAsStarMethod = SetEmailMethod(accountId)
..addUpdates(emails.listEmailIds.generateMapUpdateObjectMarkAsStar(
isStar ? MarkStarAction.markStar : MarkStarAction.unMarkStar
));
requestBuilder.invocation(markEmailAsStarMethod);
capabilities.addAll(markEmailAsStarMethod
.requiredCapabilities
.toCapabilitiesSupportTeamMailboxes(session, accountId));
}
await (requestBuilder..usings(capabilities)).build().execute();
}
Future<File> preparingTxtFile(String content) async {
final directory = await getTemporaryDirectory();
final file = File('${directory.path}/test.txt');