summaryrefslogtreecommitdiff
path: root/debian/patches/improve-unknown-interaction-mock.patch
blob: b09b3a257c547376ab298065aa5cc1495a4879d7 (plain)
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
From: Colin Watson <cjwatson@debian.org>
Date: Fri, 9 Feb 2018 21:54:21 +0000
Subject: Improve mock setup for 407-then-unknown test

`test_407_then_unknown_interaction_methods` causes the client to fetch
the possible methods supported by the discharger (because it's told that
it only supports a non-window method).  This is currently unmocked,
which causes the client to actually contact `http://example.com/visit`.
This fails in Launchpad builds because they run with a restrictive
network setup that doesn't even expose DNS lookups for non-permitted
hosts.

There isn't really a good way to simulate this without setting up a
similar stunt DNS server (though perhaps installing an
`httmock.all_requests` fallback mock that raises an exception would be a
good idea?), but this seems to be the only failure at the moment.

Forwarded: https://github.com/go-macaroon-bakery/py-macaroon-bakery/pull/45
Last-Update: 2018-02-09

Patch-Name: improve-unknown-interaction-mock.patch
---
 macaroonbakery/tests/test_bakery.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/macaroonbakery/tests/test_bakery.py b/macaroonbakery/tests/test_bakery.py
index 72a6928..1883987 100644
--- a/macaroonbakery/tests/test_bakery.py
+++ b/macaroonbakery/tests/test_bakery.py
@@ -146,6 +146,16 @@ def discharge_401(url, request):
     }
 
 
+@urlmatch(path='.*/visit')
+def visit_200(url, request):
+    return {
+        'status_code': 200,
+        'content': {
+            'interactive': '/visit'
+        }
+    }
+
+
 @urlmatch(path='.*/wait')
 def wait_after_401(url, request):
     if request.url != 'http://example.com/wait':
@@ -245,7 +255,8 @@ class TestBakery(TestCase):
             def kind(self):
                 return 'unknown'
         client = httpbakery.Client(interaction_methods=[UnknownInteractor()])
-        with HTTMock(first_407_then_200), HTTMock(discharge_401):
+        with HTTMock(first_407_then_200), HTTMock(discharge_401),\
+                HTTMock(visit_200):
             with self.assertRaises(httpbakery.InteractionError) as exc:
                 requests.get(
                     ID_PATH,