From ae54ca3aad35bde209ae38087fc35951182f8cd4 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 29 Feb 2024 10:20:02 +0700 Subject: [PATCH] TF-2613 Add validate same domain method & unit test Signed-off-by: dab246 --- .../email/presentation/utils/email_utils.dart | 13 +++++++- .../email_address_is_same_domain_test.dart | 33 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 test/features/email/email_address_is_same_domain_test.dart diff --git a/lib/features/email/presentation/utils/email_utils.dart b/lib/features/email/presentation/utils/email_utils.dart index 78d4d79c5..fd23e17cb 100644 --- a/lib/features/email/presentation/utils/email_utils.dart +++ b/lib/features/email/presentation/utils/email_utils.dart @@ -1,5 +1,7 @@ import 'package:collection/collection.dart'; +import 'package:core/utils/app_logger.dart'; +import 'package:get/get_utils/src/get_utils/get_utils.dart'; import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -58,7 +60,7 @@ class EmailUtils { (failure) { return failure is DownloadAttachmentForWebFailure || failure is ViewAttachmentForWebFailure; - }, + }, (success) { return success is DownloadAttachmentForWebSuccess || success is ViewAttachmentForWebSuccess @@ -66,4 +68,13 @@ class EmailUtils { || success is IdleViewAttachmentForWeb; }) ?? false; } + + static bool isSameDomain({ + required String emailAddress, + required String serverDomain + }) { + log('EmailUtils::isSameDomain: emailAddress = $emailAddress | serverDomain = $serverDomain'); + return GetUtils.isEmail(emailAddress) && + emailAddress.split('@').last.toLowerCase() == serverDomain.toLowerCase(); + } } \ No newline at end of file diff --git a/test/features/email/email_address_is_same_domain_test.dart b/test/features/email/email_address_is_same_domain_test.dart new file mode 100644 index 000000000..ee3216d6c --- /dev/null +++ b/test/features/email/email_address_is_same_domain_test.dart @@ -0,0 +1,33 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart'; + +void main() { + group('EmailUtils', () { + test('isSameDomain should return true when email is from the same domain as server', () { + String emailAddress = 'user@example.com'; + String serverDomain = 'example.com'; + + bool result = EmailUtils.isSameDomain(emailAddress: emailAddress, serverDomain: serverDomain); + + expect(result, true); + }); + + test('isSameDomain should return false when email is not from the same domain as server', () { + String emailAddress = 'user@example.com'; + String serverDomain = 'example2.com'; + + bool result = EmailUtils.isSameDomain(emailAddress: emailAddress, serverDomain: serverDomain); + + expect(result, false); + }); + + test('isSameDomain should return false when email is invalid', () { + String emailAddress = 'invalid_email'; + String serverDomain = 'example.com'; + + bool result = EmailUtils.isSameDomain(emailAddress: emailAddress, serverDomain: serverDomain); + + expect(result, false); + }); + }); +} \ No newline at end of file