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); } }
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(); } }
public async Task GetExchangeRateAsync(Network network) { TorHttpClient torHttpClient = MakeTorHttpClient(network); WasabiClient client = new(torHttpClient); var exchangeRates = await client.GetExchangeRatesAsync(); Assert.True(exchangeRates.NotNullAndNotEmpty()); }
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); }
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, ""); } }
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); } }
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); }
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); }
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); } }
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); } }
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); }
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); }
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); }
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); } }
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); }
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); }
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); } } }
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); }
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); }
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); }
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); } }
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); }
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); } }
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); }
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; }