Fix/Update #1
| @ -16,6 +16,8 @@ dev_dependencies: | |||||||
|   flutter_test: |   flutter_test: | ||||||
|     sdk: flutter |     sdk: flutter | ||||||
| 
 | 
 | ||||||
|  |   mockito: ^5.2.0 | ||||||
|  | 
 | ||||||
|   wyatt_analysis: |   wyatt_analysis: | ||||||
|     git: |     git: | ||||||
|       url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages |       url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages | ||||||
|  | |||||||
| @ -0,0 +1,176 @@ | |||||||
|  | // Author: Hugo Pointcheval | ||||||
|  | // Email: git@pcl.ovh | ||||||
|  | // ----- | ||||||
|  | // File: method_channel_native_crypto_test.dart | ||||||
|  | // Created Date: 25/05/2022 22:47:41 | ||||||
|  | // Last Modified: 25/05/2022 23:22:44 | ||||||
|  | // ----- | ||||||
|  | // Copyright (c) 2022 | ||||||
|  | 
 | ||||||
|  | import 'dart:typed_data'; | ||||||
|  | 
 | ||||||
|  | import 'package:flutter/services.dart'; | ||||||
|  | import 'package:flutter_test/flutter_test.dart'; | ||||||
|  | import 'package:native_crypto_platform_interface/src/method_channel/method_channel_native_crypto.dart'; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |   TestWidgetsFlutterBinding | ||||||
|  |       .ensureInitialized(); // Required for setMockMethodCallHandler | ||||||
|  | 
 | ||||||
