From 1b63786c6bf9b143126acfaaf26692e0a39dcf67 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 23 Jul 2024 16:45:03 +0700 Subject: [PATCH] Hotfix API Url concat incorrect --- .../extensions/uri_extension.dart | 27 +++++++++++++---- .../extensions/uri_extension_test.dart | 30 +++++++++++++++++++ 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/core/lib/presentation/extensions/uri_extension.dart b/core/lib/presentation/extensions/uri_extension.dart index 9c65a6e36..2492f2926 100644 --- a/core/lib/presentation/extensions/uri_extension.dart +++ b/core/lib/presentation/extensions/uri_extension.dart @@ -10,12 +10,27 @@ extension URIExtension on Uri { log('SessionUtils::toQualifiedUrl():qualifiedUrl: $qualifiedUrl'); return Uri.parse(qualifiedUrl); } else { - final baseUrlValid = baseUrl.toString().removeLastSlashOfUrl(); - final sourceUrlValid = toString().addFirstSlashOfUrl().removeLastSlashOfUrl(); - log('SessionUtils::toQualifiedUrl():baseUrlValid: $baseUrlValid | sourceUrlValid: $sourceUrlValid'); - final qualifiedUrl = baseUrlValid + sourceUrlValid; - log('SessionUtils::toQualifiedUrl():qualifiedUrl: $qualifiedUrl'); - return Uri.parse(qualifiedUrl); + if (!hasOrigin) { + final baseUrlValid = baseUrl.toString().removeLastSlashOfUrl(); + final sourceUrlValid = toString().addFirstSlashOfUrl().removeLastSlashOfUrl(); + log('SessionUtils::toQualifiedUrl():baseUrlValid: $baseUrlValid | sourceUrlValid: $sourceUrlValid'); + final qualifiedUrl = baseUrlValid + sourceUrlValid; + log('SessionUtils::toQualifiedUrl():qualifiedUrl: $qualifiedUrl'); + return Uri.parse(qualifiedUrl); + } else { + final qualifiedUrl = toString().removeLastSlashOfUrl(); + log('SessionUtils::toQualifiedUrl():qualifiedUrl: $qualifiedUrl'); + return Uri.parse(qualifiedUrl); + } + } + } + + bool get hasOrigin { + try { + return origin.isNotEmpty; + } catch (e) { + logError('URIExtension::hasOrigin:Exception = $e'); + return false; } } } \ No newline at end of file diff --git a/core/test/presentation/extensions/uri_extension_test.dart b/core/test/presentation/extensions/uri_extension_test.dart index 87e492149..80691a3c6 100644 --- a/core/test/presentation/extensions/uri_extension_test.dart +++ b/core/test/presentation/extensions/uri_extension_test.dart @@ -55,5 +55,35 @@ void main() { expect(qualifiedUrlResult, equals(qualifiedUrlExpected)); }); + + 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 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 `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 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 `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 qualifiedUrlExpected = Uri.parse('https://domain.com:2001/jmap'); + final qualifiedUrlResult = sourceUrl.toQualifiedUrl(baseUrl: baseUrl); + + expect(qualifiedUrlResult, equals(qualifiedUrlExpected)); + }); }); } \ No newline at end of file