Skip to content
This repository was archived by the owner on Nov 22, 2024. It is now read-only.

Commit 618d02e

Browse files
committed
create dummy loa document on-the-fly with very-basic pdf content
1 parent 4b2ec55 commit 618d02e

2 files changed

Lines changed: 73 additions & 13 deletions

File tree

CloudFlare/tests/test_loa_documents.py

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import sys
55
import time
66
import random
7+
import tempfile
8+
9+
from utils import dummy_loa_document
710

811
sys.path.insert(0, os.path.abspath('.'))
912
sys.path.insert(0, os.path.abspath('..'))
@@ -68,31 +71,38 @@ def test_addressing_loa_documents():
6871
""" test_addressing_loa_documents """
6972
loa_documents = cf.accounts.addressing.loa_documents(account_id)
7073
assert isinstance(loa_documents, list)
71-
for loa_document in loa_documents:
74+
for loa_document in loa_documents[-4:]:
7275
assert isinstance(loa_document, dict)
7376
assert 'id' in loa_document
77+
assert 'created' in loa_document
7478
assert 'filename' in loa_document
7579
assert 'verified' in loa_document
7680
assert 'size_bytes' in loa_document
77-
print('%s: filename=%s size_bytes=%d verified=%s' % (
81+
print('%s: %s filename=%s size_bytes=%d verified=%s' % (
7882
loa_document['id'],
83+
loa_document['created'],
7984
loa_document['filename'],
8085
loa_document['size_bytes'],
8186
loa_document['verified']
8287
), file=sys.stderr)
8388

8489
def test_addressing_loa_documents_upload(filename=None):
8590
""" test_addressing_loa_documents_upload """
86-
if not filename:
87-
filename = 'CloudFlare/tests/dummy_loa_document.pdf'
88-
try:
89-
pdf_file = open(filename, 'rb')
90-
except (FileNotFoundError, IsADirectoryError, PermissionError) as e:
91-
print('%s: %s' % (filename, e), file=sys.stderr)
92-
assert False
91+
if filename:
92+
# use provided file
93+
try:
94+
pdf_file = open(filename, 'rb')
95+
except (FileNotFoundError, IsADirectoryError, PermissionError) as e:
96+
print('%s: %s' % (filename, e), file=sys.stderr)
97+
assert False
98+
else:
99+
# create a dummy temporary file
100+
pdf_file = tempfile.NamedTemporaryFile(mode='w+b', prefix='dummy-loa-document-', suffix='.pdf', delete=False)
101+
pdf_file.write(dummy_loa_document.encode())
102+
pdf_file.seek(0)
93103

94104
size_bytes = os.fstat(pdf_file.fileno()).st_size
95-
print('filename=%s size_bytes=%d' % (filename, size_bytes), file=sys.stderr)
105+
print('filename=%s size_bytes=%d' % (pdf_file.name, size_bytes), file=sys.stderr)
96106

97107
files = {'loa_document': pdf_file}
98108
try:
@@ -115,6 +125,8 @@ def test_addressing_loa_documents_upload(filename=None):
115125

116126
def ispdf(s):
117127
""" ispdf """
128+
if isinstance(s, str):
129+
s = s.encode()
118130
idx = 0
119131
while s[idx] in [b'\r', b'\n']:
120132
idx += 1
@@ -129,21 +141,24 @@ def ispdf(s):
129141
if b'%PDF-' in s[0:1024]:
130142
return True
131143
# give up!
144+
print('ispdf: failing with content="%s..."' % (s[0:50]), file=sys.stderr)
132145
return False
133146

134147
def test_addressing_loa_documents_download():
135148
""" test_addressing_loa_documents_download """
136149
loa_documents = cf.accounts.addressing.loa_documents(account_id)
137150
assert isinstance(loa_documents, list)
138-
for loa_document in loa_documents:
151+
for loa_document in loa_documents[-4:]:
139152
assert isinstance(loa_document, dict)
140153
assert 'id' in loa_document
154+
assert 'created' in loa_document
141155
assert 'filename' in loa_document
142156
assert 'verified' in loa_document
143157
assert 'size_bytes' in loa_document
144158
assert isinstance(loa_document['size_bytes'], int)
145-
print('%s: filename=%s size_bytes=%d verified=%s' % (
159+
print('%s: %s filename=%s size_bytes=%d verified=%s' % (
146160
loa_document['id'],
161+
loa_document['created'],
147162
loa_document['filename'],
148163
loa_document['size_bytes'],
149164
loa_document['verified']
@@ -152,7 +167,6 @@ def test_addressing_loa_documents_download():
152167
size_bytes = loa_document['size_bytes']
153168
pdf_content = cf.accounts.addressing.loa_documents.download(account_id, loa_document_identifier)
154169
assert size_bytes == len(pdf_content)
155-
print('%s: %s' % (loa_document_identifier, pdf_content[0:10]))
156170
assert ispdf(pdf_content)
157171

158172
if __name__ == '__main__':

CloudFlare/tests/utils.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
""" misc utilities for Cloudflare test code """
2+
3+
dummy_loa_document = """%PDF-1.4
4+
1 0 obj << /Length 559 >> stream
5+
1 0 0 rg
6+
BT /F1 24 Tf 72 680 Td (LOA DOCUMENT) Tj ET
7+
.75 .75 .75 RG 1 w
8+
72 676 m 540 676 l s
9+
0 0 0 rg
10+
BT /F1 12 Tf 72 648 Td (See /tests/ folder under python-cloudflare on GitHub) Tj ET
11+
BT /F1 12 Tf 72 624 Td (THIS DOCUMENT IS ONLY USED FOR TESTING) Tj ET
12+
BT /F1 12 Tf 72 604 Td (Please ignore and delete upon receipt) Tj ET
13+
BT /F1 12 Tf 72 584 Td (See URL:) Tj ET
14+
0 0 1 rg
15+
BT /F2 12 Tf 130 584 Td (http://github.com/cloudflare/python-cloudflare) Tj ET
16+
.75 .75 .75 RG 1 w
17+
72 560 m 540 560 l s
18+
.75 .75 .75 RG 1 w
19+
36 756 m 576 756 l 576 36 l 36 36 l 36 756 l s
20+
endstream
21+
endobj
22+
2 0 obj << /Type /Catalog /Pages 3 0 R >> endobj
23+
3 0 obj << /Type /Pages /Kids [4 0 R ] /Count 1 >> endobj
24+
4 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612 792] /Contents 1 0 R
25+
/Resources <<
26+
/ProcSet 5 0 R
27+
/Font << /F1 6 0 R >>
28+
/Font << /F2 7 0 R >>
29+
>>
30+
>>
31+
endobj
32+
5 0 obj [/PDF /Text] endobj
33+
6 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Arial >> endobj
34+
7 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Courier >> endobj
35+
8 0 obj << /Creator (https://github.com/cloudflare/python-cloudflare)
36+
/Producer (Hand coded for python-cloudflare)
37+
/Title (dummy_loa_document.pdf)
38+
/Author (Martin J Levy)
39+
/Subject (Dummy LOA Document - please delete)
40+
/Keywords (LOA)
41+
/CreationDate (D:20240101120000Z)
42+
/ModDate (D:20240101120000Z)
43+
>> endobj
44+
trailer << /Size 8 /Root 2 0 R /Info 8 0 R >>
45+
%%EOF"""
46+

0 commit comments

Comments
 (0)