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

Commit 3901158

Browse files
committed
purge_cache test - was chasing a different bug
1 parent ba42673 commit 3901158

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
""" get/post/delete/etc zone ruleset based tests """
2+
3+
import os
4+
import sys
5+
import uuid
6+
import random
7+
8+
sys.path.insert(0, os.path.abspath('.'))
9+
sys.path.insert(0, os.path.abspath('..'))
10+
import CloudFlare
11+
12+
# test purge_cache
13+
14+
cf = None
15+
16+
def test_cloudflare(debug=False):
17+
""" test_cloudflare """
18+
global cf
19+
cf = CloudFlare.CloudFlare(debug=debug)
20+
assert isinstance(cf, CloudFlare.CloudFlare)
21+
22+
zone_name = None
23+
zone_id = None
24+
zone_type = None
25+
26+
def test_find_zone(domain_name=None):
27+
""" test_find_zone """
28+
global zone_name, zone_id, zone_type
29+
# grab a random zone identifier from the first 10 zones
30+
if domain_name:
31+
params = {'per_page':1, 'name':domain_name}
32+
else:
33+
params = {'per_page':10}
34+
try:
35+
zones = cf.zones.get(params=params)
36+
except CloudFlare.exceptions.CloudFlareAPIError as e:
37+
print('%s: Error %d=%s' % (domain_name, int(e), str(e)), file=sys.stderr)
38+
assert False
39+
assert len(zones) > 0 and len(zones) <= 10
40+
n = random.randrange(len(zones))
41+
zone_name = zones[n]['name']
42+
zone_id = zones[n]['id']
43+
zone_type = zones[0]['plan']['name']
44+
assert len(zone_id) == 32
45+
print('zone: %s %s' % (zone_id, zone_name), file=sys.stderr)
46+
47+
def create_purge_zone_data():
48+
""" create_purge_zone_data """
49+
if 'Enterprise' in zone_type:
50+
# Enterprise accounts can do all things ...
51+
fake_tag = 'tag-' + str(uuid.uuid1())
52+
data = {
53+
# 'purge_everything': True,
54+
'hosts': [zone_name],
55+
'tags': [fake_tag],
56+
'prefixes': [zone_name + '/' + 'index.html'],
57+
}
58+
else:
59+
# Free, Pro, Business accounts can only do this ...
60+
data = {
61+
'purge_everything': True
62+
}
63+
return data
64+
65+
def test_purge_cache_post():
66+
""" test_purge_cache_post """
67+
r = cf.zones.purge_cache.post(zone_id, data=create_purge_zone_data())
68+
assert isinstance(r, dict)
69+
assert 'id' in r
70+
assert r['id'] == zone_id
71+
72+
def test_purge_cache_delete():
73+
""" test_purge_cache_delete """
74+
# delete method is not in documents; however, it works
75+
r = cf.zones.purge_cache.delete(zone_id, data=create_purge_zone_data())
76+
assert isinstance(r, dict)
77+
assert 'id' in r
78+
assert r['id'] == zone_id
79+
80+
if __name__ == '__main__':
81+
test_cloudflare(debug=True)
82+
if len(sys.argv) > 1:
83+
test_find_zone(sys.argv[1])
84+
else:
85+
test_find_zone()
86+
test_purge_cache_post()
87+
test_purge_cache_delete()

0 commit comments

Comments
 (0)