public async Task CanRequestOnionAsync()
        {
            using (var client = new TorHttpClient(new Uri("http://msydqstlz2kzerdg.onion/")))
            {
                var content = await(await client.SendAsync(HttpMethod.Get, "")).Content.ReadAsStringAsync();

                Assert.Contains("Learn more about Ahmia and its team", content);
            }
        }
Exemple #2
0
 public async Task CanRequestInRowAsync()
 {
     using (var client = new TorHttpClient(new Uri("http://api.qbit.ninja"), Global.TorSocks5Endpoint))
     {
         await(await client.SendAsync(HttpMethod.Get, "/transactions/38d4cfeb57d6685753b7a3b3534c3cb576c34ca7344cd4582f9613ebf0c2b02a?format=json&headeronly=true")).Content.ReadAsStringAsync();
         await(await client.SendAsync(HttpMethod.Get, "/balances/15sYbVpRh6dyWycZMwPdxJWD4xbfxReeHe?unspentonly=true")).Content.ReadAsStringAsync();
         await(await client.SendAsync(HttpMethod.Get, "balances/akEBcY5k1dn2yeEdFnTMwdhVbHxtgHb6GGi?from=tip&until=336000")).Content.ReadAsStringAsync();
     }
 }
Exemple #3
0
        public async Task GetExchangeRateAsync(Network network)
        {
            TorHttpClient torHttpClient = MakeTorHttpClient(network);
            WasabiClient  client        = new(torHttpClient);

            var exchangeRates = await client.GetExchangeRatesAsync();

            Assert.True(exchangeRates.NotNullAndNotEmpty());
        }
Exemple #4
0
        public async Task GetAllRoundStatesAsync(Network network)
        {
            TorHttpClient torHttpClient = MakeTorHttpClient(network);
            SatoshiClient client        = new(torHttpClient);
            var           states        = await client.GetAllRoundStatesAsync();

            Assert.True(states.NotNullAndNotEmpty());
            Assert.True(states.Any());
        }
        public async Task CanRequestClearnetAsync()
        {
            using var client = new TorHttpClient(new Uri("https://jigsaw.w3.org/"), null);
            var response = await client.SendAsync(HttpMethod.Get, "/HTTP/ChunkedScript");

            var content = await response.Content.ReadAsStringAsync();

            Assert.Equal(1000, Regex.Matches(content, "01234567890123456789012345678901234567890123456789012345678901234567890").Count);
        }
Exemple #6
0
        public async Task CanDoIpAddressAsync()
        {
            using (var client = new TorHttpClient(new Uri("http://172.217.6.142"), Global.TorSocks5Endpoint))
            {
                var content = await(await client.SendAsync(HttpMethod.Get, "")).Content.ReadAsStringAsync();

                Assert.NotEmpty(content);
            }
        }
        public async Task CanGetTwiceAsync()
        {
            using (var client = new TorHttpClient(new Uri("https://icanhazip.com/")))
            {
                await client.SendAsync(HttpMethod.Get, "");

                await client.SendAsync(HttpMethod.Get, "");
            }
        }
Exemple #8
0
        public async Task CanDoHttpsAsync()
        {
            using (var client = new TorHttpClient(new Uri("https://slack.com")))
            {
                var content =
                    await(await client.SendAsync(HttpMethod.Get, "api/api.test")).Content.ReadAsStringAsync();

                Assert.Equal("{\"ok\":true}", content);
            }
        }
Exemple #9
0
        public async Task CanRequestInRowAsync()
        {
            using CancellationTokenSource ctsTimeout = new(TimeSpan.FromMinutes(2));

            TorHttpClient client = MakeTorHttpClient(new("http://api.qbit.ninja"));

            await(await client.SendAsync(HttpMethod.Get, "/transactions/38d4cfeb57d6685753b7a3b3534c3cb576c34ca7344cd4582f9613ebf0c2b02a?format=json&headeronly=true", null, ctsTimeout.Token)).Content.ReadAsStringAsync(ctsTimeout.Token);
            await(await client.SendAsync(HttpMethod.Get, "/balances/15sYbVpRh6dyWycZMwPdxJWD4xbfxReeHe?unspentonly=true", null, ctsTimeout.Token)).Content.ReadAsStringAsync(ctsTimeout.Token);
            await(await client.SendAsync(HttpMethod.Get, "balances/akEBcY5k1dn2yeEdFnTMwdhVbHxtgHb6GGi?from=tip&until=336000", null, ctsTimeout.Token)).Content.ReadAsStringAsync(ctsTimeout.Token);
        }
