From 07c99309ff80e5428ba6888613d2bde20aef6a07 Mon Sep 17 00:00:00 2001
From: sneurlax <sneurlax@gmail.com>
Date: Thu, 10 Nov 2022 10:21:07 -0600
Subject: [PATCH 1/5] use native address validation

---
 crypto_plugins/flutter_libmonero               | 2 +-
 lib/services/coins/monero/monero_wallet.dart   | 4 +---
 lib/services/coins/wownero/wownero_wallet.dart | 4 +---
 3 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/crypto_plugins/flutter_libmonero b/crypto_plugins/flutter_libmonero
index b9bc2dcc5..4dd55584a 160000
--- a/crypto_plugins/flutter_libmonero
+++ b/crypto_plugins/flutter_libmonero
@@ -1 +1 @@
-Subproject commit b9bc2dcc56e13f235a6c5b0fc02c0e543eb87758
+Subproject commit 4dd55584a023bf6fd863c24ca8e1ffcedcc25162
diff --git a/lib/services/coins/monero/monero_wallet.dart b/lib/services/coins/monero/monero_wallet.dart
index 4d29c405c..a96ecac83 100644
--- a/lib/services/coins/monero/monero_wallet.dart
+++ b/lib/services/coins/monero/monero_wallet.dart
@@ -1353,10 +1353,8 @@ class MoneroWallet extends CoinServiceAPI {
   Future<List<UtxoObject>> get unspentOutputs => throw UnimplementedError();
 
   @override
-  // TODO: implement validateAddress
   bool validateAddress(String address) {
-    bool valid = RegExp("[a-zA-Z0-9]{95}").hasMatch(address) ||
-        RegExp("[a-zA-Z0-9]{106}").hasMatch(address);
+    bool valid = walletBase!.validateAddress(address);
     return valid;
   }
 
diff --git a/lib/services/coins/wownero/wownero_wallet.dart b/lib/services/coins/wownero/wownero_wallet.dart
index e2c52c40a..4c02ec037 100644
--- a/lib/services/coins/wownero/wownero_wallet.dart
+++ b/lib/services/coins/wownero/wownero_wallet.dart
@@ -1378,10 +1378,8 @@ class WowneroWallet extends CoinServiceAPI {
   Future<List<UtxoObject>> get unspentOutputs => throw UnimplementedError();
 
   @override
-  // TODO: implement validateAddress
   bool validateAddress(String address) {
-    bool valid = RegExp("[a-zA-Z0-9]{95}").hasMatch(address) ||
-        RegExp("[a-zA-Z0-9]{106}").hasMatch(address);
+    bool valid = walletBase!.validateAddress(address);
     return valid;
   }
 

From 15dc2512dbd431ac894169731a11220f97416dad Mon Sep 17 00:00:00 2001
From: sneurlax <sneurlax@gmail.com>
Date: Thu, 10 Nov 2022 12:19:51 -0600
Subject: [PATCH 2/5] update iOs headers

---
 crypto_plugins/flutter_libmonero | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/crypto_plugins/flutter_libmonero b/crypto_plugins/flutter_libmonero
index 4dd55584a..8a8c88cda 160000
--- a/crypto_plugins/flutter_libmonero
+++ b/crypto_plugins/flutter_libmonero
@@ -1 +1 @@
-Subproject commit 4dd55584a023bf6fd863c24ca8e1ffcedcc25162
+Subproject commit 8a8c88cdade6fe18529deea410f862b125167a3b

From 24bdc100fb479843132f8f6e577f69cf62341323 Mon Sep 17 00:00:00 2001
From: sneurlax <sneurlax@gmail.com>
Date: Thu, 10 Nov 2022 15:49:19 -0600
Subject: [PATCH 3/5] add address validation tests

---
 crypto_plugins/flutter_libmonero              |  2 +-
 .../coins/monero/monero_wallet_test.dart      | 22 ++++++++++++++++++-
 .../coins/wownero/wownero_wallet_test.dart    | 12 ++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/crypto_plugins/flutter_libmonero b/crypto_plugins/flutter_libmonero
index 8a8c88cda..2da774385 160000
--- a/crypto_plugins/flutter_libmonero
+++ b/crypto_plugins/flutter_libmonero
@@ -1 +1 @@
-Subproject commit 8a8c88cdade6fe18529deea410f862b125167a3b
+Subproject commit 2da77438527732dfaa5398aa391eab5253dabe19
diff --git a/test/services/coins/monero/monero_wallet_test.dart b/test/services/coins/monero/monero_wallet_test.dart
index d54959ab2..4c4daa9ac 100644
--- a/test/services/coins/monero/monero_wallet_test.dart
+++ b/test/services/coins/monero/monero_wallet_test.dart
@@ -92,7 +92,7 @@ void main() async {
   _walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
   walletService = monero.createMoneroWalletService(_walletInfoSource);
 
-  group("Mainnet tests", () {
+  group("Mnemonic recovery", () {
     setUp(() async {
       try {
         // if (name?.isEmpty ?? true) {
@@ -133,6 +133,26 @@ void main() async {
       }
     });
 
+    test("Test address validation", () async { // TODO I'd like to refactor/separate this out so I can test addresses alone, without having to first create a wallet.
+      final wallet = await _walletCreationService.restoreFromSeed(credentials);
+      walletBase = wallet as MoneroWalletBase;
+
+      expect(
+          await walletBase!.validateAddress(''), false);
+      expect(
+          await walletBase!.validateAddress('4AeRgkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gp4nn'), true);
+      expect(
+          await walletBase!.validateAddress('4asdfkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gpjkl'), false);
+      expect(
+          await walletBase!.validateAddress('8AeRgkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gp4nn'), false);
+      expect(
+          await walletBase!.validateAddress('84kYPuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenvHy'), true);
+      expect(
+          await walletBase!.validateAddress('8asdfuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenjkl'), false);
+      expect(
+          await walletBase!.validateAddress('44kYPuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenvHy'), false);
+    });
+
     test("Test mainnet address generation from seed", () async {
       final wallet = await
           // _walletCreationService.create(credentials);
diff --git a/test/services/coins/wownero/wownero_wallet_test.dart b/test/services/coins/wownero/wownero_wallet_test.dart
index 660bc1438..8daa91755 100644
--- a/test/services/coins/wownero/wownero_wallet_test.dart
+++ b/test/services/coins/wownero/wownero_wallet_test.dart
@@ -122,6 +122,18 @@ void main() async {
       expect(hasThrown, false);
     });
 
+    test("Test address validation", () async { // TODO I'd like to refactor/separate this out so I can test addresses alone, without having to first create a wallet.
+      final wallet = await _walletCreationService.restoreFromSeed(credentials);
+      walletBase = wallet as WowneroWalletBase;
+
+      expect(
+          await walletBase!.validateAddress(''), false);
+      expect(
+          await walletBase!.validateAddress('Wo3jmHvTMLwE6h29fpgcb8PbJSpaKuqM7XTXVfiiu8bLCZsJvrQCbQSJR48Vo3BWNQKsMsXZ4VixndXTH25QtorC27NCjmsEi'), true);
+      expect(
+          await walletBase!.validateAddress('WasdfHvTMLwE6h29fpgcb8PbJSpaKuqM7XTXVfiiu8bLCZsJvrQCbQSJR48Vo3BWNQKsMsXZ4VixndXTH25QtorC27NCjmjkl'), false);
+    });
+
     test("Wownero 14 word seed address generation", () async {
       final wallet = await _walletCreationService.create(credentials);
       // TODO validate mnemonic

From a6172f90a9e5024aad844be63e8952bdf98ae07d Mon Sep 17 00:00:00 2001
From: sneurlax <sneurlax@gmail.com>
Date: Thu, 10 Nov 2022 16:21:58 -0600
Subject: [PATCH 4/5] cherrypick Julian's test changes

---
 .../coins/monero/monero_wallet_test.dart      | 57 ++++++++-----------
 .../coins/wownero/wownero_wallet_test.dart    | 53 ++++++++---------
 2 files changed, 46 insertions(+), 64 deletions(-)

diff --git a/test/services/coins/monero/monero_wallet_test.dart b/test/services/coins/monero/monero_wallet_test.dart
index 4c4daa9ac..34024640f 100644
--- a/test/services/coins/monero/monero_wallet_test.dart
+++ b/test/services/coins/monero/monero_wallet_test.dart
@@ -1,43 +1,27 @@
-import 'dart:async';
 import 'dart:core';
 import 'dart:core' as core;
 import 'dart:io';
 import 'dart:math';
 
-import 'package:flutter_test/flutter_test.dart';
-import 'package:hive/hive.dart';
-import 'package:hive_test/hive_test.dart';
-import 'package:mockito/annotations.dart';
-import 'package:mockito/mockito.dart';
-
-import 'package:cw_core/monero_amount_format.dart';
 import 'package:cw_core/node.dart';
-import 'package:cw_core/pending_transaction.dart';
 import 'package:cw_core/unspent_coins_info.dart';
 import 'package:cw_core/wallet_base.dart';
 import 'package:cw_core/wallet_credentials.dart';
 import 'package:cw_core/wallet_info.dart';
 import 'package:cw_core/wallet_service.dart';
 import 'package:cw_core/wallet_type.dart';
-import 'package:cw_monero/api/wallet.dart';
-import 'package:cw_monero/api/wallet_manager.dart' as monero_wallet_manager;
-import 'package:cw_monero/pending_monero_transaction.dart';
 import 'package:cw_monero/monero_wallet.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
 import 'package:flutter_libmonero/core/key_service.dart';
 import 'package:flutter_libmonero/core/wallet_creation_service.dart';
-import 'package:flutter_libmonero/view_model/send/output.dart';
 import 'package:flutter_libmonero/monero/monero.dart';
-import 'package:flutter_secure_storage/flutter_secure_storage.dart';
+import 'package:flutter_test/flutter_test.dart';
 import 'package:hive/hive.dart';
+import 'package:hive_test/hive_test.dart';
+import 'package:mockito/annotations.dart';
 import 'package:path_provider/path_provider.dart';
 import 'package:shared_preferences/shared_preferences.dart';
-import 'package:stackwallet/utilities/flutter_secure_storage_interface.dart';
-
 import 'package:stackwallet/services/wallets.dart';
-
-import 'dart:developer' as developer;
+import 'package:stackwallet/utilities/flutter_secure_storage_interface.dart';
 
 // TODO trim down to the minimum imports above
 
@@ -76,24 +60,29 @@ void main() async {
       dirPath: '');
   late WalletCredentials credentials;
 
-  WidgetsFlutterBinding.ensureInitialized();
-  Directory appDir = (await getApplicationDocumentsDirectory());
-  if (Platform.isIOS) {
-    appDir = (await getLibraryDirectory());
-  }
-  await Hive.close();
-  Hive.init(appDir.path);
-  Hive.registerAdapter(NodeAdapter());
-  Hive.registerAdapter(WalletInfoAdapter());
-  Hive.registerAdapter(WalletTypeAdapter());
-  Hive.registerAdapter(UnspentCoinsInfoAdapter());
-
   monero.onStartup();
-  _walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
-  walletService = monero.createMoneroWalletService(_walletInfoSource);
+
+  bool hiveAdaptersRegistered = false;
 
   group("Mnemonic recovery", () {
     setUp(() async {
+      await setUpTestHive();
+      if (!hiveAdaptersRegistered) {
+        hiveAdaptersRegistered = true;
+
+        Hive.registerAdapter(NodeAdapter());
+        Hive.registerAdapter(WalletInfoAdapter());
+        Hive.registerAdapter(WalletTypeAdapter());
+        Hive.registerAdapter(UnspentCoinsInfoAdapter());
+
+        final wallets = await Hive.openBox('wallets');
+        await wallets.put('currentWalletName', name);
+
+        _walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
+        walletService = monero
+            .createMoneroWalletService(_walletInfoSource as Box<WalletInfo>);
+      }
+
       try {
         // if (name?.isEmpty ?? true) {
         // name = await generateName();
diff --git a/test/services/coins/wownero/wownero_wallet_test.dart b/test/services/coins/wownero/wownero_wallet_test.dart
index 8daa91755..8ad730e13 100644
--- a/test/services/coins/wownero/wownero_wallet_test.dart
+++ b/test/services/coins/wownero/wownero_wallet_test.dart
@@ -1,38 +1,26 @@
-import 'dart:async';
 import 'dart:core';
 import 'dart:core' as core;
 import 'dart:io';
 import 'dart:math';
 
-import 'package:flutter_test/flutter_test.dart';
-import 'package:hive/hive.dart';
-import 'package:hive_test/hive_test.dart';
-import 'package:mockito/annotations.dart';
-import 'package:mockito/mockito.dart';
-
-import 'package:cw_core/monero_amount_format.dart';
 import 'package:cw_core/node.dart';
-import 'package:cw_core/pending_transaction.dart';
 import 'package:cw_core/unspent_coins_info.dart';
 import 'package:cw_core/wallet_base.dart';
 import 'package:cw_core/wallet_credentials.dart';
 import 'package:cw_core/wallet_info.dart';
 import 'package:cw_core/wallet_service.dart';
 import 'package:cw_core/wallet_type.dart';
-import 'package:cw_wownero/api/wallet.dart';
-import 'package:cw_wownero/pending_wownero_transaction.dart';
 import 'package:cw_wownero/wownero_wallet.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
 import 'package:flutter_libmonero/core/key_service.dart';
 import 'package:flutter_libmonero/core/wallet_creation_service.dart';
-import 'package:flutter_libmonero/view_model/send/output.dart';
 import 'package:flutter_libmonero/wownero/wownero.dart';
-import 'package:flutter_secure_storage/flutter_secure_storage.dart';
-import 'package:stackwallet/utilities/flutter_secure_storage_interface.dart';
+import 'package:flutter_test/flutter_test.dart';
 import 'package:hive/hive.dart';
+import 'package:hive_test/hive_test.dart';
+import 'package:mockito/annotations.dart';
 import 'package:path_provider/path_provider.dart';
 import 'package:shared_preferences/shared_preferences.dart';
+import 'package:stackwallet/utilities/flutter_secure_storage_interface.dart';
 
 import 'wownero_wallet_test_data.dart';
 
@@ -67,24 +55,29 @@ void main() async {
       dirPath: '');
   late WalletCredentials credentials;
 
-  WidgetsFlutterBinding.ensureInitialized();
-  Directory appDir = (await getApplicationDocumentsDirectory());
-  if (Platform.isIOS) {
-    appDir = (await getLibraryDirectory());
-  }
-  await Hive.close();
-  Hive.init(appDir.path);
-  Hive.registerAdapter(NodeAdapter());
-  Hive.registerAdapter(WalletInfoAdapter());
-  Hive.registerAdapter(WalletTypeAdapter());
-  Hive.registerAdapter(UnspentCoinsInfoAdapter());
-
   wownero.onStartup();
-  _walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
-  walletService = wownero.createWowneroWalletService(_walletInfoSource);
+
+  bool hiveAdaptersRegistered = false;
 
   group("Wownero 14 word seed generation", () {
     setUp(() async {
+      await setUpTestHive();
+      if (!hiveAdaptersRegistered) {
+        hiveAdaptersRegistered = true;
+
+        Hive.registerAdapter(NodeAdapter());
+        Hive.registerAdapter(WalletInfoAdapter());
+        Hive.registerAdapter(WalletTypeAdapter());
+        Hive.registerAdapter(UnspentCoinsInfoAdapter());
+
+        final wallets = await Hive.openBox('wallets');
+        await wallets.put('currentWalletName', name);
+
+        _walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
+        walletService = wownero
+            .createWowneroWalletService(_walletInfoSource as Box<WalletInfo>);
+      }
+
       bool hasThrown = false;
       try {
         name = 'namee${Random().nextInt(10000000)}';

From f61b3857e6e40a45683f2233a34eb6f2087a2463 Mon Sep 17 00:00:00 2001
From: sneurlax <sneurlax@gmail.com>
Date: Thu, 10 Nov 2022 17:03:01 -0600
Subject: [PATCH 5/5] add more address validation to tests

---
 .../coins/monero/monero_wallet_test.dart      | 69 ++++++++-----------
 .../coins/wownero/wownero_wallet_test.dart    | 35 ++++------
 2 files changed, 43 insertions(+), 61 deletions(-)

diff --git a/test/services/coins/monero/monero_wallet_test.dart b/test/services/coins/monero/monero_wallet_test.dart
index 6b134f302..79bf98a41 100644
--- a/test/services/coins/monero/monero_wallet_test.dart
+++ b/test/services/coins/monero/monero_wallet_test.dart
@@ -60,19 +60,11 @@ void main() async {
       dirPath: '');
   late WalletCredentials credentials;
 
-  WidgetsFlutterBinding.ensureInitialized();
-  Directory appDir = (await getApplicationDocumentsDirectory());
-  if (Platform.isIOS) {
-    appDir = (await getLibraryDirectory());
-  }
-
   monero.onStartup();
 
   bool hiveAdaptersRegistered = false;
 
-  bool hiveAdaptersRegistered = false;
-
-  group("Mnemonic recovery", () {
+  group("Mainnet tests", () {
     setUp(() async {
       await setUpTestHive();
       if (!hiveAdaptersRegistered) {
@@ -87,7 +79,8 @@ void main() async {
         await wallets.put('currentWalletName', name);
 
         _walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
-        walletService = monero.createMoneroWalletService(_walletInfoSource);
+        walletService = monero
+            .createMoneroWalletService(_walletInfoSource as Box<WalletInfo>);
       }
 
       try {
@@ -97,12 +90,12 @@ void main() async {
         final dirPath = await pathForWalletDir(name: name, type: type);
         path = await pathForWallet(name: name, type: type);
         credentials =
-            // //     creating a new wallet
-            // monero.createMoneroNewWalletCredentials(
-            //     name: name, language: "English");
-            // restoring a previous wallet
-            monero.createMoneroRestoreWalletFromSeedCredentials(
-                name: name, height: 2580000, mnemonic: testMnemonic);
+        // //     creating a new wallet
+        // monero.createMoneroNewWalletCredentials(
+        //     name: name, language: "English");
+        // restoring a previous wallet
+        monero.createMoneroRestoreWalletFromSeedCredentials(
+            name: name, height: 2580000, mnemonic: testMnemonic);
 
         walletInfo = WalletInfo.external(
             id: WalletBase.idFor(name, type),
@@ -129,30 +122,10 @@ void main() async {
       }
     });
 
-    test("Test address validation", () async { // TODO I'd like to refactor/separate this out so I can test addresses alone, without having to first create a wallet.
-      final wallet = await _walletCreationService.restoreFromSeed(credentials);
-      walletBase = wallet as MoneroWalletBase;
-
-      expect(
-          await walletBase!.validateAddress(''), false);
-      expect(
-          await walletBase!.validateAddress('4AeRgkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gp4nn'), true);
-      expect(
-          await walletBase!.validateAddress('4asdfkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gpjkl'), false);
-      expect(
-          await walletBase!.validateAddress('8AeRgkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gp4nn'), false);
-      expect(
-          await walletBase!.validateAddress('84kYPuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenvHy'), true);
-      expect(
-          await walletBase!.validateAddress('8asdfuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenjkl'), false);
-      expect(
-          await walletBase!.validateAddress('44kYPuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenvHy'), false);
-    });
-
     test("Test mainnet address generation from seed", () async {
       final wallet = await
-          // _walletCreationService.create(credentials);
-          _walletCreationService.restoreFromSeed(credentials);
+      // _walletCreationService.create(credentials);
+      _walletCreationService.restoreFromSeed(credentials);
       walletInfo.address = wallet.walletAddresses.address;
       //print(walletInfo.address);
 
@@ -161,6 +134,9 @@ void main() async {
       walletBase = wallet as MoneroWalletBase;
       //print("${walletBase?.seed}");
 
+      expect(
+          await walletBase!.validateAddress(walletInfo.address ?? ''), true);
+
       // print(walletBase);
       // loggerPrint(walletBase.toString());
       // loggerPrint("name: ${walletBase!.name}  seed: ${walletBase!.seed} id: "
@@ -180,6 +156,21 @@ void main() async {
           await walletBase!.getTransactionAddress(1, 1), mainnetTestData[1][1]);
       expect(
           await walletBase!.getTransactionAddress(1, 2), mainnetTestData[1][2]);
+
+      expect(
+          await walletBase!.validateAddress(''), false);
+      expect(
+          await walletBase!.validateAddress('4AeRgkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gp4nn'), true);
+      expect(
+          await walletBase!.validateAddress('4asdfkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gpjkl'), false);
+      expect(
+          await walletBase!.validateAddress('8AeRgkWZsMJhAWKMeCZ3h4ZSPnAcW5VBtRFyLd6gBEf6GgJU2FHXDA6i1DnQTd6h8R3VU5AkbGcWSNhtSwNNPgaD48gp4nn'), false);
+      expect(
+          await walletBase!.validateAddress('84kYPuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenvHy'), true);
+      expect(
+          await walletBase!.validateAddress('8asdfuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenjkl'), false);
+      expect(
+          await walletBase!.validateAddress('44kYPuZ1eaVKGQhf26QPNWbSLQG16BywXdLYYShVrPNMLAUAWce5vcpRc78FxwRphrG6Cda7faCKdUMr8fUCH3peHPenvHy'), false);
     });
   });
   /*
@@ -238,6 +229,6 @@ Future<String> pathForWalletDir(
 }
 
 Future<String> pathForWallet(
-        {required String name, required WalletType type}) async =>
+    {required String name, required WalletType type}) async =>
     await pathForWalletDir(name: name, type: type)
         .then((path) => path + '/$name');
diff --git a/test/services/coins/wownero/wownero_wallet_test.dart b/test/services/coins/wownero/wownero_wallet_test.dart
index 71c11677a..78a9c56c1 100644
--- a/test/services/coins/wownero/wownero_wallet_test.dart
+++ b/test/services/coins/wownero/wownero_wallet_test.dart
@@ -55,12 +55,6 @@ void main() async {
       dirPath: '');
   late WalletCredentials credentials;
 
-  WidgetsFlutterBinding.ensureInitialized();
-  Directory appDir = (await getApplicationDocumentsDirectory());
-  if (Platform.isIOS) {
-    appDir = (await getLibraryDirectory());
-  }
-  
   wownero.onStartup();
 
   bool hiveAdaptersRegistered = false;
@@ -80,7 +74,8 @@ void main() async {
         await wallets.put('currentWalletName', name);
 
         _walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
-        walletService = wownero.createWowneroWalletService(_walletInfoSource);
+        walletService = wownero
+            .createWowneroWalletService(_walletInfoSource as Box<WalletInfo>);
       }
 
       bool hasThrown = false;
@@ -120,18 +115,6 @@ void main() async {
       expect(hasThrown, false);
     });
 
-    test("Test address validation", () async { // TODO I'd like to refactor/separate this out so I can test addresses alone, without having to first create a wallet.
-      final wallet = await _walletCreationService.restoreFromSeed(credentials);
-      walletBase = wallet as WowneroWalletBase;
-
-      expect(
-          await walletBase!.validateAddress(''), false);
-      expect(
-          await walletBase!.validateAddress('Wo3jmHvTMLwE6h29fpgcb8PbJSpaKuqM7XTXVfiiu8bLCZsJvrQCbQSJR48Vo3BWNQKsMsXZ4VixndXTH25QtorC27NCjmsEi'), true);
-      expect(
-          await walletBase!.validateAddress('WasdfHvTMLwE6h29fpgcb8PbJSpaKuqM7XTXVfiiu8bLCZsJvrQCbQSJR48Vo3BWNQKsMsXZ4VixndXTH25QtorC27NCjmjkl'), false);
-    });
-
     test("Wownero 14 word seed address generation", () async {
       final wallet = await _walletCreationService.create(credentials);
       // TODO validate mnemonic
@@ -143,13 +126,21 @@ void main() async {
         walletBase?.close();
         walletBase = wallet as WowneroWalletBase;
 
-        // TODO validate
-        //expect(walletInfo.address, mainnetTestData14[0][0]);
+        expect(
+            await walletBase!.validateAddress(wallet.walletAddresses.address ?? ''), true);
       } catch (_) {
         hasThrown = true;
       }
       expect(hasThrown, false);
 
+      // Address validation
+      expect(
+          await walletBase!.validateAddress(''), false);
+      expect(
+          await walletBase!.validateAddress('Wo3jmHvTMLwE6h29fpgcb8PbJSpaKuqM7XTXVfiiu8bLCZsJvrQCbQSJR48Vo3BWNQKsMsXZ4VixndXTH25QtorC27NCjmsEi'), true);
+      expect(
+          await walletBase!.validateAddress('WasdfHvTMLwE6h29fpgcb8PbJSpaKuqM7XTXVfiiu8bLCZsJvrQCbQSJR48Vo3BWNQKsMsXZ4VixndXTH25QtorC27NCjmjkl'), false);
+
       walletBase?.close();
       walletBase = wallet as WowneroWalletBase;
     });
@@ -376,6 +367,6 @@ Future<String> pathForWalletDir(
 }
 
 Future<String> pathForWallet(
-        {required String name, required WalletType type}) async =>
+    {required String name, required WalletType type}) async =>
     await pathForWalletDir(name: name, type: type)
         .then((path) => path + '/$name');