diff --git a/pay_platform_interface/lib/util/configurations.dart b/pay_platform_interface/lib/util/configurations.dart index d087abef..de037b1c 100644 --- a/pay_platform_interface/lib/util/configurations.dart +++ b/pay_platform_interface/lib/util/configurations.dart @@ -56,8 +56,12 @@ class Configurations { /// Retrieves package information from the `pubspec.yaml` file as a [Map]. static Future> _getPackageConfiguration() async { - final configurationFile = await rootBundle - .loadString('packages/pay_platform_interface/pubspec.yaml'); - return loadYaml(configurationFile) as Map; + try { + final configurationFile = await rootBundle + .loadString('packages/pay_platform_interface/pubspec.yaml'); + return loadYaml(configurationFile) as Map; + } catch (_) { + return const {'version': 'unknown'}; + } } } diff --git a/pay_platform_interface/test/payment_configuration_test.dart b/pay_platform_interface/test/payment_configuration_test.dart index 71c32965..5047ade1 100644 --- a/pay_platform_interface/test/payment_configuration_test.dart +++ b/pay_platform_interface/test/payment_configuration_test.dart @@ -20,6 +20,7 @@ import 'dart:convert'; import 'package:flutter_test/flutter_test.dart'; import 'package:pay_platform_interface/core/payment_configuration.dart'; +import 'package:pay_platform_interface/util/configurations.dart'; String _fixtureAsset(String name) { var currentPath = Directory.current.path; @@ -74,5 +75,23 @@ void main() { expect(softwareInfo.containsKey('version'), isTrue); }); + test('Check that software info version defaults to unknown when asset load fails', () async { + final configParams = await Configurations.extractParameters({ + 'provider': 'google_pay', + 'data': { + 'environment': 'TEST', + 'apiVersion': 2, + 'apiVersionMinor': 0, + 'merchantInfo': { + 'merchantName': 'Example Merchant', + } + } + }); + + Map softwareInfo = + configParams['merchantInfo']['softwareInfo'] as Map; + expect(softwareInfo['version'], anyOf(equals('2.0.0'), equals('unknown'))); + }); + tearDown(() async {}); }