Exemple #10
0
        public async Task CanDoBasicPostHttpsRequestAsync()
        {
            using var client = new TorHttpClient(new Uri("https://postman-echo.com"), Global.Instance.TorSocks5Endpoint);
            HttpContent content = new StringContent("This is expected to be sent back as part of response body.");

            HttpResponseMessage message = await client.SendAsync(HttpMethod.Post, "post", content);

            var responseContentString = await message.Content.ReadAsStringAsync();

            Assert.Contains("{\"args\":{},\"data\":\"This is expected to be sent back as part of response body.\"", responseContentString);
        }
Exemple #11
0
        public async Task CanRequestChunkEncodedAsync()
        {
            using (var client = new TorHttpClient(new Uri("https://jigsaw.w3.org/"), SharedFixture.TorSocks5Endpoint))
            {
                var response = await client.SendAsync(HttpMethod.Get, "/HTTP/ChunkedScript");

                var content = await response.Content.ReadAsStringAsync();

                Assert.Equal(1000, Regex.Matches(content, "01234567890123456789012345678901234567890123456789012345678901234567890").Count);
            }
        }
Exemple #12
0
        public async Task CanDoBasicRequestAsync()
        {
            using (var client = new TorHttpClient(new Uri("http://api.qbit.ninja/")))
            {
                HttpResponseMessage message = await client.SendAsync(HttpMethod.Get, "whatisit/what%20is%20my%20futur");

                var content = await message.Content.ReadAsStringAsync();

                Assert.Equal("\"Good question Holmes !\"", content);
            }
        }
Exemple #13
0
        public async Task CanRequestOnionV2Async()
        {
            using var client = new TorHttpClient(new Uri("http://expyuzz4wqqyqhjn.onion/"), Global.Instance.TorSocks5Endpoint);
            HttpResponseMessage response = await client.SendAsync(HttpMethod.Get, "");

            var content = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

            Assert.Contains("tor", content, StringComparison.OrdinalIgnoreCase);
        }
Exemple #14
0
        public async Task CanDoIpAddressAsync()
        {
            using CancellationTokenSource ctsTimeout = new(TimeSpan.FromMinutes(2));

            TorHttpClient       client = MakeTorHttpClient(new("http://172.217.6.142"));
            HttpResponseMessage httpResponseMessage = await client.SendAsync(HttpMethod.Get, relativeUri : "", content : null, ctsTimeout.Token);

            string content = await httpResponseMessage.Content.ReadAsStringAsync(ctsTimeout.Token);

            Assert.NotEmpty(content);
        }
        public async Task CanDoBasicPostHttpsRequestAsync()
        {
            using var client = new TorHttpClient(new Uri("https://api.smartbit.com.au"), Global.Instance.TorSocks5Endpoint);
            HttpContent content = new StringContent("{\"hex\": \"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff2d03a58605204d696e656420627920416e74506f6f6c20757361311f10b53620558903d80272a70c0000724c0600ffffffff010f9e5096000000001976a9142ef12bd2ac1416406d0e132e5bc8d0b02df3861b88ac00000000\"}");

            HttpResponseMessage message = await client.SendAsync(HttpMethod.Post, "/v1/blockchain/decodetx", content);

            var responseContentString = await message.Content.ReadAsStringAsync();

            Assert.Equal("{\"success\":true,\"transaction\":{\"Version\":\"1\",\"LockTime\":\"0\",\"Vin\":[{\"TxId\":null,\"Vout\":null,\"ScriptSig\":null,\"CoinBase\":\"03a58605204d696e656420627920416e74506f6f6c20757361311f10b53620558903d80272a70c0000724c0600\",\"TxInWitness\":null,\"Sequence\":\"4294967295\"}],\"Vout\":[{\"Value\":25.21865743,\"N\":0,\"ScriptPubKey\":{\"Asm\":\"OP_DUP OP_HASH160 2ef12bd2ac1416406d0e132e5bc8d0b02df3861b OP_EQUALVERIFY OP_CHECKSIG\",\"Hex\":\"76a9142ef12bd2ac1416406d0e132e5bc8d0b02df3861b88ac\",\"ReqSigs\":1,\"Type\":\"pubkeyhash\",\"Addresses\":[\"15HCzh8AoKRnTWMtmgAsT9TKUPrQ6oh9HQ\"]}}],\"TxId\":\"a02b9bd4264ab5d7c43ee18695141452b23b230b2a8431b28bbe446bf2b2f595\"}}", responseContentString);
        }
