Changeset View
Changeset View
Standalone View
Standalone View
test/functional/feature_useragent.py
- This file was added.
Property | Old Value | New Value |
---|---|---|
File Mode | null | 100755 |
#!/usr/bin/env python3 | |||||
# Copyright (c) 2021 The Bitcoin developers | |||||
# Distributed under the MIT software license, see the accompanying | |||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | |||||
"""Test the -uaclient option.""" | |||||
import re | |||||
from test_framework.test_framework import BitcoinTestFramework | |||||
from test_framework.test_node import ErrorMatch | |||||
from test_framework.util import assert_equal | |||||
class UseragentTest(BitcoinTestFramework): | |||||
def set_test_params(self): | |||||
self.num_nodes = 1 | |||||
self.setup_clean_chain = True | |||||
def run_test(self): | |||||
self.log.info("test -useragent") | |||||
default_useragent = self.nodes[0].getnetworkinfo()["subversion"] | |||||
expected = "/Bitcoin ABC:" | |||||
assert_equal(default_useragent[:len(expected)], expected) | |||||
self.restart_node(0, ["-useragent=/Foo:2000/"]) | |||||
foo_ua = self.nodes[0].getnetworkinfo()["subversion"] | |||||
assert_equal(foo_ua, "/Foo:2000/") | |||||
self.log.info("test -useragent overrides -uacomment") | |||||
self.restart_node(0, ["-useragent=/Bar:3000/", "-uacomment=eggs"]) | |||||
bar_ua = self.nodes[0].getnetworkinfo()["subversion"] | |||||
assert_equal(bar_ua, "/Bar:3000/") | |||||
self.log.info("test -useragent max length") | |||||
self.stop_node(0) | |||||
expected = r"Error: Length of explicitly set User Agent \([0-9]+\) exceeds maximum length \([0-9]+\)\. Reduce the size of -useragent\." | |||||
self.nodes[0].assert_start_raises_init_error( | |||||
["-useragent=" + 'a' * 257], expected, match=ErrorMatch.FULL_REGEX) | |||||
self.log.info("test -uacomment invalid characters") | |||||
for invalid_char in ['*', '!', '₿', '🏃']: | |||||
expected = r"Error: User Agent \(" + \ | |||||
re.escape(invalid_char) + r"\) contains invalid characters\." | |||||
self.nodes[0].assert_start_raises_init_error( | |||||
["-useragent=" + invalid_char], expected, match=ErrorMatch.FULL_REGEX) | |||||
if __name__ == '__main__': | |||||
UseragentTest().main() |