mirror of
https://github.com/mimblewimble/grin-wallet.git
synced 2025-01-20 19:11:09 +03:00
8384a3ebb0
* updated util and libwallet with thiserror * update impl crate to thiserror * api crate converted to thiserror * update of controller crate to thiserror * update final bin + tests to thiserror * update unused import * remove failure derive * reset import of grin to master * update cargo lock * update from master * remove grin libs re-export from util crate :( * temp local * point code at bleeding edge grin master branch
100 lines
2.8 KiB
Rust
100 lines
2.8 KiB
Rust
// Copyright 2021 The Grin Developers
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#[macro_use]
|
|
extern crate clap;
|
|
|
|
#[macro_use]
|
|
extern crate log;
|
|
|
|
extern crate grin_wallet;
|
|
|
|
use grin_wallet_impls::test_framework::{self, LocalWalletClient, WalletProxy};
|
|
|
|
use clap::App;
|
|
use std::thread;
|
|
use std::time::Duration;
|
|
|
|
use grin_keychain::ExtKeychain;
|
|
use grin_wallet_impls::DefaultLCProvider;
|
|
|
|
use grin_util as util;
|
|
|
|
#[macro_use]
|
|
mod common;
|
|
use common::{execute_command, initial_setup_wallet, instantiate_wallet, setup_global_chain_type};
|
|
|
|
// Development testing helper for tor/socks investigation.
|
|
// Not (yet) to be run as part of automated testing
|
|
|
|
fn setup_no_clean() {
|
|
util::init_test_logger();
|
|
setup_global_chain_type();
|
|
}
|
|
|
|
#[ignore]
|
|
#[test]
|
|
fn socks_tor() -> Result<(), grin_wallet_controller::Error> {
|
|
let test_dir = "target/test_output/socks_tor";
|
|
let yml = load_yaml!("../src/bin/grin-wallet.yml");
|
|
let app = App::from_yaml(yml);
|
|
setup_no_clean();
|
|
|
|
setup_proxy!(test_dir, chain, wallet1, client1, mask1, wallet2, client2, _mask2);
|
|
|
|
// Tor should be running at this point for wallet 2, with a hidden service
|
|
// bound to the listening port 53415. By default, tor will also be running
|
|
// a socks proxy lister at 127.0.0.1 9050 (both wallets can use for now)
|
|
//
|
|
// Relevant torrc config:
|
|
// HiddenServiceDir ./hidden_service/
|
|
// HiddenServicePort 80 127.0.0.1:53415
|
|
//
|
|
// tor -f torrc
|
|
|
|
// Substitute whatever onion address has been created
|
|
let onion_address = "2a6at2obto3uvkpkitqp4wxcg6u36qf534eucbskqciturczzc5suyid";
|
|
|
|
// run the foreign listener for wallet 2
|
|
let arg_vec = vec!["grin-wallet", "-p", "password", "listen"];
|
|
// Set owner listener running
|
|
thread::spawn(move || {
|
|
let yml = load_yaml!("../src/bin/grin-wallet.yml");
|
|
let app = App::from_yaml(yml);
|
|
execute_command(&app, test_dir, "wallet2", &client2, arg_vec.clone()).unwrap();
|
|
});
|
|
|
|
// dumb pause for now, hidden service should already be running
|
|
thread::sleep(Duration::from_millis(3000));
|
|
|
|
// mine into wallet 1 a bit
|
|
let bh = 5u64;
|
|
let _ =
|
|
test_framework::award_blocks_to_wallet(&chain, wallet1.clone(), mask1, bh as usize, false);
|
|
|
|
// now, test send from wallet 1 over tor
|
|
let arg_vec = vec![
|
|
"grin-wallet",
|
|
"-p",
|
|
"password",
|
|
"send",
|
|
"-c",
|
|
"2",
|
|
"-d",
|
|
onion_address,
|
|
"10",
|
|
];
|
|
execute_command(&app, test_dir, "wallet1", &client1, arg_vec)?;
|
|
|
|
Ok(())
|
|
}
|