Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions tools/shoestring/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,19 @@ repository = 'https://github.com/symbol/product/tree/main/tools/shoestring'
keywords = ['symbol', 'shoestring', 'deployment', 'node']

classifiers = [
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14'
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
'Programming Language :: Python :: 3.14'
]

include = ['shoestring/lang/*/LC_MESSAGES/messages.mo']

[tool.poetry.dependencies]
python = "^3.10"

[tool.pytest.ini_options]
filterwarnings = [
"ignore:The 'warn' method is deprecated:DeprecationWarning"
]
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def parse_network_configuration(config):

name = config['name']
identifier = int(config['identifier'])
epoch_adjustment = datetime.datetime.utcfromtimestamp(int(config['epochAdjustment']))
epoch_adjustment = datetime.datetime.fromtimestamp(int(config['epochAdjustment']), datetime.timezone.utc)
generation_hash_seed = Hash256(config['generationHashSeed'])
return Network(name, identifier, epoch_adjustment, generation_hash_seed)

Expand Down
18 changes: 12 additions & 6 deletions tools/shoestring/tests/internal/test_CertificateFactory.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,21 +130,27 @@ def _assert_certificate_issuer_and_subject(self, x509_output, expected_issuer, e
self.assertEqual(expected_subject, re.search(r'Subject: CN ?= ?(.*)\n', x509_output).group(1))

def _assert_certificate_duration(self, x509_output, test_start_time, expected_days, has_explicit_start_date=False):
time_format = '%b %d %H:%M:%S %Y %Z'
cert_start_time = datetime.datetime.strptime(re.search(r'Not Before: (.*)\n', x509_output).group(1), time_format)
cert_end_time = datetime.datetime.strptime(re.search(r'Not After : (.*)\n', x509_output).group(1), time_format)
def extract_utc_time_from_x509_output(prefix):
time_format = '%b %d %H:%M:%S %Y %z'
matching_time_string = re.search(prefix + r': (.*)\n', x509_output).group(1)

# timezone aware (%z) parsing recognizes Z but not GMT
return datetime.datetime.strptime(matching_time_string.replace('GMT', 'Z'), time_format)

cert_start_time = extract_utc_time_from_x509_output('Not Before')
cert_end_time = extract_utc_time_from_x509_output('Not After ')

if has_explicit_start_date:
self.assertEqual(test_start_time, cert_start_time)
else:
self.assertLessEqual(test_start_time, cert_start_time)
self.assertLessEqual(cert_start_time, datetime.datetime.utcnow())
self.assertLessEqual(cert_start_time, datetime.datetime.now(datetime.timezone.utc))

self.assertEqual(expected_days, (cert_end_time - cert_start_time).days)

def _assert_can_generate_ca_certificate(self, additional_args, expected_duration_days):
# Arrange: certificate has second resolution, so clear microseconds for assert below to work
test_start_time = datetime.datetime.utcnow().replace(microsecond=0)
test_start_time = datetime.datetime.now(datetime.timezone.utc).replace(microsecond=0)
with tempfile.TemporaryDirectory() as package_directory:
ca_certificate_path = Path(package_directory) / 'ca.crt.pem'

Expand Down Expand Up @@ -183,7 +189,7 @@ def test_can_generate_ca_certificate_with_custom_duration(self):
def _assert_can_generate_node_certificate(self, should_generate_certificate_chain, additional_args, expected_values):
# Arrange: certificate has second resolution, so clear microseconds for assert below to work
future_start_delay_days = expected_values.get('delay_days', 0)
test_start_time = datetime.datetime.utcnow().replace(microsecond=0) + datetime.timedelta(future_start_delay_days)
test_start_time = datetime.datetime.now(datetime.timezone.utc).replace(microsecond=0) + datetime.timedelta(future_start_delay_days)

if future_start_delay_days:
additional_args['start_date'] = test_start_time
Expand Down
2 changes: 1 addition & 1 deletion tools/shoestring/tests/internal/test_OpensslExecutor.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def test_can_retrieve_openssl_version():
version = executor.version()

# Assert:
assert re.match(r'3\.[0-2]\.*|1\.1\.1', version)
assert re.match(r'3\.[0-6]\.*|1\.1\.1', version)


def test_can_dispatch_openssl_command_with_reflected_output(capfd):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ def test_can_parse_valid_network_configuration(self):
# Assert:
self.assertEqual('foo', network_config.name)
self.assertEqual(123, network_config.identifier)
self.assertEqual(datetime.datetime(2023, 5, 23, 14, 58, 41), network_config.datetime_converter.to_datetime(0))
self.assertEqual(
datetime.datetime(2023, 5, 23, 14, 58, 41, tzinfo=datetime.timezone.utc),
network_config.datetime_converter.to_datetime(0))
self.assertEqual(self.GENERATION_HASH_SEED, network_config.generation_hash_seed)

def test_cannot_parse_network_configuration_incomplete(self):
Expand Down Expand Up @@ -345,7 +347,9 @@ def test_can_parse_shoestring_configuration(self):
# Assert:
self.assertEqual('foo', config.network.name)
self.assertEqual(123, config.network.identifier)
self.assertEqual(datetime.datetime(2023, 5, 23, 14, 58, 41), config.network.datetime_converter.to_datetime(0))
self.assertEqual(
datetime.datetime(2023, 5, 23, 14, 58, 41, tzinfo=datetime.timezone.utc),
config.network.datetime_converter.to_datetime(0))
self.assertEqual(self.GENERATION_HASH_SEED, config.network.generation_hash_seed)

self.assertEqual('symbolplatform/symbol-server:gcc-0.0.0.0', config.images.client)
Expand Down
Loading