Skip to content

Commit 165e60d

Browse files
authored
0.11.0 (2022-09-15) (#60)
* 0.11.0 (2022-09-15) ------------------ Changed ^^^^^^^ * Breaking: fixed the faulty default placemnt of the "data"-tag into assets. Thereby caused obfuscation got removed. * Breaking: adjusted to the IPLD definitions of planetmint. Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> * blackified Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com> Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
1 parent 0c6c682 commit 165e60d

File tree

9 files changed

+71
-34
lines changed

9 files changed

+71
-34
lines changed

.vscode/settings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"python.testing.unittestEnabled": false,
3+
"python.testing.pytestEnabled": true
4+
}

CHANGELOG.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
Changelog
77
=========
88

9+
0.11.0 (2022-09-15)
10+
------------------
11+
Changed
12+
^^^^^^^
13+
* Breaking: fixed the faulty default placemnt of the "data"-tag into assets. Thereby caused obfuscation got removed.
14+
* Breaking: adjusted to the IPLD definitions of planetmint.
915

1016
0.6.2 (2022-09-08)
1117
------------------

planetmint_driver/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77

88
__author__ = "Planetmint"
99
__email__ = "devs@planetmint.com"
10-
__version__ = "0.6.2"
10+
__version__ = "0.11.0"

planetmint_driver/common/transaction.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -561,8 +561,8 @@ def __init__(
561561
if inputs and not isinstance(inputs, list):
562562
raise TypeError("`inputs` must be a list instance or None")
563563

564-
if metadata is not None and not isinstance(metadata, dict):
565-
raise TypeError("`metadata` must be a dict or None")
564+
if metadata is not None and not isinstance(metadata, str):
565+
raise TypeError("`metadata` must be a str or None")
566566

567567
self.version = version if version is not None else self.VERSION
568568
self.operation = operation
@@ -662,7 +662,7 @@ def create(cls, tx_signers, recipients, metadata=None, asset=None):
662662
# generate inputs
663663
inputs.append(Input.generate(tx_signers))
664664

665-
return cls(cls.CREATE, {"data": asset}, inputs, outputs, metadata)
665+
return cls(cls.CREATE, asset, inputs, outputs, metadata)
666666

667667
@classmethod
668668
def transfer(cls, inputs, recipients, asset_id, metadata=None):

planetmint_driver/offchain.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def prepare_create_transaction(*, signers, recipients=None, asset=None, metadata
182182
signers,
183183
recipients,
184184
metadata=metadata,
185-
asset=asset["data"] if asset else None,
185+
asset=asset,
186186
)
187187
return transaction.to_dict()
188188

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"pytest-sugar",
3535
"pytest-xdist",
3636
"responses~=0.5.1",
37+
"planetmint-ipld>=0.0.3",
3738
]
3839

3940
dev_require = ["ipdb", "ipython", "pre-commit", "jinja2==3.0.0"]
@@ -51,7 +52,7 @@
5152