Exemple #16
0
        public async Task CanRequestChunkEncodedAsync()
        {
            using var client = new TorHttpClient(new Uri("http://anglesharp.azurewebsites.net/"), Global.Instance.TorSocks5Endpoint);
            var response = await client.SendAsync(HttpMethod.Get, "Chunked");

            var content = await response.Content.ReadAsStringAsync();

            Assert.Contains("Chunked transfer encoding test", content);
            Assert.Contains("This is a chunked response after 100 ms.", content);
            Assert.Contains("This is a chunked response after 1 second. The server should not close the stream before all chunks are sent to a client.", content);
        }
Exemple #17
0
        public async Task CanRequestOnionV3Async()
        {
            using var client = new TorHttpClient(new Uri("http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion"), Global.Instance.TorSocks5Endpoint);
            HttpResponseMessage response = await client.SendAsync(HttpMethod.Get, "");

            var content = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

            Assert.Contains("whonix", content, StringComparison.OrdinalIgnoreCase);
        }
        public async Task TestMicrosoftNCSIAsync()
        {
            using (var client = new TorHttpClient(new Uri("http://www.msftncsi.com/")))
            {
                var response = await client.SendAsync(HttpMethod.Get, "ncsi.txt");

                var content = await response.Content.ReadAsStringAsync();

                Assert.Equal("Microsoft NCSI", content);
            }
        }
Exemple #19
0
        public async Task CanDoHttpsAsync()
        {
            using CancellationTokenSource ctsTimeout = new(TimeSpan.FromMinutes(2));

            TorHttpClient client = MakeTorHttpClient(new("https://postman-echo.com"));

            using HttpResponseMessage httpResponseMessage = await client.SendAsync(HttpMethod.Get, "get?foo1=bar1&foo2=bar2", null, ctsTimeout.Token);

            var content = await httpResponseMessage.Content.ReadAsStringAsync(ctsTimeout.Token);

            Assert.Contains("{\"args\":{\"foo1\":\"bar1\",\"foo2\":\"bar2\"}", content);
        }
Exemple #20
0
        public async Task GetFiltersAsync(Network network)
        {
            TorHttpClient torHttpClient = MakeTorHttpClient(network);
            WasabiClient  client        = new(torHttpClient);

            var filterModel = StartingFilters.GetStartingFilter(network);

            FiltersResponse?filtersResponse = await client.GetFiltersAsync(filterModel.Header.BlockHash, 2);

            Assert.NotNull(filtersResponse);
            Assert.True(filtersResponse !.Filters.Count() == 2);
        }
Exemple #21
0
        public async Task CanDoHttpsRequestManyAsync()
        {
            using (var client = new TorHttpClient(new Uri("https://api.qbit.ninja")))
            {
                var contents = await QBitTestAsync(client, 15);

                foreach (var content in contents)
                {
                    Assert.Equal("\"Good question Holmes !\"", content);
                }
            }
        }
Exemple #22
0
        public async Task GetVersionsTestsAsync(Network network)
        {
            TorHttpClient torHttpClient = MakeTorHttpClient(network);
            WasabiClient  client        = new(torHttpClient);

            var versions = await client.GetVersionsAsync(CancellationToken.None);

            Assert.InRange(versions.ClientVersion, new(1, 1, 10), new(1, 2));
            Assert.InRange(versions.ClientVersion, new(1, 1, 10), WalletWasabi.Helpers.Constants.ClientVersion);
            Assert.Equal(4, versions.BackendMajorVersion);
            Assert.Equal(new(2, 0), versions.LegalDocumentsVersion);
        }
Exemple #23
0
        public async Task CanRequestOnionV2Async()
        {
            using CancellationTokenSource ctsTimeout = new(TimeSpan.FromMinutes(2));

            TorHttpClient       client   = MakeTorHttpClient(new("http://expyuzz4wqqyqhjn.onion/"));
            HttpResponseMessage response = await client.SendAsync(HttpMethod.Get, relativeUri : "", null, ctsTimeout.Token);

            var content = await response.Content.ReadAsStringAsync(ctsTimeout.Token);

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

            Assert.Contains("tor", content, StringComparison.OrdinalIgnoreCase);
        }
