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
27 changes: 27 additions & 0 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Run tests

on: [push, pull_request]

jobs:
unittest:
name: UnitTest
runs-on: ${{ matrix.operating-system }}
strategy:
fail-fast: false
matrix:
operating-system: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
pip install requests pycryptodome crcmod-plus aiohttp

- name: Run tests
run: |
python -m unittest discover -t . -v tests/unit
43 changes: 24 additions & 19 deletions tests/unit/crypto/test_aes_ctr.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# pylint: skip-file
import unittest
import io
import sys
import base64
from typing import cast, Any, Iterator
from alibabacloud_oss_v2.types import StreamBody
Expand Down Expand Up @@ -120,6 +121,8 @@ def test_encrypt(self):
cek_algorithm='AES/CTR/NoPadding'
)

print(sys.version)

cipher = aes_ctr._AesCtr(
cipher_data=cipher_data,
offset=0
Expand Down Expand Up @@ -173,27 +176,29 @@ def test_encrypt(self):
edata = encf.read()
self.assertEqual(enc_example_data[128:], edata)

# iterator bytes
cipher.no_bytes = True
eiter = cipher.encrypt(example_data)
self.assertIsInstance(eiter, aes_ctr.IterableEncryptor)
edata = b''
for d in eiter:
edata += d
self.assertEqual(enc_example_data, edata)
if sys.version_info >= (3, 11):
# iterator bytes
cipher.no_bytes = True
eiter = cipher.encrypt(example_data)
self.assertIsInstance(eiter, aes_ctr.IterableEncryptor)
edata = b''
for d in eiter:
edata += d
self.assertEqual(enc_example_data, edata)

# iterator str
cipher.no_str = True
eiter = cipher.encrypt('1234567890abcdefghijklmnopqrstuvwxyz')
self.assertIsInstance(eiter, aes_ctr.IterableEncryptor)
edata = b''
for d in eiter:
edata += d
# iterator str
cipher.no_str = True
eiter = cipher.encrypt('1234567890abcdefghijklmnopqrstuvwxyz')
self.assertIsInstance(eiter, aes_ctr.IterableEncryptor)
edata = b''
for d in eiter:
edata += d

cipher.no_str = False
edata1 = cipher.encrypt('1234567890abcdefghijklmnopqrstuvwxyz')
self.assertEqual(edata1, edata)
self.assertEqual(len(edata1), len('1234567890abcdefghijklmnopqrstuvwxyz'))

cipher.no_str = False
edata1 = cipher.encrypt('1234567890abcdefghijklmnopqrstuvwxyz')
self.assertEqual(edata1, edata)
self.assertEqual(len(edata1), len('1234567890abcdefghijklmnopqrstuvwxyz'))

# file-like + offset
edata = b''
Expand Down
24 changes: 12 additions & 12 deletions tests/unit/models/test_bucket_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ def test_constructor_result(self):
object_type='Normal',
size=344606,
etag='5B3C1A2E053D763E1B002CC607C5A0FE1****',
last_modified=datetime.datetime.fromtimestamp(1702743657),
last_modified=datetime.datetime.fromtimestamp(1702743657, datetime.timezone.utc),
storage_class='ColdArchive',
owner=model.Owner(
id='0022012****',
Expand All @@ -464,7 +464,7 @@ def test_constructor_result(self):
self.assertEqual('b', result.start_after)
self.assertEqual(20, result.key_count)
self.assertEqual('fun/movie/001.avi', result.contents[0].key)
self.assertEqual('2023-12-17T00:20:57.000Z', result.contents[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('2023-12-16T16:20:57.000Z', result.contents[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual("5B3C1A2E053D763E1B002CC607C5A0FE1****", result.contents[0].etag)
self.assertEqual('Normal', result.contents[0].object_type)
self.assertEqual(344606, result.contents[0].size)
Expand Down Expand Up @@ -814,7 +814,7 @@ def test_constructor_result(self):
object_type='Normal',
size=344606,
etag='5B3C1A2E053D763E1B002CC607C5A0FE1****',
last_modified=datetime.datetime.fromtimestamp(1702743657),
last_modified=datetime.datetime.fromtimestamp(1702743657, datetime.timezone.utc),
storage_class='ColdArchive',
owner=model.Owner(
id='0022012****',
Expand All @@ -836,7 +836,7 @@ def test_constructor_result(self):
self.assertEqual('NextChR1c2VyL2VyaWMvZGVtbzMuanNvbhAA', result.next_marker)
self.assertEqual('url', result.encoding_type)
self.assertEqual('fun/movie/001.avi', result.contents[0].key)
self.assertEqual('2023-12-17T00:20:57.000Z', result.contents[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('2023-12-16T16:20:57.000Z', result.contents[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual("5B3C1A2E053D763E1B002CC607C5A0FE1****", result.contents[0].etag)
self.assertEqual('Normal', result.contents[0].object_type)
self.assertEqual(344606, result.contents[0].size)
Expand Down Expand Up @@ -1420,7 +1420,7 @@ def test_constructor_result(self):
key='demo%2FREADME-CN.md',
version_id='CAEQEhiBgICDzK6NnBgiIGRlZWJhYmNlMGUxZDQ4YTZhNTU2MzM4Mzk5NDBl****',
is_latest=False,
last_modified=datetime.datetime.fromtimestamp(1702743657),
last_modified=datetime.datetime.fromtimestamp(1702743657, datetime.timezone.utc),
etag='"E317049B40462DE37C422CE4FC1B****"',
object_type='Normal',
size=2943,
Expand All @@ -1435,7 +1435,7 @@ def test_constructor_result(self):
key='example-object-2.jpg',
version_id='',
is_latest=True,
last_modified=datetime.datetime.fromtimestamp(1702733657),
last_modified=datetime.datetime.fromtimestamp(1702733657, datetime.timezone.utc),
etag='5B3C1A2E053D763E1B002CC607C5A0FE1****',
size=20,
storage_class='STANDARD',
Expand All @@ -1450,7 +1450,7 @@ def test_constructor_result(self):
key='demo%2FREADME-CN.md',
version_id='CAEQFBiCgID3.86GohgiIDc4ZTE0NTNhZTc5MDQxYzBhYTU5MjY1ZDFjNGJm****',
is_latest=True,
last_modified=datetime.datetime.fromtimestamp(1702755657),
last_modified=datetime.datetime.fromtimestamp(1702755657, datetime.timezone.utc),
owner=model.Owner(
id='150692521021****',
display_name='350692521021****',
Expand All @@ -1460,7 +1460,7 @@ def test_constructor_result(self):
key='demo%2FLICENSE',
version_id='CAEQFBiBgMD0.86GohgiIGZmMmFlM2UwNjdlMzRiMGFhYjk4MjM1ZGUyZDY0****',
is_latest=True,
last_modified=datetime.datetime.fromtimestamp(1702743377),
last_modified=datetime.datetime.fromtimestamp(1702743377, datetime.timezone.utc),
owner=model.Owner(
id='150692521021****',
display_name='250692521021****',
Expand All @@ -1487,7 +1487,7 @@ def test_constructor_result(self):
self.assertEqual('demo%2FREADME-CN.md', result.version[0].key)
self.assertEqual('CAEQEhiBgICDzK6NnBgiIGRlZWJhYmNlMGUxZDQ4YTZhNTU2MzM4Mzk5NDBl****',result.version[0].version_id)
self.assertEqual(False, result.version[0].is_latest)
self.assertEqual('2023-12-17T00:20:57.000Z', result.version[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('2023-12-16T16:20:57.000Z', result.version[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('"E317049B40462DE37C422CE4FC1B****"', result.version[0].etag)
self.assertEqual('Normal', result.version[0].object_type)
self.assertEqual(2943, result.version[0].size)
Expand All @@ -1498,7 +1498,7 @@ def test_constructor_result(self):
self.assertEqual('example-object-2.jpg', result.version[1].key)
self.assertEqual('', result.version[1].version_id)
self.assertEqual(True, result.version[1].is_latest)
self.assertEqual('2023-12-16T21:34:17.000Z', result.version[1].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('2023-12-16T13:34:17.000Z', result.version[1].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('5B3C1A2E053D763E1B002CC607C5A0FE1****', result.version[1].etag)
self.assertEqual(20, result.version[1].size)
self.assertEqual('STANDARD', result.version[1].storage_class)
Expand All @@ -1508,13 +1508,13 @@ def test_constructor_result(self):
self.assertEqual('demo%2FREADME-CN.md', result.delete_marker[0].key)
self.assertEqual('CAEQFBiCgID3.86GohgiIDc4ZTE0NTNhZTc5MDQxYzBhYTU5MjY1ZDFjNGJm****',result.delete_marker[0].version_id)
self.assertEqual(True, result.delete_marker[0].is_latest)
self.assertEqual('2023-12-17T03:40:57.000Z', result.delete_marker[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('2023-12-16T19:40:57.000Z', result.delete_marker[0].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('150692521021****', result.delete_marker[0].owner.id)
self.assertEqual('350692521021****', result.delete_marker[0].owner.display_name)
self.assertEqual('demo%2FLICENSE', result.delete_marker[1].key)
self.assertEqual('CAEQFBiBgMD0.86GohgiIGZmMmFlM2UwNjdlMzRiMGFhYjk4MjM1ZGUyZDY0****',result.delete_marker[1].version_id)
self.assertEqual(True, result.delete_marker[1].is_latest)
self.assertEqual('2023-12-17T00:16:17.000Z', result.delete_marker[1].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('2023-12-16T16:16:17.000Z', result.delete_marker[1].last_modified.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
self.assertEqual('150692521021****', result.delete_marker[1].owner.id)
self.assertEqual('250692521021****', result.delete_marker[1].owner.display_name)
self.assertEqual('demo%2F.git%2F', result.common_prefixes[0].prefix)
Expand Down
Loading
Loading