File: test_issue114.py

package info (click to toggle)
python-cloudflare 2.20.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,048 kB
  • sloc: python: 6,932; makefile: 138; sh: 76
file content (279 lines) | stat: -rw-r--r-- 9,169 bytes parent folder | download
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
""" issue-114 tests """

import os
import sys

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

# CloudFlare(email=None, key=None, token=None, certtoken=None, debug=False, ...)

cf = None

debug = False

class TestCloudflare:
    """ TestCloudflare """

    def test_email_key_token000(self):
        """ test_email_key_token### """
        self._run(0, 0, 0)

    def test_email_key_token001(self):
        """ test_email_key_token### """
        self._run(0, 0, 1)

    def test_email_key_token002(self):
        """ test_email_key_token### """
        self._run(0, 0, 2)

    def test_email_key_token010(self):
        """ test_email_key_token### """
        self._run(0, 1, 0)

    def test_email_key_token011(self):
        """ test_email_key_token### """
        self._run(0, 1, 1)

    def test_email_key_token012(self):
        """ test_email_key_token### """
        self._run(0, 1, 2)

    def test_email_key_token020(self):
        """ test_email_key_token### """
        self._run(0, 2, 0)

    def test_email_key_token021(self):
        """ test_email_key_token### """
        self._run(0, 2, 1)

    def test_email_key_token022(self):
        """ test_email_key_token### """
        self._run(0, 2, 2)

    def test_email_key_token100(self):
        """ test_email_key_token### """
        self._run(1, 1, 0)

    def test_email_key_token101(self):
        """ test_email_key_token### """
        self._run(1, 1, 1)

    def test_email_key_token102(self):
        """ test_email_key_token### """
        self._run(1, 1, 2)

    def test_email_key_token110(self):
        """ test_email_key_token### """
        self._run(1, 1, 1)

    def test_email_key_token111(self):
        """ test_email_key_token### """
        self._run(1, 1, 1)

    def test_email_key_token112(self):
        """ test_email_key_token### """
        self._run(1, 1, 2)

    def test_email_key_token120(self):
        """ test_email_key_token### """
        self._run(1, 2, 1)

    def test_email_key_token121(self):
        """ test_email_key_token### """
        self._run(1, 2, 1)

    def test_email_key_token122(self):
        """ test_email_key_token### """
        self._run(1, 2, 2)

    def test_email_key_token200(self):
        """ test_email_key_token### """
        self._run(2, 0, 0)

    def test_email_key_token201(self):
        """ test_email_key_token### """
        self._run(2, 0, 1)

    def test_email_key_token202(self):
        """ test_email_key_token### """
        self._run(2, 0, 2)

    def test_email_key_token210(self):
        """ test_email_key_token### """
        self._run(2, 1, 2)

    def test_email_key_token211(self):
        """ test_email_key_token### """
        self._run(2, 1, 1)

    def test_email_key_token212(self):
        """ test_email_key_token### """
        self._run(2, 1, 2)

    def test_email_key_token220(self):
        """ test_email_key_token### """
        self._run(2, 2, 2)

    def test_email_key_token221(self):
        """ test_email_key_token### """
        self._run(2, 2, 1)

    def test_email_key_token222(self):
        """ test_email_key_token### """
        self._run(2, 2, 2)

    def _run(self, token_index, key_index, email_index):
        """ _run """
        global cf
        try:
            profile = self._profile
        except AttributeError:
            # Always clear environment
            self._setup()
            assert self._email or self._key or self._token
            # if not self._email and not self._key and not self._token:
            #     assert 'EMAIL/KEY/TOKEN all needed in order to run this test' == ''
            profile = self._profile

        # select combination
        email = [None, self._email, 'example@example.com'][email_index]
        key = [None, self._key, self._token][key_index]
        token = [None, self._token, self._key][token_index]

        try:
            cf = CloudFlare.CloudFlare(email=email, key=key, token=token, debug=debug, profile=profile)
        except CloudFlare.exceptions.CloudFlareAPIError as e:
            print('%s: Error %d=%s' % ('CloudFlare', int(e), str(e)), file=sys.stderr)
            # don't know what to do; but, lets continue anyway
            return
        assert isinstance(cf, CloudFlare.CloudFlare)

        try:
            r = cf.zones.get(params={'per_page':1})
        except CloudFlare.exceptions.CloudFlareAPIError as e:
            print('%s: Error %d=%s' % ('/zones', int(e), str(e)), file=sys.stderr)
            r = None

        if email is None and key is None and token == self._token:
            print('SUCCESS (as expeced): email = ', self._obfuscate(email), 'key = ', self._obfuscate(key), 'token = ', self._obfuscate(token), file=sys.stderr)
            assert isinstance(r, list)
            assert len(r) == 1
            assert isinstance(r[0], dict)
            return

        if email is None and key == self._token and token is None:
            print('SUCCESS (as expeced): email = ', self._obfuscate(email), 'key = ', self._obfuscate(key), 'token = ', self._obfuscate(token), file=sys.stderr)
            assert isinstance(r, list)
            assert isinstance(r, list)
            assert len(r) == 1
            assert isinstance(r[0], dict)
            return

        if email == self._email and key == self._key and token is None:
            print('SUCCESS (as expeced): email = ', self._obfuscate(email), 'key = ', self._obfuscate(key), 'token = ', self._obfuscate(token), file=sys.stderr)
            assert isinstance(r, list)
            assert len(r) == 1
            assert isinstance(r[0], dict)
            return

        if email == self._email and key is None and token == self._key:
            print('SUCCESS (as expeced): email = ', self._obfuscate(email), 'key = ', self._obfuscate(key), 'token = ', self._obfuscate(token), file=sys.stderr)
            assert isinstance(r, list)
            assert len(r) == 1
            assert isinstance(r[0], dict)
            return

        # Nothing else should work!
        print('FAILED  (as expeced): email = ', self._obfuscate(email), 'key = ', self._obfuscate(key), 'token = ', self._obfuscate(token), file=sys.stderr)
        assert r is None

    def _setup(self):
        """ setup """
        # Force no profile to be picked
        self._profile = ''
        # read in email/key/token from config file(s)
        _config_files = [
            '.cloudflare.cfg',
            os.path.expanduser('~/.cloudflare.cfg'),
            os.path.expanduser('~/.cloudflare/cloudflare.cfg')
        ]
        email = None
        key = None
        token = None
        for filename in _config_files:
            try:
                with open(filename, 'r') as fd:
                    for line in fd:
                        if email and key and token:
                            break
                        if line[0] == '#':
                            continue
                        a = line.split()
                        if len(a) < 3:
                            continue
                        if a[1] != '=':
                            continue
                        if not email and a[0] == 'email':
                            email = a[2]
                            continue
                        if not key and a[0] == 'key':
                            key = a[2]
                            continue
                        if not token and a[0] == 'token':
                            token = a[2]
                            continue
                break
            except FileNotFoundError:
                pass
        self._email = email
        self._key = key
        self._token = token

        # now remove all env variables!
        for env in ['CLOUDFLARE_EMAIL', 'CLOUDFLARE_API_KEY', 'CLOUDFLARE_API_TOKEN']:
            try:
                del os.environ[env]
            except KeyError:
                pass
        for env in ['CF_API_EMAIL', 'CF_API_KEY', 'CF_API_TOKEN']:
            try:
                del os.environ[env]
            except KeyError:
                pass

    def _obfuscate(self, s):
        """ _obfuscate """
        return '█' if s is None else '█' * len(s)

if __name__ == '__main__':
    debug = True
    t = TestCloudflare()
    t.test_email_key_token000()
    t.test_email_key_token001()
    t.test_email_key_token002()
    t.test_email_key_token010()
    t.test_email_key_token011()
    t.test_email_key_token012()
    t.test_email_key_token020()
    t.test_email_key_token021()
    t.test_email_key_token022()
    t.test_email_key_token100()
    t.test_email_key_token101()
    t.test_email_key_token102()
    t.test_email_key_token110()
    t.test_email_key_token111()
    t.test_email_key_token112()
    t.test_email_key_token120()
    t.test_email_key_token121()
    t.test_email_key_token122()
    t.test_email_key_token200()
    t.test_email_key_token201()
    t.test_email_key_token202()
    t.test_email_key_token210()
    t.test_email_key_token211()
    t.test_email_key_token212()
    t.test_email_key_token220()
    t.test_email_key_token221()
    t.test_email_key_token222()