From 312c6d9b92c46a21896eb35e8d4bdc1c980d475a Mon Sep 17 00:00:00 2001 From: Hartmut Goebel Date: Thu, 24 Jun 2021 11:08:41 +0200 Subject: [PATCH 1/4] PYADPT-116: Make tests use binary data, esp. null-bytes. --- tests/test_blob.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_blob.py b/tests/test_blob.py index 857c369..3842b6f 100644 --- a/tests/test_blob.py +++ b/tests/test_blob.py @@ -10,12 +10,12 @@ from . import constants from . import model def test_blob_data_constructor(pEp, model): - bdata = bytes('this is test data', 'utf-8') + bdata = b'this is binary \x00\x01\xbb\xa7\xa4\xab test data' b = pEp.Blob(bdata) assert(b.data == bdata) def test_blob_data_property(pEp, model): + bdata = b'this is binary \x00\x01\xbb\xa7\xa4\xab test data' b = pEp.Blob(b'dummy') - bdata = bytes('this is test data', 'utf-8') b.data = bdata assert(b.data == bdata) From d6568b007574ce17216fc60288ff86c5a5c7d0df Mon Sep 17 00:00:00 2001 From: Hartmut Goebel Date: Thu, 24 Jun 2021 11:12:21 +0200 Subject: [PATCH 2/4] PYADPT-116: Fix Blob.data getter for binary data, esp. null-bytes. --- src/pEp/_pEp/message.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pEp/_pEp/message.cc b/src/pEp/_pEp/message.cc index 11bd51a..3666669 100644 --- a/src/pEp/_pEp/message.cc +++ b/src/pEp/_pEp/message.cc @@ -95,7 +95,8 @@ namespace pEp { } object Message::Blob::data() { - return object(handle<>(PyBytes_FromString(_bl->value))); + return object(handle<>(PyBytes_FromStringAndSize(_bl->value, + _bl->size))); } void Message::Blob::data(object data) { From f5d83b7454d48599f6549f70b0e5f9791e35316f Mon Sep 17 00:00:00 2001 From: Hartmut Goebel Date: Thu, 24 Jun 2021 11:16:29 +0200 Subject: [PATCH 3/4] PYADPT-116: Clean up test-suite. --- tests/test_blob.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tests/test_blob.py b/tests/test_blob.py index 3842b6f..89b666c 100644 --- a/tests/test_blob.py +++ b/tests/test_blob.py @@ -4,18 +4,15 @@ """Blob unit tests.""" -import pytest -from . import constants -from . import model - -def test_blob_data_constructor(pEp, model): +def test_blob_data_constructor(pEp): bdata = b'this is binary \x00\x01\xbb\xa7\xa4\xab test data' b = pEp.Blob(bdata) - assert(b.data == bdata) + assert b.data == bdata + -def test_blob_data_property(pEp, model): +def test_blob_data_property(pEp): bdata = b'this is binary \x00\x01\xbb\xa7\xa4\xab test data' b = pEp.Blob(b'dummy') b.data = bdata - assert(b.data == bdata) + assert b.data == bdata From 6a715e199d15ec539482544cb48afe2d5ebfebc5 Mon Sep 17 00:00:00 2001 From: Hartmut Goebel Date: Thu, 24 Jun 2021 11:19:20 +0200 Subject: [PATCH 4/4] PYADPT-116: Add more test-cases. --- tests/test_blob.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/test_blob.py b/tests/test_blob.py index 89b666c..b4df272 100644 --- a/tests/test_blob.py +++ b/tests/test_blob.py @@ -9,6 +9,8 @@ def test_blob_data_constructor(pEp): bdata = b'this is binary \x00\x01\xbb\xa7\xa4\xab test data' b = pEp.Blob(bdata) assert b.data == bdata + assert not b.mime_type + assert not b.filename def test_blob_data_property(pEp): @@ -16,3 +18,14 @@ def test_blob_data_property(pEp): b = pEp.Blob(b'dummy') b.data = bdata assert b.data == bdata + assert not b.mime_type + assert not b.filename + + +def test_blob_data_property_keeps_other_fields(pEp): + bdata = b'this is binary \x00\x01\xbb\xa7\xa4\xab test data' + b = pEp.Blob(b'dummy', 'application/x-mydata', 'myfile.dat') + b.data = bdata + assert b.data == bdata + assert b.mime_type == 'application/x-mydata' + assert b.filename == 'myfile.dat'