Browse Source

test suite: `EtherscanServer`: return correct TxID

The MMGen Project 5 months ago
parent
commit
e0d5463ea7
2 changed files with 17 additions and 5 deletions
  1. 16 3
      test/cmdtest_d/httpd/etherscan.py
  2. 1 2
      test/ref/ethereum/etherscan-result.html

+ 16 - 3
test/cmdtest_d/httpd/etherscan.py

@@ -20,6 +20,19 @@ class EtherscanServer(HTTPD):
 	content_type = 'text/html'
 
 	def make_response_body(self, method, environ):
-		targets = {'GET': 'form', 'POST': 'result'}
-		with open(f'test/ref/ethereum/etherscan-{targets[method]}.html') as fh:
-			return fh.read().encode()
+		if method == 'GET':
+			target = 'form'
+		elif method == 'POST':
+			target = 'result'
+			length = int(environ.get('CONTENT_LENGTH', '0'))
+			qs = environ['wsgi.input'].read(length).decode()
+			tx = [s for s in qs.split('&') if 'RawTx=' in s][0].split('=')[1][:10]
+			if tx == '0xf86f0185':
+				txid = '1c034395c9aa2217abbbf3ed4d89c5ad1aa0f0215aa11d02efeea33a5ac8331c'
+			else:
+				txid = 'beadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafe'
+
+		with open(f'test/ref/ethereum/etherscan-{target}.html') as fh:
+			text = fh.read()
+
+		return (text if method == 'GET' else text.format(txid='0x'+txid)).encode()

+ 1 - 2
test/ref/ethereum/etherscan-result.html

@@ -15,8 +15,7 @@
 <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="baz" />
 	<div>
 	<div>
-		<div role='alert'><button type='button'></button><strong>Success! </strong>{"jsonrpc":"2.0","id":1,"result":"0xbeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafe"}
-<span class='d-block'><i></i> Transaction Hash: <a href='/tx/0xbeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafe'><span class='text-primary'><a href='/tx/0xbeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafe'>0xbeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafebeadcafe</a></span></b></a></span></div>
+		<div role='alert'><button type='button'></button><strong>Success! </strong>{{"jsonrpc":"2.0","id":1,"result":"{txid}"}} <span class='d-block'><i></i> Transaction Hash: <a href='/tx/{txid}'><span class='text-primary'><a href='/tx/{txid}'>{txid}</a></span></b></a></span></div>
 		<label for="signedTransactionHex">Enter signed transaction hex</label>
 		<div>
 		<textarea name="ctl00$ContentPlaceHolder1$txtRawTx" rows="8" cols="20" maxlength="50000" id="ContentPlaceHolder1_txtRawTx" required="" placeholder="e.g. 0x.." data-bg-msg="Please enter signed transaction hex">