|  |   group('$MethodChannelNativeCrypto', () { | ||||||
|  |     const MethodChannel channel = | ||||||
|  |         MethodChannel('plugins.hugop.cl/native_crypto'); | ||||||
|  |     final List<MethodCall> log = <MethodCall>[]; | ||||||
|  |     final MethodChannelNativeCrypto nativeCrypto = MethodChannelNativeCrypto(); | ||||||
|  | 
 | ||||||
|  |     TestDefaultBinaryMessengerBinding.instance?.defaultBinaryMessenger | ||||||
|  |         .setMockMethodCallHandler(channel, (MethodCall call) async { | ||||||
|  |       log.add(call); | ||||||
|  |       return null; | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     // Run after each test. | ||||||
|  |     tearDown(log.clear); | ||||||
|  | 
 | ||||||
|  |     test('digest', () async { | ||||||
|  |       await nativeCrypto.digest(Uint8List(0), 'sha256'); | ||||||
|  |       expect( | ||||||
|  |         log, | ||||||
|  |         <Matcher>[ | ||||||
|  |           isMethodCall( | ||||||
|  |             'digest', | ||||||
|  |             arguments: <String, dynamic>{ | ||||||
|  |               'data': Uint8List(0), | ||||||
|  |               'algorithm': 'sha256', | ||||||
|  |             }, | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('generateSecretKey', () async { | ||||||
|  |       await nativeCrypto.generateSecretKey(256); | ||||||
|  |       expect( | ||||||
|  |         log, | ||||||
|  |         <Matcher>[ | ||||||
|  |           isMethodCall( | ||||||
|  |             'generateSecretKey', | ||||||
|  |             arguments: <String, dynamic>{ | ||||||
|  |               'bitsCount': 256, | ||||||
|  |             }, | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('pbkdf2', () async { | ||||||
|  |       await nativeCrypto.pbkdf2( | ||||||
|  |         'password', | ||||||
|  |         'salt', | ||||||
|  |         32, | ||||||
|  |         10000, | ||||||
|  |         'sha256', | ||||||
|  |       ); | ||||||
|  |       expect( | ||||||
|  |         log, | ||||||
|  |         <Matcher>[ | ||||||
|  |           isMethodCall( | ||||||
|  |             'pbkdf2', | ||||||
|  |             arguments: <String, dynamic>{ | ||||||
|  |               'password': 'password', | ||||||
|  |               'salt': 'salt', | ||||||
|  |               'keyBytesCount': 32, | ||||||
|  |               'iterations': 10000, | ||||||
|  |               'algorithm': 'sha256', | ||||||
|  |             }, | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('encryptAsList', () async { | ||||||
|  |       await nativeCrypto.encryptAsList( | ||||||
|  |         Uint8List(0), | ||||||
|  |         Uint8List(0), | ||||||
|  |         'aes', | ||||||
|  |       ); | ||||||
|  |       expect( | ||||||
|  |         log, | ||||||
|  |         <Matcher>[ | ||||||
|  |           isMethodCall( | ||||||
|  |             'encryptAsList', | ||||||
|  |             arguments: <String, dynamic>{ | ||||||
|  |               'data': Uint8List(0), | ||||||
|  |               'key': Uint8List(0), | ||||||
|  |               'algorithm': 'aes', | ||||||
|  |             }, | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('decryptAsList', () async { | ||||||
|  |       await nativeCrypto.decryptAsList( | ||||||
|  |         [Uint8List(0)], | ||||||
|  |         Uint8List(0), | ||||||
|  |         'aes', | ||||||
|  |       ); | ||||||
|  |       expect( | ||||||
|  |         log, | ||||||
|  |         <Matcher>[ | ||||||
|  |           isMethodCall( | ||||||
|  |             'decryptAsList', | ||||||
|  |             arguments: <String, dynamic>{ | ||||||
|  |               'data': [Uint8List(0)], | ||||||
|  |               'key': Uint8List(0), | ||||||
|  |               'algorithm': 'aes', | ||||||
|  |             }, | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('encrypt', () async { | ||||||
|  |       await nativeCrypto.encrypt( | ||||||
|  |         Uint8List(0), | ||||||
|  |         Uint8List(0), | ||||||
|  |         'aes', | ||||||
|  |       ); | ||||||
|  |       expect( | ||||||
|  |         log, | ||||||
|  |         <Matcher>[ | ||||||
|  |           isMethodCall( | ||||||
|  |             'encrypt', | ||||||
|  |             arguments: <String, dynamic>{ | ||||||
|  |               'data': Uint8List(0), | ||||||
|  |               'key': Uint8List(0), | ||||||
|  |               'algorithm': 'aes', | ||||||
|  |             }, | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |      | ||||||
|  |     test('decrypt', () async { | ||||||
|  |       await nativeCrypto.decrypt( | ||||||
|  |         Uint8List(0), | ||||||
|  |         Uint8List(0), | ||||||
|  |         'aes', | ||||||
|  |       ); | ||||||
|  |       expect( | ||||||
|  |         log, | ||||||
|  |         <Matcher>[ | ||||||
|  |           isMethodCall( | ||||||
|  |             'decrypt', | ||||||
|  |             arguments: <String, dynamic>{ | ||||||
|  |               'data': Uint8List(0), | ||||||
|  |               'key': Uint8List(0), | ||||||
|  |               'algorithm': 'aes', | ||||||
|  |             }, | ||||||
|  |           ), | ||||||
|  |         ], | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |   }); | ||||||
|  | } | ||||||
| @ -0,0 +1,166 @@ | |||||||
|  | // Author: Hugo Pointcheval | ||||||
|  | // Email: git@pcl.ovh | ||||||
|  | // ----- | ||||||
|  | // File: native_crypto_platform_test.dart | ||||||
|  | // Created Date: 25/05/2022 21:43:25 | ||||||
|  | // Last Modified: 25/05/2022 23:26:18 | ||||||
|  | // ----- | ||||||
|  | // Copyright (c) 2022 | ||||||
|  | 
 | ||||||
|  | import 'dart:typed_data'; | ||||||
|  | 
 | ||||||
|  | import 'package:flutter_test/flutter_test.dart'; | ||||||
|  | import 'package:mockito/mockito.dart'; | ||||||
|  | import 'package:native_crypto_platform_interface/src/platform_interface/native_crypto_platform.dart'; | ||||||
|  | import 'package:plugin_platform_interface/plugin_platform_interface.dart'; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |   late ExtendsNativeCryptoPlatform nativeCryptoPlatform; | ||||||
|  | 
 | ||||||
|  |   group('$NativeCryptoPlatform', () { | ||||||
|  |     setUpAll(() { | ||||||
|  |       nativeCryptoPlatform = ExtendsNativeCryptoPlatform(); | ||||||
|  |     }); | ||||||
|  |     test('Constructor', () { | ||||||
|  |       expect(nativeCryptoPlatform, isA<NativeCryptoPlatform>()); | ||||||
|  |       expect(nativeCryptoPlatform, isA<PlatformInterface>()); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('get.instance', () { | ||||||
|  |       expect( | ||||||
|  |         NativeCryptoPlatform.instance, | ||||||
|  |         isA<NativeCryptoPlatform>(), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |     test('set.instance', () { | ||||||
|  |       NativeCryptoPlatform.instance = ExtendsNativeCryptoPlatform(); | ||||||
|  |       expect( | ||||||
|  |         NativeCryptoPlatform.instance, | ||||||
|  |         isA<NativeCryptoPlatform>(), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('Cannot be implemented with `implements`', () { | ||||||
|  |       expect( | ||||||
|  |         () { | ||||||
|  |           NativeCryptoPlatform.instance = ImplementsNativeCryptoPlatform(); | ||||||
|  |         }, | ||||||
|  |         throwsA(isInstanceOf<AssertionError>()), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('Can be mocked with `implements`', () { | ||||||
|  |       final MockNativeCryptoPlatform mock = MockNativeCryptoPlatform(); | ||||||
|  |       NativeCryptoPlatform.instance = mock; | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('Can be extended', () { | ||||||
|  |       NativeCryptoPlatform.instance = ExtendsNativeCryptoPlatform(); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('throws if .digest() not implemented', () async { | ||||||
|  |       await expectLater( | ||||||
|  |         () => nativeCryptoPlatform.digest(Uint8List(0), 'sha256'), | ||||||
|  |         throwsA( | ||||||
|  |           isA<UnimplementedError>().having( | ||||||
|  |             (e) => e.message, | ||||||
|  |             'message', | ||||||
|  |             'digest is not implemented', | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('throws if .generateSecretKey() not implemented', () async { | ||||||
|  |       await expectLater( | ||||||
|  |         () => nativeCryptoPlatform.generateSecretKey(256), | ||||||
|  |         throwsA( | ||||||
|  |           isA<UnimplementedError>().having( | ||||||
|  |             (e) => e.message, | ||||||
|  |             'message', | ||||||
|  |             'generateSecretKey is not implemented', | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('throws if .pbkdf2() not implemented', () async { | ||||||
|  |       await expectLater( | ||||||
|  |         () => nativeCryptoPlatform.pbkdf2('password', 'salt', 0, 0, 'sha256'), | ||||||
|  |         throwsA( | ||||||
|  |           isA<UnimplementedError>().having( | ||||||
|  |             (e) => e.message, | ||||||
|  |             'message', | ||||||
|  |             'pbkdf2 is not implemented', | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('throws if .encryptAsList() not implemented', () async { | ||||||
|  |       await expectLater( | ||||||
|  |         () => nativeCryptoPlatform.encryptAsList( | ||||||
|  |           Uint8List(0), | ||||||
|  |           Uint8List(0), | ||||||
|  |           'aes', | ||||||
|  |         ), | ||||||
|  |         throwsA( | ||||||
|  |           isA<UnimplementedError>().having( | ||||||
|  |             (e) => e.message, | ||||||
|  |             'message', | ||||||
|  |             'encryptAsList is not implemented', | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('throws if .decryptAsList() not implemented', () async { | ||||||
|  |       await expectLater( | ||||||
|  |         () => nativeCryptoPlatform | ||||||
|  |             .decryptAsList([Uint8List(0)], Uint8List(0), 'aes'), | ||||||
|  |         throwsA( | ||||||
|  |           isA<UnimplementedError>().having( | ||||||
|  |             (e) => e.message, | ||||||
|  |             'message', | ||||||
|  |             'decryptAsList is not implemented', | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('throws if .encrypt() not implemented', () async { | ||||||
|  |       await expectLater( | ||||||
|  |         () => nativeCryptoPlatform.encrypt(Uint8List(0), Uint8List(0), 'aes'), | ||||||
|  |         throwsA( | ||||||
|  |           isA<UnimplementedError>().having( | ||||||
|  |             (e) => e.message, | ||||||
|  |             'message', | ||||||
|  |             'encrypt is not implemented', | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     test('throws if .decrypt() not implemented', () async { | ||||||
|  |       await expectLater( | ||||||
|  |         () => nativeCryptoPlatform.decrypt(Uint8List(0), Uint8List(0), 'aes'), | ||||||
|  |         throwsA( | ||||||
|  |           isA<UnimplementedError>().having( | ||||||
|  |             (e) => e.message, | ||||||
|  |             'message', | ||||||
|  |             'decrypt is not implemented', | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class ExtendsNativeCryptoPlatform extends NativeCryptoPlatform {} | ||||||
|  | 
 | ||||||
|  | class ImplementsNativeCryptoPlatform extends Mock | ||||||
|  |     implements NativeCryptoPlatform {} | ||||||
|  | 
 | ||||||
|  | class MockNativeCryptoPlatform extends Mock | ||||||
|  |     with MockPlatformInterfaceMixin | ||||||
|  |     implements NativeCryptoPlatform {} | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user