Skip to content

Commit 0b22961

Browse files
committed
Merge pull request Clever#29 from eosrei/cli-api-key
Make the CLI clever script work + tests
2 parents 52c2353 + 94b1704 commit 0b22961

File tree

2 files changed

+50
-7
lines changed

2 files changed

+50
-7
lines changed

bin/clever

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ class APIResourceClient(object):
2727
def logged_curl(self, method, url, params):
2828
dict_params = self.to_dict(params)
2929
self.log_request(method, url, params, dict_params)
30-
rbody, rcode, _ = clever.APIRequestor().request_raw(method, url, dict_params)
31-
self.log_result(rbody, rcode)
32-
return rbody, rcode
30+
res, auth = clever.APIRequestor().request_raw(method, url, dict_params)
31+
self.log_result(res['body'], res['code'])
32+
return res['body'], res['code']
3333

3434
def log_request(self, method, url, ordered_params, dict_params):
3535
if method.lower() == 'get':
@@ -46,7 +46,9 @@ class APIResourceClient(object):
4646
term = ' \\'
4747
else:
4848
term = ''
49-
curl = ['curl %s%s -H "Authorization: Basic %s"%s' % (clever.api_base, url, base64.b64encode(clever.api_key), term)]
49+
api_key = clever.get_api_key()
50+
curl = ['curl %s%s -H "Authorization: Basic %s"%s' %
51+
(clever.api_base, url, base64.b64encode(api_key), term)]
5052
if isinstance(ordered_params, list):
5153
for i, (k, v) in enumerate(ordered_params):
5254
if i == len(ordered_params) - 1:
@@ -170,11 +172,11 @@ event
170172

171173
klass_name = args[0]
172174
method_name = args[1]
173-
174-
clever.api_key = opts.api_key or os.environ.get('CLEVER_API_KEY')
175-
if not clever.api_key:
175+
api_key = opts.api_key or os.environ.get('CLEVER_API_KEY')
176+
if not api_key:
176177
parser.error('No API key provided (use -k option or set the CLEVER_API_KEY environment variable')
177178
return 1
179+
clever.set_api_key(api_key)
178180

179181
if opts.api_base:
180182
clever.api_base = opts.api_base

test/test_cli_clever.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import os
4+
import unittest
5+
import subprocess
6+
7+
CLI_CLEVER = os.path.join(os.path.dirname(__file__), '../bin/clever ')
8+
9+
class CleverCLITestCase(unittest.TestCase):
10+
11+
def run_clever(self, args='', env=None):
12+
"""
13+
Runs the cli clever script, passes supplied args.
14+
"""
15+
process = subprocess.Popen(CLI_CLEVER + args, shell=True, env=env,
16+
stdout=subprocess.PIPE,
17+
stderr=subprocess.PIPE)
18+
19+
out, err = process.communicate()
20+
code = process.returncode
21+
return out, err, code
22+
23+
def test_help(self):
24+
# Test help on error
25+
out, err, code = self.run_clever()
26+
self.assertEqual(code, 1)
27+
# Test help on option
28+
out, err, code = self.run_clever('-h')
29+
self.assertEqual(code, 0)
30+
31+
def test_api_key(self):
32+
# Check for error when key is not provided
33+
out, err, code = self.run_clever('district all')
34+
self.assertEqual(code, 2)
35+
# Check for no error when key is provided via -k
36+
out, err, code = self.run_clever('district all -k DEMO_KEY')
37+
self.assertEqual(code, 0)
38+
# Check for no error when key is provided via CLEVER_API_KEY
39+
env = {'CLEVER_API_KEY':'DEMO_KEY'}
40+
out, err, code = self.run_clever('district all', env)
41+
self.assertEqual(code, 0)

0 commit comments

Comments
 (0)