5253
setup(
5354
name="planetmint_driver",
54-
version="0.10.0",
55+
version="0.11.0",
5556
description="Python driver for Planetmint",
5657
long_description=readme + "\n\n" + changelog,
5758
long_description_content_type="text/x-rst",

tests/conftest.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from cryptoconditions import Ed25519Sha256
1313
from pytest import fixture
1414
from sha3 import sha3_256
15+
from ipld import multihash, marshal
1516

1617
from planetmint_driver.common.transaction import Transaction, _fulfillment_to_details
1718

@@ -232,7 +233,7 @@ def alice_transaction_obj(alice_pubkey):
232233
return Transaction.create(
233234
tx_signers=[alice_pubkey],
234235
recipients=[([alice_pubkey], 1)],
235-
asset={"serial_number": serial_number},
236+
asset={"data": multihash(marshal({"serial_number": serial_number}))},
236237
)
237238

238239

@@ -263,7 +264,7 @@ def persisted_random_transaction(alice_pubkey, alice_privkey):
263264
from uuid import uuid4
264265
from planetmint_driver.common.transaction import Transaction
265266

266-
asset = {"data": {"x": str(uuid4())}}
267+
asset = {"data": multihash(marshal({"x": str(uuid4())}))}
267268
tx = Transaction.create(
268269
tx_signers=[alice_pubkey],
269270
recipients=[([alice_pubkey], 1)],
@@ -277,7 +278,7 @@ def sent_persisted_random_transaction(alice_pubkey, alice_privkey, transactions_
277278
from uuid import uuid4
278279
from planetmint_driver.common.transaction import Transaction
279280

280-
asset = {"data": {"x": str(uuid4())}}
281+
asset = {"data": multihash(marshal({"x": str(uuid4())}))}
281282
tx = Transaction.create(
282283
tx_signers=[alice_pubkey],
283284
recipients=[([alice_pubkey], 1)],
@@ -322,7 +323,7 @@ def prepared_carol_bicycle_transaction(carol_keypair, bicycle_data):
322323
fulfillment = make_fulfillment(carol_keypair.public_key)
323324
tx = {
324325
"asset": {
325-
"data": bicycle_data,
326+
"data": multihash(marshal(bicycle_data)),
326327
},
327328
"metadata": None,
328329
"operation": "CREATE",
@@ -360,7 +361,7 @@ def prepared_carol_car_transaction(carol_keypair, car_data):
360361
fulfillment = make_fulfillment(carol_keypair.public_key)
361362
tx = {
362363
"asset": {
363-
"data": car_data,
364+
"data": multihash(marshal(car_data)),
364365
},
365366
"metadata": None,
366367
"operation": "CREATE",
@@ -515,7 +516,7 @@ def persisted_transfer_dimi_car_to_ewy(
515516
def unsigned_transaction():
516517
return {
517518
"operation": "CREATE",
518-
"asset": {"data": {"serial_number": "NNP43x-DaYoSWg=="}},
519+
"asset": {"data": multihash(marshal({"serial_number": "NNP43x-DaYoSWg=="}))},
519520
"version": "2.0",
520521
"outputs": [
521522
{
@@ -546,7 +547,17 @@ def unsigned_transaction():
546547

547548

548549
@fixture
549-
def text_search_assets(api_root, transactions_api_full_url, alice_pubkey, alice_privkey):
550+
def search_assets():
551+
assets = [
552+
{"data": multihash(marshal({"msg": "Hello Planetmint 1!"}))},
553+
{"data": multihash(marshal({"msg": "Hello Planetmint 2!"}))},
554+
{"data": multihash(marshal({"msg": "Hello Planetmint 3!"}))},
555+
]
556+
return assets
557+
558+
559+
@fixture
560+
def text_search_assets(api_root, transactions_api_full_url, alice_pubkey, alice_privkey, search_assets):
550561
# check if the fixture was already executed
551562
response = requests.get(api_root + "/assets", params={"search": "planetmint"})
552563
response = response.json()
@@ -557,20 +568,15 @@ def text_search_assets(api_root, transactions_api_full_url, alice_pubkey, alice_
557568
return assets
558569

559570
# define the assets that will be used by text_search tests
560-
assets = [
561-
{"msg": "Hello Planetmint 1!"},
562-
{"msg": "Hello Planetmint 2!"},
563-
{"msg": "Hello Planetmint 3!"},
564-
]
565571

566572
# write the assets to Planetmint
567573
assets_by_txid = {}
568-
for asset in assets:
574+
for asset in search_assets:
569575
tx = Transaction.create(
570576
tx_signers=[alice_pubkey],
571577
recipients=[([alice_pubkey], 1)],
572578
asset=asset,
573-
metadata={"But here's my number": "So call me maybe"},
579+
metadata="So call me maybe",
574580
)
575581
tx_signed = tx.sign([alice_privkey])
576582
requests.post(transactions_api_full_url, json=tx_signed.to_dict())

tests/test_driver.py

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from requests.utils import default_headers
1212
from sha3 import sha3_256
1313
from cryptoconditions import Ed25519Sha256
14+
from ipld import multihash, marshal
1415

1516

1617
class TestPlanetmint:
@@ -190,12 +191,16 @@ def create_transaction():
190191
operation="CREATE",
191192
signers=carol.public_key,
192193
asset={
193-
"data": {
194-
"asset": {
195-
"serial_number": str(uuid.uuid4()),
196-
"manufacturer": str(uuid.uuid4()),
197-
},
198-
},
194+
"data": multihash(
195+
marshal(
196+
{
197+
"asset": {
198+
"serial_number": str(uuid.uuid4()),
199+
"manufacturer": str(uuid.uuid4()),
200+
},
201+
},
202+
)
203+
)
199204
},
200205
)
201206

@@ -269,21 +274,36 @@ def test_assets_get_search_no_results(self, driver):
269274
response = driver.assets.get(search="abcdef")
270275
assert response == []
271276

272-
@mark.parametrize("search", [("Planetmint"), ("Planetmint")])
273-
def test_assets_get_search(self, driver, text_search_assets, search):
277+
@mark.parametrize(
278+
"search",
279+
[
280+
(multihash(marshal({"msg": "Hello Planetmint 1!"}))),
281+
(multihash(marshal({"msg": "Hello Planetmint 2!"}))),
282+
(multihash(marshal({"msg": "Hello Planetmint 3!"}))),
283+
],
284+
)
285+
def test_assets_get_search(self, driver, text_search_assets, search, search_assets):
274286
# we have 3 assets that match 'planetmint' in text_search_assets
275-
response = driver.assets.get(search=search)
276-
assert len(response) == 3
287+
for asset in search_assets:
288+
response = driver.assets.get(search=asset["data"])
289+
assert len(response) == 1
277290

278291
for asset in response:
279-
assert text_search_assets[asset["id"]] == asset["data"]
292+
assert text_search_assets[asset["id"]]["data"] == asset["data"]
280293

281-
@mark.parametrize("search", [("Planetmint"), ("Planetmint")])
294+
@mark.parametrize(
295+
"search",
296+
[
297+
(multihash(marshal({"msg": "Hello Planetmint 1!"}))),
298+
(multihash(marshal({"msg": "Hello Planetmint 2!"}))),
299+
(multihash(marshal({"msg": "Hello Planetmint 3!"}))),
300+
],
301+
)
282302
def test_assets_get_search_limit(self, driver, search):
283303
# we have 3 assets that match 'planetmint' in text_search_assets but
284304
# we are limiting the number of returned results to 2
285305
response = driver.assets.get(search=search, limit=2)
286-
assert len(response) == 2
306+
assert len(response) == 1
287307

288308
def test_metadata_get_search_no_results(self, driver):
289309
# no metadata matches the search string

tests/test_offchain.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_prepare_create_transaction_default(alice_pubkey):
4242
assert "id" in create_transaction
4343
assert "version" in create_transaction
4444
assert "asset" in create_transaction
45-
assert create_transaction["asset"] == {"data": None}
45+
assert create_transaction["asset"] == None
4646
assert "outputs" in create_transaction
4747
assert "inputs" in create_transaction
4848
assert "metadata" in create_transaction

0 commit comments

Comments
 (0)