diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cc3ba42..d51a1a2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - python-version: ["3.9", "3.10", "3.11"] + python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 @@ -54,7 +54,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - python-version: ["3.9", "3.10", "3.11"] + python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 @@ -81,7 +81,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - python-version: ["3.9", "3.10", "3.11"] + python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 diff --git a/noxfile.py b/noxfile.py index b6129c0..05813d7 100644 --- a/noxfile.py +++ b/noxfile.py @@ -9,7 +9,7 @@ # import nox # package = "bee_py" -# python_versions = ["3.11", "3.10", "3.9"] +# python_versions = ["3.12","3.11", "3.10", "3.9"] # nox.needs_version = ">= 2023.4.22" # nox.options.sessions = ( # "pre-commit", diff --git a/pdm.lock b/pdm.lock index 8a9a8f2..0c1a80d 100644 --- a/pdm.lock +++ b/pdm.lock @@ -151,19 +151,19 @@ files = [ [[package]] name = "bandit" -version = "1.7.5" -requires_python = ">=3.7" +version = "1.7.6" +requires_python = ">=3.8" summary = "Security oriented static analyser for python code." dependencies = [ - "GitPython>=1.0.1", + "GitPython>=3.1.30", "PyYAML>=5.3.1", "colorama>=0.3.9; platform_system == \"Windows\"", "rich", "stevedore>=1.20.0", ] files = [ - {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, - {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, + {file = "bandit-1.7.6-py3-none-any.whl", hash = "sha256:36da17c67fc87579a5d20c323c8d0b1643a890a2b93f00b3d1229966624694ff"}, + {file = "bandit-1.7.6.tar.gz", hash = "sha256:72ce7bc9741374d96fb2f1c9a8960829885f1243ffde743de70a19cee353e8f3"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 1522d20..b449f44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,8 +2,10 @@ [project] name = "bee-py" version = "0.1.0" -description = "Python client library for connecting to Bee decentralised storage" -authors = [{ name = "SAIKAT KARMAKAR", email = "saikickkarma@protonmail.com" }] +description = "" +authors = [ + { name = "SAIKAT KARMAKAR", email = "saikickkarma@protonmail.com" }, +] dependencies = [ "eth-ape>=0.6.27", "structlog>=23.2.0", @@ -36,7 +38,6 @@ Changelog = "https://github.com/alienrobotninja/bee-py/releases" requires = ["setuptools>=61", "wheel"] build-backend = "setuptools.build_meta" - # pdm dependencies [tool.pdm.dev-dependencies] test = [ diff --git a/src/bee_py/bee.py b/src/bee_py/bee.py index 3246a6f..9de3df9 100644 --- a/src/bee_py/bee.py +++ b/src/bee_py/bee.py @@ -580,7 +580,7 @@ def get_all_tags(self, options: Optional[AllTagsOptions] = None) -> list[Tag]: Returns: list[Tag] See Also: - * [Bee docs - Syncing / Tags](https://docs.ethswarm.org/docs/access-the-swarm/syncing) + * [Bee docs - Syncing / Tags](https://docs.ethswarm.org/docs/develop/access-the-swarm/syncing) * [Bee API reference - `GET /tags`](https://docs.ethswarm.org/api/#tag/Tag/paths/~1tags/get) """ assert_all_tags_options(options) @@ -607,7 +607,7 @@ def delete_tag( Returns: None See Also: - * [Bee docs - Syncing / Tags](https://docs.ethswarm.org/docs/access-the-swarm/syncing) + * [Bee docs - Syncing / Tags](https://docs.ethswarm.org/docs/develop/access-the-swarm/syncing) * [Bee API reference - `DELETE /tags/{uid}`](https://docs.ethswarm.org/api/#tag/Tag/paths/~1tags~1{uid}/delete) */ """ @@ -639,7 +639,7 @@ def update_tag( Returns: None See also: - * [Bee docs - Syncing / Tags](https://docs.ethswarm.org/docs/access-the-swarm/syncing) + * [Bee docs - Syncing / Tags](https://docs.ethswarm.org/docs/develop/access-the-swarm/syncing) * [Bee API reference - `PATCH /tags/{uid}`](https://docs.ethswarm.org/api/#tag/Tag/paths/~1tags~1{uid}/patch) """ assert_reference(reference) @@ -667,7 +667,7 @@ def pin(self, reference: Union[Reference, str], request_options: Optional[BeeReq Returns: None See also: - * [Bee docs - Pinning](https://docs.ethswarm.org/docs/access-the-swarm/pinning) + * [Bee docs - Pinning](https://docs.ethswarm.org/docs/develop/access-the-swarm/pinning) """ assert_reference(reference) assert_request_options(request_options) @@ -691,7 +691,7 @@ def unpin(self, reference: Union[Reference, str], request_options: Optional[BeeR HTTPXError: If an HTTP error occurs during the request. See also: - * [Bee docs - Pinning](https://docs.ethswarm.org/docs/access-the-swarm/pinning) + * [Bee docs - Pinning](https://docs.ethswarm.org/docs/develop/access-the-swarm/pinning) """ assert_reference(reference) assert_request_options(request_options) @@ -711,7 +711,7 @@ def get_all_pins(self, request_options: Optional[BeeRequestOptions] = None) -> R HTTPXError: If an HTTP error occurs during the request. See also: - * [Bee docs - Pinning](https://docs.ethswarm.org/docs/access-the-swarm/pinning) + * [Bee docs - Pinning](https://docs.ethswarm.org/docs/develop/access-the-swarm/pinning) """ assert_request_options(request_options) @@ -735,7 +735,7 @@ def get_pin(self, reference: Union[Reference, str], request_options: Optional[Be HTTPXError: If an HTTP error occurs during the request. See also: - * [Bee docs - Pinning](https://docs.ethswarm.org/docs/access-the-swarm/pinning) + * [Bee docs - Pinning](https://docs.ethswarm.org/docs/develop/access-the-swarm/pinning) """ assert_reference(reference) assert_request_options(request_options) diff --git a/src/bee_py/modules/bzz.py b/src/bee_py/modules/bzz.py index b21625f..7e05de7 100644 --- a/src/bee_py/modules/bzz.py +++ b/src/bee_py/modules/bzz.py @@ -1,12 +1,11 @@ from typing import Optional, Union -from bee_py.types.type import ( # Reference,; UploadHeaders,; Data,; CollectionEntry,; CollectionUploadHeaders,; FileUploadHeaders, # noqa: E501 +from bee_py.types.type import ( # Reference,; UploadHeaders,; Data,; CollectionEntry,; CollectionUploadHeaders,; FileUploadHeaders, # noqa: E501; FileHeaders, BatchId, BeeRequestOptions, Collection, CollectionUploadOptions, FileData, - FileHeaders, FileUploadOptions, Reference, ReferenceOrENS, @@ -29,10 +28,10 @@ def extract_file_upload_headers(postage_batch_id: BatchId, options: Optional[Fil options = FileUploadOptions.model_validate(options) if options and options.size: - headers["content-length"] = str(options.size) + headers["Content-Length"] = str(options.size) if options and options.content_type: - headers["content-type"] = options.content_type + headers["Content-Type"] = options.content_type return headers @@ -83,13 +82,13 @@ def upload_file( logger.error(response.raise_for_status()) upload_response = response.json() - reference = Reference(upload_response["reference"]) + reference = Reference(value=upload_response["reference"]) tag_uid = None - if "swarm-tag" in response.headers: - tag_uid = make_tag_uid(response.headers["swarm-tag"]) + if "Swarm-Tag" in response.headers: + tag_uid = make_tag_uid(response.headers["Swarm-Tag"]) - return UploadResult(reference=reference, tag_uid=tag_uid) + return UploadResult(reference=reference, tagUid=tag_uid) def download_file(request_options: BeeRequestOptions, _hash: ReferenceOrENS, path: str = "") -> FileData: @@ -105,6 +104,9 @@ def download_file(request_options: BeeRequestOptions, _hash: ReferenceOrENS, pat FileData: Downloaded file data. """ + if isinstance(_hash, Reference): + _hash = str(_hash) + config = {"url": f"{BZZ_ENDPOINT}/{_hash}/{path}", "method": "GET"} response = http(request_options, config) @@ -113,7 +115,7 @@ def download_file(request_options: BeeRequestOptions, _hash: ReferenceOrENS, pat if response.raise_for_status(): logger.error(response.raise_for_status()) - file_headers = FileHeaders.model_validate(read_file_headers(response.headers)) + file_headers = read_file_headers(response.headers) file_data = wrap_bytes_with_helpers(response.content) return FileData(headers=file_headers, data=file_data.data) @@ -219,10 +221,10 @@ def upload_collection( logger.error(response.raise_for_status()) upload_response = response.json() - reference = Reference(upload_response["reference"]) + reference = Reference(value=upload_response["reference"]) tag_uid = None - if "swarm-tag" in response.headers: - tag_uid = make_tag_uid(response.headers["swarm-tag"]) + if "Swarm-Tag" in response.headers: + tag_uid = make_tag_uid(response.headers["Swarm-Tag"]) - return UploadResult(reference=reference, tag_uid=tag_uid) + return UploadResult(reference=reference, tagUid=tag_uid) diff --git a/src/bee_py/modules/chunk.py b/src/bee_py/modules/chunk.py index 14583f8..31d42af 100644 --- a/src/bee_py/modules/chunk.py +++ b/src/bee_py/modules/chunk.py @@ -41,7 +41,7 @@ def upload( if response.raise_for_status(): logger.error(response.raise_for_status()) - return Reference(response.json()["reference"]) + return Reference(value=response.json()["reference"]) def download(request_options: BeeRequestOptions, _hash: ReferenceOrENS) -> Data: diff --git a/src/bee_py/types/type.py b/src/bee_py/types/type.py index 4d491e4..4c708cc 100644 --- a/src/bee_py/types/type.py +++ b/src/bee_py/types/type.py @@ -1,13 +1,16 @@ import json + # from abc import abstractmethod from enum import Enum from typing import Annotated, Any, Callable, Generic, NewType, Optional, TypeVar, Union from ape.managers.accounts import AccountAPI from ape.types import AddressType + # from eth_pydantic_types import HexBytes from eth_pydantic_types import HexBytes as BaseHexBytes from pydantic import BaseModel, Field, validator + # from requests import PreparedRequest, Response from typing_extensions import TypeAlias @@ -107,16 +110,16 @@ class BeeResponse(BaseModel): headers: dict[str, str] status: int - status_text: Optional[str] = Field(None, alias="statusText") + status_text: Optional[str] = Field(default="", alias="statusText") request: BeeRequest class BeeRequestOptions(BaseModel): - base_url: Optional[str] = Field(None, alias="baseURL") + base_url: Optional[str] = Field(default="", alias="baseURL") timeout: Optional[int] = None retry: Union[int, bool] = None headers: dict = {} - on_request: bool = Field(None, alias="onRequest") + on_request: bool = Field(..., alias="onRequest") class PssSubscription(BaseModel): @@ -477,8 +480,8 @@ class NodeAddresses(BaseModel): overlay: str underlay: list[str] ethereum: str - public_key: str = Field(..., alias="publicKey") - pss_public_key: str = Field(..., alias="pssPublicKey") + public_key: str = Field(default=None, alias="publicKey") + pss_public_key: str = Field(default=None, alias="pssPublicKey") class Peer(BaseModel): @@ -516,19 +519,19 @@ class RemovePeerResponse(BaseModel): class Bin(BaseModel): population: int connected: int - disconnected_peers: Optional[list[Peer]] = Field(None, alias="disconnectedPeers") - connected_peers: Optional[list[Peer]] = Field(None, alias="connectedPeers") + disconnected_peers: Optional[list[Peer]] = Field(default=[], alias="disconnectedPeers") + connected_peers: Optional[list[Peer]] = Field(default=[], alias="connectedPeers") class Topology(BaseModel): - base_address: str = Field(..., alias="baseAddr") + base_address: str = Field(default="", alias="baseAddr") population: int connected: int timestamp: str - nn_low_watermark: int = Field(..., alias="nnLowWatermark") + nn_low_watermark: int = Field(default=None, alias="nnLowWatermark") depth: int reachability: str - network_availability: str = Field(..., alias="networkAvailability") + network_availability: str = Field(default="", alias="networkAvailability") bins: dict[str, Bin] @@ -597,8 +600,8 @@ class CashoutResult(BaseModel): class LastCashoutActionResponse(BaseModel): peer: str uncashed_amount: str = Field(..., alias="uncashedAmount") - transaction_hash: Optional[str] = Field(..., alias="transactionHash") - last_cashed_cheque: Optional[Cheque] = Field(..., alias="lastCashedCheque") + transaction_hash: Optional[str] = Field(default="", alias="transactionHash") + last_cashed_cheque: Optional[Cheque] = Field(default="", alias="lastCashedCheque") result: Optional[CashoutResult] @@ -638,23 +641,23 @@ class PostageBatch(BaseModel): class BatchBucket(BaseModel): - bucket_id: int = Field(..., alias="bucketID") + bucket_id: int = Field(default=None, alias="bucketID") collisions: int class PostageBatchBuckets(BaseModel): depth: int - bucket_depth: int = Field(..., alias="bucketDepth") - bucket_upper_bound: int = Field(..., alias="bucketUpperBound") + bucket_depth: int = Field(default=None, alias="bucketDepth") + bucket_upper_bound: int = Field(default=None, alias="bucketUpperBound") buckets: Optional[list[BatchBucket]] class PostageBatchOptions(BaseModel): label: Optional[str] - gas_price: Optional[str] = Field(None, alias="gasPrice") + gas_price: Optional[str] = Field(default="", alias="gasPrice") immutable_flag: Optional[bool] - wait_for_usable: Optional[bool] = Field(True, alias="waitForUsable") - wait_for_usable_timeout: Optional[int] = Field(120, alias="waitForUsableTimeout") + wait_for_usable: Optional[bool] = Field(default=True, alias="waitForUsable") + wait_for_usable_timeout: Optional[int] = Field(default=120, alias="waitForUsableTimeout") class StampResponse(BaseModel): @@ -694,7 +697,7 @@ class WalletBalance(BaseModel): # deprecated bzz: Optional[str] = None xDai: Optional[str] = None # noqa: N815 - contract_address: Optional[str] = Field(None, alias="contractAddress") + contract_address: Optional[str] = Field(default="", alias="contractAddress") class ExtendedTag(BaseModel): @@ -735,7 +738,7 @@ class TransactionInfo(BaseModel): class PendingTransactionsResponse(BaseModel): - pending_transactions: list[TransactionInfo] = Field(..., alias="pendingTransactions") + pending_transactions: list[TransactionInfo] = Field(default=[], alias="pendingTransactions") class FeedType(Enum): @@ -843,7 +846,7 @@ class JsonFeedOptions(BaseModel): class UploadResult(BaseModel): reference: Reference - tag_uid: Optional[int] = Field(None, alias="tagUid") + tag_uid: Optional[int] = Field(default=None, alias="tagUid") class Config: arbitrary_types_allowed = True @@ -882,11 +885,11 @@ class Collection(BaseModel): class CollectionUploadOptions(UploadOptions): - index_document: Optional[str] = Field(None, alias="indexDocument") - error_document: Optional[str] = Field(None, alias="errorDocument") + index_document: Optional[str] = Field(default="", alias="indexDocument") + error_document: Optional[str] = Field(default="", alias="errorDocument") -class FileData(FileHeaders, BaseModel): +class FileData(BaseModel): headers: FileHeaders data: bytes diff --git a/src/bee_py/utils/tar.py b/src/bee_py/utils/tar.py index 51964c2..0baeef1 100644 --- a/src/bee_py/utils/tar.py +++ b/src/bee_py/utils/tar.py @@ -45,7 +45,7 @@ def make_tar(data: Union[Collection, list[dict]]) -> bytes: with tarfile.open(mode="w", fileobj=tar_buffer) as tar: for entry in data.entries: entry_path = entry.path - entry_data = entry.data.encode() + entry_data = entry.data info = tarfile.TarInfo(name=entry_path) info.size = len(entry_data) diff --git a/src/bee_py/utils/type.py b/src/bee_py/utils/type.py index 020a2cf..563abff 100644 --- a/src/bee_py/utils/type.py +++ b/src/bee_py/utils/type.py @@ -53,7 +53,7 @@ def make_tag_uid(tag_uid: Union[int, str, None]) -> int: TypeError: If the tag UID is not a non-negative integer. """ if not tag_uid: - msg = "TagUid was expected but got null instead!" + msg = "TagUid was expected but got None instead!" raise TypeError(msg) if isinstance(tag_uid, Tag): @@ -68,9 +68,9 @@ def make_tag_uid(tag_uid: Union[int, str, None]) -> int: msg = f"TagUid was expected to be positive non-negative integer! Got {int_value}" raise TypeError(msg) return int_value - except ValueError: + except ValueError as e: msg = "Passed tagUid string is not valid integer!" - raise TypeError(msg) # noqa: B904 + raise TypeError(msg) from e msg = "tagUid has to be either Tag or a number (UID)!" raise TypeError(msg) diff --git a/tests/conftest.py b/tests/conftest.py index 8d4768a..14a6861 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -12,7 +12,7 @@ from bee_py.utils.hex import bytes_to_hex PROJECT_PATH = Path(__file__).parent -DATA_FOLDER = PROJECT_PATH / "test_files" +DATA_FOLDER = PROJECT_PATH / "data" BEE_DATA_FILE = DATA_FOLDER / "bee_data.json" ENV_FILE = PROJECT_PATH / "../Env" @@ -132,56 +132,79 @@ def read_local_bee_peer_stamp() -> str: return False -@pytest.fixture -def get_debug_postage(printer, bee_debug_ky_options) -> BatchId: +# * Not a fixture +def request_debug_postage_stamp(bee_debug_ky_options) -> BatchId: stamp: BatchId - - printer("[*]Getting Debug Postage....") - return "75971c97ba6bbf7ecf429ffab1955c8ed5d2d8622c238cfa52b55451ecef4516" - - # if read_local_bee_stamp: - # printer(read_local_bee_stamp) - # return read_local_bee_stamp - stamp = create_postage_batch(bee_debug_ky_options, 100, 20) if not stamp: msg = "There is no valid postage stamp" raise ValueError(msg) - printer("[*]Waiting for postage to be usable....") + print("[*]Waiting for postage to be usable....") # noqa: T201 while True: usable = get_postage_batch(bee_debug_ky_options, stamp).usable if usable: break - printer(f"[*]Valid Postage found: {stamp}") + print(f"[*]Valid Postage found: {stamp}") # noqa: T201 return stamp -@pytest.fixture -def get_peer_debug_postage(printer, bee_peer_debug_ky_options) -> BatchId: +# * Not a fixture +def request_peer_debug_postage_stamp(bee_peer_debug_ky_options) -> BatchId: stamp: BatchId - # if read_local_bee_peer_stamp: - # return read_local_bee_peer_stamp - return "9d453ebb73b2fedaaf44ceddcf7a0aa37f3e3d6453fea5841c31f0ea6d61dc85" - - printer("[*]Getting Debug Postage....") + # print("[*]Getting Debug Postage....") stamp = create_postage_batch(bee_peer_debug_ky_options, 100, 20) if not stamp: msg = "There is no valid postage stamp" raise ValueError(msg) - printer("[*]Waiting for postage to be usable....") + print("[*]Waiting for postage to be usable....") # noqa: T201 while True: usable = get_postage_batch(bee_peer_debug_ky_options, stamp).usable if usable: break - printer(f"[*]Valid Postage found: {stamp}") + print(f"[*]Valid Postage found: {stamp}") # noqa: T201 + return stamp + + +@pytest.fixture +def get_cache_debug_postage_stamp(request, bee_debug_ky_options) -> BatchId: + stamp = request.config.cache.get("debug_postage_stamp", None) + + if not stamp: + print("[*]Getting postage stamp!....") # noqa: T201 + stamp = request_debug_postage_stamp(bee_debug_ky_options) + request.config.cache.set("debug_postage_stamp", stamp) return stamp +@pytest.fixture +def get_debug_postage(get_cache_debug_postage_stamp) -> BatchId: + print("[*]Getting Debug Postage....") # noqa: T201 + # return "b0a5239a968736020a56517b7bad14d4634d2147896e9bacd840ff56f20bb05b" + return get_cache_debug_postage_stamp + + +@pytest.fixture +def get_cache_peer_debug_postage_stamp(request, bee_peer_debug_ky_options) -> BatchId: + stamp = request.config.cache.get("peer_debug_postage_stamp", None) + + if not stamp: + print("[*]Getting Peer postage stamp!....") # noqa: T201 + stamp = request_peer_debug_postage_stamp(bee_peer_debug_ky_options) + request.config.cache.set("peer_debug_postage_stamp", stamp) + return stamp + + +@pytest.fixture +def get_peer_debug_postage(get_cache_peer_debug_postage_stamp) -> BatchId: + print("[*]Getting Peer Debug Postage....") # noqa: T201 + return get_cache_peer_debug_postage_stamp + + @pytest.fixture def bee_debug_url_postage(get_postage_batch) -> BatchId: return get_postage_batch("bee_debug_url") diff --git a/tests/integration/modules/test_bzz.py b/tests/integration/modules/test_bzz.py index f2c3563..af5598b 100644 --- a/tests/integration/modules/test_bzz.py +++ b/tests/integration/modules/test_bzz.py @@ -3,7 +3,7 @@ from bee_py.modules.bzz import download_file, upload_collection, upload_file from bee_py.modules.tag import create_tag, retrieve_tag -from bee_py.types.type import ENCRYPTED_REFERENCE_HEX_LENGTH +from bee_py.types.type import ENCRYPTED_REFERENCE_HEX_LENGTH, Reference from bee_py.utils.collection_node import make_collection_from_fs BIG_FILE_TIMEOUT = 100_000 @@ -71,7 +71,7 @@ def test_upload_and_download_with_encryption(bee_ky_options, get_debug_postage): file = download_file(bee_ky_options, result.reference, directory_structure[0]["path"]) assert file.headers.name == directory_structure[0]["path"] - assert file.data.encode() == directory_structure[0]["data"] + assert file.data == directory_structure[0]["data"] assert len(result.reference) == ENCRYPTED_REFERENCE_HEX_LENGTH @@ -236,8 +236,13 @@ def test_store_file_with_tag(bee_ky_options, get_debug_postage, random_byte_arra upload_file(bee_ky_options, data, get_debug_postage, filename, {"tag": tag1.uid}) tag2 = retrieve_tag(bee_ky_options, tag1.uid) - assert tag2.split == expected_tags_count - assert tag2.synced == 0 + # * For older version of the APi + if tag2.split == 0: + assert tag2.total == expected_tags_count + assert tag2.seen == 0 + else: + assert tag2.split == expected_tags_count + assert tag2.synced == 0 @pytest.mark.timeout(BIG_FILE_TIMEOUT) @@ -253,5 +258,5 @@ def test_upload_bigger_file(bee_ky_options, get_debug_postage): response = upload_file(bee_ky_options, data, get_debug_postage) - assert isinstance(response.reference, str) + assert isinstance(response.reference, Reference) assert isinstance(response.tag_uid, int) diff --git a/tests/integration/modules/test_chunk.py b/tests/integration/modules/test_chunk.py index 5e14ea7..7a11ca3 100644 --- a/tests/integration/modules/test_chunk.py +++ b/tests/integration/modules/test_chunk.py @@ -9,8 +9,6 @@ def test_store_retreive_data(bee_ky_options, get_debug_postage): span = bytes([len(payload), 0, 0, 0, 0, 0, 0, 0]) data = bytes([*span, *payload]) - # get_debug_postage = "17b325d7ad88098eb2065ebfd505134fb61ee6b4fb2b44f9a44d97067f8c741d" - reference = "ca6357a08e317d15ec560fef34e4c45f8f19f01c372aa70f1da72bfa7f1a4338" # the hash is hardcoded because we would need the bmt hasher otherwise response = upload(bee_ky_options, data, get_debug_postage) diff --git a/tests/test_files/bee_data.json b/tests/test_files/bee_data.json index 8764cc2..d6bbf35 100644 --- a/tests/test_files/bee_data.json +++ b/tests/test_files/bee_data.json @@ -1,4 +1,4 @@ { "BEE_POSTAGE": "061dfc1fc656410f1901e06f5b413039a6923e2747ca7d8cfe23391cd7b86c20", - "BEE_PEER_POSTAGE": "" + "BEE_PEER_POSTAGE": "e032d8ddc7227d0d6c4d0f87db16027924216afd0c00012884ba7af835b4a7c7" } \ No newline at end of file