From 791edb41c2e1ac3ccd58eba687d00f2428bbc95f Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Thu, 15 Aug 2024 18:03:54 +0700 Subject: [PATCH] Add more test for saveBaseUrl and toQualifiedUrl --- .../extensions/uri_extension_test.dart | 42 ++++++++----- .../credential_repository_imp_test.dart | 63 +++++++++++++++++++ 2 files changed, 89 insertions(+), 16 deletions(-) create mode 100644 test/features/login/data/repository/credential_repository_imp_test.dart diff --git a/core/test/presentation/extensions/uri_extension_test.dart b/core/test/presentation/extensions/uri_extension_test.dart index 80691a3c6..2748d0cad 100644 --- a/core/test/presentation/extensions/uri_extension_test.dart +++ b/core/test/presentation/extensions/uri_extension_test.dart @@ -7,8 +7,8 @@ void main() { group('method convertToQualifiedUrl test', () { test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com` and sourceUrl is `https://domain.com/jmap`', () async { - final baseUrl = Uri.parse('https://domain.com'); - final sourceUrl = Uri.parse('https://domain.com/jmap'); + final baseUrl = Uri.parse('https://domain.com'); + final sourceUrl = Uri.parse('https://domain.com/jmap'); final qualifiedUrlExpected = Uri.parse('https://domain.com/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); @@ -17,8 +17,8 @@ void main() { }); test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com` and sourceUrl is `/jmap/`', () async { - final baseUrl = Uri.parse('https://domain.com'); - final sourceUrl = Uri.parse('/jmap/'); + final baseUrl = Uri.parse('https://domain.com'); + final sourceUrl = Uri.parse('/jmap/'); final qualifiedUrlExpected = Uri.parse('https://domain.com/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); @@ -27,8 +27,8 @@ void main() { }); test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com` and sourceUrl is `/jmap`', () async { - final baseUrl = Uri.parse('https://domain.com'); - final sourceUrl = Uri.parse('/jmap'); + final baseUrl = Uri.parse('https://domain.com'); + final sourceUrl = Uri.parse('/jmap'); final qualifiedUrlExpected = Uri.parse('https://domain.com/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); @@ -37,8 +37,8 @@ void main() { }); test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com/jmap` and sourceUrl is empty', () async { - final baseUrl = Uri.parse('https://domain.com/jmap'); - final sourceUrl = Uri.parse(''); + final baseUrl = Uri.parse('https://domain.com/jmap'); + final sourceUrl = Uri.parse(''); final qualifiedUrlExpected = Uri.parse('https://domain.com/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); @@ -47,8 +47,8 @@ void main() { }); test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com/jmap` and sourceUrl is `/`', () async { - final baseUrl = Uri.parse('https://domain.com/jmap'); - final sourceUrl = Uri.parse('/'); + final baseUrl = Uri.parse('https://domain.com/jmap'); + final sourceUrl = Uri.parse('/'); final qualifiedUrlExpected = Uri.parse('https://domain.com/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); @@ -57,8 +57,8 @@ void main() { }); test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com:2000/jmap` and sourceUrl is `https://domain.com:2001/jmap`', () async { - final baseUrl = Uri.parse('https://domain.com:2000/jmap'); - final sourceUrl = Uri.parse('https://domain.com:2001/jmap'); + final baseUrl = Uri.parse('https://domain.com:2000/jmap'); + final sourceUrl = Uri.parse('https://domain.com:2001/jmap'); final qualifiedUrlExpected = Uri.parse('https://domain.com:2001/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); @@ -67,8 +67,8 @@ void main() { }); test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com:2000/jmap` and sourceUrl is `https://domain.com:2001/jmap/`', () async { - final baseUrl = Uri.parse('https://domain.com:2000/jmap'); - final sourceUrl = Uri.parse('https://domain.com:2001/jmap/'); + final baseUrl = Uri.parse('https://domain.com:2000/jmap'); + final sourceUrl = Uri.parse('https://domain.com:2001/jmap/'); final qualifiedUrlExpected = Uri.parse('https://domain.com:2001/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); @@ -77,13 +77,23 @@ void main() { }); test('convertToQualifiedUrl() should return qualified url when baseUrl is `https://domain.com:20001/jmap` and sourceUrl is `https://domain.com:2001/jmap`', () async { - final baseUrl = Uri.parse('https://domain.com:2001/jmap'); - final sourceUrl = Uri.parse('https://domain.com:2001/jmap'); + final baseUrl = Uri.parse('https://domain.com:2001/jmap'); + final sourceUrl = Uri.parse('https://domain.com:2001/jmap'); final qualifiedUrlExpected = Uri.parse('https://domain.com:2001/jmap'); final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); expect(qualifiedUrlResult, equals(qualifiedUrlExpected)); }); + + test('convertToQualifiedUrl() should return qualified url when baseUrl is localhost and sourceUrl is `https://domain.com:2001/basiauth/jmap`', () async { + final baseUrl = Uri.parse('https://localhost:9080/basicauth'); + final sourceUrl = Uri.parse('https://domain.com:2001/basicauth/jmap'); + + final qualifiedUrlExpected = Uri.parse('https://domain.com:2001/basicauth/jmap'); + final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); + + expect(qualifiedUrlResult, equals(qualifiedUrlExpected)); + }); }); } \ No newline at end of file diff --git a/test/features/login/data/repository/credential_repository_imp_test.dart b/test/features/login/data/repository/credential_repository_imp_test.dart new file mode 100644 index 000000000..c146c9f5c --- /dev/null +++ b/test/features/login/data/repository/credential_repository_imp_test.dart @@ -0,0 +1,63 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/annotations.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; +import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.dart'; + +import 'credential_repository_imp_test.mocks.dart'; + +@GenerateMocks([AuthenticationInfoCacheManager]) +void main() { + late SharedPreferences sharedPreferences; + late AuthenticationInfoCacheManager authenticationInfoCacheManager; + late CredentialRepositoryImpl credentialRepositoryImpl; + + setUp(() async { + SharedPreferences.setMockInitialValues({}); + sharedPreferences = await SharedPreferences.getInstance(); + authenticationInfoCacheManager = MockAuthenticationInfoCacheManager(); + credentialRepositoryImpl = CredentialRepositoryImpl(sharedPreferences, authenticationInfoCacheManager); + }); + + group('test saveBaseUrl', () { + test('baseUrl should be save exactly when url has no sub path', () async { + final url = Uri.parse('https://example.com'); + credentialRepositoryImpl.saveBaseUrl(url); + + final storedUrl = await credentialRepositoryImpl.getBaseUrl(); + expect(storedUrl, equals(url)); + }); + + test('baseUrl should be save exactly when url has sub path', () async { + final url = Uri.parse('https://example.com/basicauth'); + credentialRepositoryImpl.saveBaseUrl(url); + + final storedUrl = await credentialRepositoryImpl.getBaseUrl(); + expect(storedUrl, equals(url)); + }); + + test('baseUrl should be save exactly when url has sub port', () async { + final url = Uri.parse('https://example.com:8080/'); + credentialRepositoryImpl.saveBaseUrl(url); + + final storedUrl = await credentialRepositoryImpl.getBaseUrl(); + expect(storedUrl, equals(url)); + }); + + test('baseUrl should be save exactly when url has port and sub path', () async { + final url = Uri.parse('https://example.com:8080/basicauth'); + credentialRepositoryImpl.saveBaseUrl(url); + + final storedUrl = await credentialRepositoryImpl.getBaseUrl(); + expect(storedUrl, equals(url)); + }); + + test('baseUrl should be save exactly when url has multiple sub paths', () async { + final url = Uri.parse('https://example.com:8080/basicauth/jmap'); + credentialRepositoryImpl.saveBaseUrl(url); + + final storedUrl = await credentialRepositoryImpl.getBaseUrl(); + expect(storedUrl, equals(url)); + }); + }); +} \ No newline at end of file