File: test_purge_cache.py

package info (click to toggle)
python-cloudflare 2.20.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,056 kB
  • sloc: python: 6,932; makefile: 138; sh: 76
file content (87 lines) | stat: -rw-r--r-- 2,491 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
""" get/post/delete/etc zone ruleset based tests """

import os
import sys
import uuid
import random

sys.path.insert(0, os.path.abspath('.'))
sys.path.insert(0, os.path.abspath('..'))
import CloudFlare

# test purge_cache

cf = None

def test_cloudflare(debug=False):
    """ test_cloudflare """
    global cf
    cf = CloudFlare.CloudFlare(debug=debug)
    assert isinstance(cf, CloudFlare.CloudFlare)

zone_name = None
zone_id = None
zone_type = None

def test_find_zone(domain_name=None):
    """ test_find_zone """
    global zone_name, zone_id, zone_type
    # grab a random zone identifier from the first 10 zones
    if domain_name:
        params = {'per_page':1, 'name':domain_name}
    else:
        params = {'per_page':10}
    try:
        zones = cf.zones.get(params=params)
    except CloudFlare.exceptions.CloudFlareAPIError as e:
        print('%s: Error %d=%s' % (domain_name, int(e), str(e)), file=sys.stderr)
        assert False
    assert len(zones) > 0 and len(zones) <= 10
    n = random.randrange(len(zones))
    zone_name = zones[n]['name']
    zone_id = zones[n]['id']
    zone_type = zones[0]['plan']['name']
    assert len(zone_id) == 32
    print('zone: %s %s' % (zone_id, zone_name), file=sys.stderr)

def create_purge_zone_data():
    """ create_purge_zone_data """
    if 'Enterprise' in zone_type:
        # Enterprise accounts can do all things ...
        fake_tag = 'tag-' + str(uuid.uuid1())
        data = {
            # 'purge_everything': True,
            'hosts': [zone_name],
            'tags': [fake_tag],
            'prefixes': [zone_name + '/' + 'index.html'],
        }
    else:
        # Free, Pro, Business accounts can only do this ...
        data = {
            'purge_everything': True
        }
    return data

def test_purge_cache_post():
    """ test_purge_cache_post """
    r = cf.zones.purge_cache.post(zone_id, data=create_purge_zone_data())
    assert isinstance(r, dict)
    assert 'id' in r
    assert r['id'] == zone_id

def test_purge_cache_delete():
    """ test_purge_cache_delete """
    # delete method is not in documents; however, it works
    r = cf.zones.purge_cache.delete(zone_id, data=create_purge_zone_data())
    assert isinstance(r, dict)
    assert 'id' in r
    assert r['id'] == zone_id

if __name__ == '__main__':
    test_cloudflare(debug=True)
    if len(sys.argv) > 1:
        test_find_zone(sys.argv[1])
    else:
        test_find_zone()
    test_purge_cache_post()
    test_purge_cache_delete()