summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdocs/conf.py2
-rw-r--r--macaroonbakery/httpbakery/agent/_agent.py13
-rw-r--r--macaroonbakery/tests/test_agent.py19
-rwxr-xr-xsetup.py2
4 files changed, 22 insertions, 14 deletions
diff --git a/docs/conf.py b/docs/conf.py
index ff5c82e..7985e17 100755
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -63,7 +63,7 @@ copyright = u'2017, Juju UI Team'
# the built documents.
#
# The short X.Y version and the full version.
-version = release = '1.1.0'
+version = release = '1.1.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/macaroonbakery/httpbakery/agent/_agent.py b/macaroonbakery/httpbakery/agent/_agent.py
index b717261..618097c 100644
--- a/macaroonbakery/httpbakery/agent/_agent.py
+++ b/macaroonbakery/httpbakery/agent/_agent.py
@@ -109,14 +109,15 @@ class AgentInteractor(httpbakery.Interactor, httpbakery.LegacyInteractor):
if not location.endswith('/'):
location += '/'
login_url = urljoin(location, p.login_url)
- # TODO use client to make the request.
- resp = requests.get(login_url, json={
- 'Username': agent.username,
- 'PublicKey': str(self._auth_info.key),
- })
+ resp = requests.get(
+ login_url, params={
+ 'username': agent.username,
+ 'public-key': str(self._auth_info.key.public_key)},
+ auth=client.auth())
if resp.status_code != 200:
raise httpbakery.InteractionError(
- 'cannot acquire agent macaroon: {}'.format(resp.status_code)
+ 'cannot acquire agent macaroon: {} {}'.format(
+ resp.status_code, resp.text)
)
m = resp.json().get('macaroon')
if m is None:
diff --git a/macaroonbakery/tests/test_agent.py b/macaroonbakery/tests/test_agent.py
index 3b38337..d670485 100644
--- a/macaroonbakery/tests/test_agent.py
+++ b/macaroonbakery/tests/test_agent.py
@@ -14,10 +14,13 @@ import macaroonbakery.httpbakery.agent as agent
import requests.cookies
from httmock import HTTMock, response, urlmatch
-from six.moves.urllib.parse import parse_qs
+from six.moves.urllib.parse import parse_qs, urlparse
log = logging.getLogger(__name__)
+PRIVATE_KEY = 'CqoSgj06Zcgb4/S6RT4DpTjLAfKoznEY3JsShSjKJEU='
+PUBLIC_KEY = 'YAhRSsth3a36mRYqQGQaLiS4QJax0p356nd+B8x7UQE='
+
class TestAgents(TestCase):
def setUp(self):
@@ -41,8 +44,8 @@ class TestAgents(TestCase):
def test_load_auth_info(self):
auth_info = agent.load_auth_info(self.agent_filename)
- self.assertEqual(str(auth_info.key), 'CqoSgj06Zcgb4/S6RT4DpTjLAfKoznEY3JsShSjKJEU=')
- self.assertEqual(str(auth_info.key.public_key), 'YAhRSsth3a36mRYqQGQaLiS4QJax0p356nd+B8x7UQE=')
+ self.assertEqual(str(auth_info.key), PRIVATE_KEY)
+ self.assertEqual(str(auth_info.key.public_key), PUBLIC_KEY)
self.assertEqual(auth_info.agents, [
agent.Agent(url='https://1.example.com/', username='user-1'),
agent.Agent(url='https://2.example.com/discharger', username='user-2'),
@@ -139,12 +142,16 @@ class TestAgents(TestCase):
@urlmatch(path='.*/login')
def login(url, request):
+ qs = parse_qs(urlparse(request.url).query)
+ self.assertEqual(request.method, 'GET')
+ self.assertEqual(
+ qs, {'username': ['test-user'], 'public-key': [PUBLIC_KEY]})
b = bakery.Bakery(key=discharge_key)
m = b.oven.macaroon(
version=bakery.LATEST_VERSION,
expiry=datetime.utcnow() + timedelta(days=1),
caveats=[bakery.local_third_party_caveat(
- auth_info.key.public_key,
+ PUBLIC_KEY,
version=httpbakery.request_version(request.headers))],
ops=[bakery.Op(entity='agent', action='login')])
return {
@@ -164,7 +171,7 @@ class TestAgents(TestCase):
'http://0.1.2.3/here',
cookies=client.cookies,
auth=client.auth())
- self.assertEquals(resp.content, b'done')
+ self.assertEqual(resp.content, b'done')
def test_agent_legacy(self):
discharge_key = bakery.generate_key()
@@ -346,7 +353,7 @@ class TestAgents(TestCase):
cookies=client.cookies,
auth=client.auth(),
)
- self.assertEquals(resp.content, b'done')
+ self.assertEqual(resp.content, b'done')
agent_file = '''
diff --git a/setup.py b/setup.py
index eadbb41..265b5f8 100755
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@ from setuptools import (
PROJECT_NAME = 'macaroonbakery'
-VERSION = (1, 1, 0)
+VERSION = (1, 1, 2)
def get_version():