Exemple #24
0
        public async Task CanRequestOnionV3Async()
        {
            using CancellationTokenSource ctsTimeout = new(TimeSpan.FromMinutes(2));

            TorHttpClient       client   = MakeTorHttpClient(new("http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion"));
            HttpResponseMessage response = await client.SendAsync(HttpMethod.Get, "", null, ctsTimeout.Token);

            var content = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);

            Assert.Contains("whonix", content, StringComparison.OrdinalIgnoreCase);
        }
Exemple #25
0
        public async Task CanRequestOnionAsync()
        {
            using (var client = new TorHttpClient(new Uri("https://www.facebookcorewwwi.onion/")))
            {
                HttpResponseMessage response = await client.SendAsync(HttpMethod.Get, "");

                var content = await response.Content.ReadAsStringAsync();

                Assert.Equal(HttpStatusCode.OK, response.StatusCode);

                Assert.Contains("facebook", content, StringComparison.OrdinalIgnoreCase);
            }
        }
Exemple #26
0
        public async Task CanRequestChunkEncodedAsync()
        {
            using CancellationTokenSource ctsTimeout = new(TimeSpan.FromMinutes(2));

            TorHttpClient client   = MakeTorHttpClient(new("http://anglesharp.azurewebsites.net/"));
            var           response = await client.SendAsync(HttpMethod.Get, "Chunked", null, ctsTimeout.Token);

            var content = await response.Content.ReadAsStringAsync(ctsTimeout.Token);

            Assert.Contains("Chunked transfer encoding test", content);
            Assert.Contains("This is a chunked response after 100 ms.", content);
            Assert.Contains("This is a chunked response after 1 second. The server should not close the stream before all chunks are sent to a client.", content);
        }
Exemple #27
0
        public async Task CanDoBasicPostRequestWithNonAsciiCharsAsync()
        {
            using (var client = new TorHttpClient(new Uri("http://httpbin.org")))
            {
                string json        = "Hello ñ";
                var    httpContent = new StringContent(json, Encoding.UTF8, "application/json");

                HttpResponseMessage message = await client.SendAsync(HttpMethod.Post, "post", httpContent);

                var responseContentString = await message.Content.ReadAsStringAsync();

                Assert.Contains(@"Hello \u00f1", responseContentString);
            }
        }
Exemple #28
0
        public async Task CanDoBasicPostHttpsRequestAsync()
        {
            using CancellationTokenSource ctsTimeout = new(TimeSpan.FromMinutes(2));

            TorHttpClient client = MakeTorHttpClient(new("https://postman-echo.com"));

            using HttpContent content = new StringContent("This is expected to be sent back as part of response body.");

            HttpResponseMessage message = await client.SendAsync(HttpMethod.Post, "post", content, ctsTimeout.Token);

            var responseContentString = await message.Content.ReadAsStringAsync(ctsTimeout.Token);

            Assert.Contains("{\"args\":{},\"data\":\"This is expected to be sent back as part of response body.\"", responseContentString);
        }
Exemple #29
0
        public async Task GetLegalDocumentsTestsAsync(Network network)
        {
            TorHttpClient torHttpClient = MakeTorHttpClient(network);
            WasabiClient  client        = new(torHttpClient);

            var content = await client.GetLegalDocumentsAsync(CancellationToken.None);

            var lines = content.Split('\n', StringSplitOptions.RemoveEmptyEntries);

            Assert.Equal("Last Updated: 2020-04-05", lines[0]);
            var lineCount = lines.Length;

            Assert.InRange(lineCount, 100, 1000);
        }
        private volatile bool _disposedValue = false;         // To detect redundant calls

        protected AliceClientBase(
            long roundId,
            IEnumerable <BitcoinAddress> registeredAddresses,
            IEnumerable <Requester> requesters,
            Network network,
            Func <Uri> baseUriAction,
            EndPoint torSocks5EndPoint)
        {
            TorClient           = new TorHttpClient(baseUriAction, torSocks5EndPoint, isolateStream: true);
            RoundId             = roundId;
            RegisteredAddresses = registeredAddresses.ToArray();
            Requesters          = requesters.ToArray();
            Network             = network;
        }