From 37b9fa3fee3d7569c1725a935de2783b4c10c16b Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 17 Feb 2019 12:08:24 +0100 Subject: [PATCH 1/4] added assert to test if the proper environ value was set after leaving the inner context manager --- tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests.py b/tests.py index 463ac9d..31f89d1 100644 --- a/tests.py +++ b/tests.py @@ -44,6 +44,7 @@ def testExtraStuff(self): self.assertEqual(bottle.request.extra, 'woot') with boddle(extra='woot2'): self.assertEqual(bottle.request.extra, 'woot2') + self.assertEqual(bottle.request.extra, 'woot') self.assertFalse(hasattr(bottle.request,'extra')) def testJSON(self): From d8ea54c69302bba4835b27f672e682d0e611fe7c Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 17 Feb 2019 12:09:43 +0100 Subject: [PATCH 2/4] added test to provide the extra args as a dictionary --- tests.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests.py b/tests.py index 31f89d1..b80a8a2 100644 --- a/tests.py +++ b/tests.py @@ -46,7 +46,17 @@ def testExtraStuff(self): self.assertEqual(bottle.request.extra, 'woot2') self.assertEqual(bottle.request.extra, 'woot') self.assertFalse(hasattr(bottle.request,'extra')) - + + def testExtraAsDict(self): + extras = {'extra': 'woot'} + with boddle(**extras): + self.assertEqual(bottle.request.extra, 'woot') + extras = {'extra': 'woot2'} + with boddle(**extras): + self.assertEqual(bottle.request.extra, 'woot2') + self.assertEqual(bottle.request.extra, 'woot') + self.assertFalse(hasattr(bottle.request,'extra')) + def testJSON(self): with boddle(json={'name':'derek'}): self.assertEqual(bottle.request.json['name'], 'derek') From 610f3781d933e79587b17c55a3089d7d4b734349 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 17 Feb 2019 12:33:15 +0100 Subject: [PATCH 3/4] added test to add extra argument 'forms'. This fails, because bottle already uses forms internally. --- tests.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests.py b/tests.py index b80a8a2..ddf2398 100644 --- a/tests.py +++ b/tests.py @@ -57,6 +57,10 @@ def testExtraAsDict(self): self.assertEqual(bottle.request.extra, 'woot') self.assertFalse(hasattr(bottle.request,'extra')) + def testExtraForms(self): + with boddle(forms='form'): + self.assertEqual(bottle.request.forms, 'form') + def testJSON(self): with boddle(json={'name':'derek'}): self.assertEqual(bottle.request.json['name'], 'derek') From 299a425b23a4302432ac29780be340ccd62772b9 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sun, 17 Feb 2019 12:33:53 +0100 Subject: [PATCH 4/4] added argument environ to prefill the bottle.request.environ with data. This can be used to add extra argument 'forms' --- boddle.py | 4 ++-- tests.py | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/boddle.py b/boddle.py index c9d7d24..ceb7d28 100644 --- a/boddle.py +++ b/boddle.py @@ -21,9 +21,9 @@ class boddle(object): - def __init__(self, params={}, path=None, method=None, headers=None, json=None, url=None, body=None, query={}, **extras): + def __init__(self, params={}, path=None, method=None, headers=None, json=None, url=None, body=None, query={}, environ=None, **extras): - environ = {} + environ = environ or {} self.extras = extras self.extra_orig = {} self.orig_app_reader = bottle.BaseRequest.app diff --git a/tests.py b/tests.py index ddf2398..a80fd7e 100644 --- a/tests.py +++ b/tests.py @@ -48,6 +48,7 @@ def testExtraStuff(self): self.assertFalse(hasattr(bottle.request,'extra')) def testExtraAsDict(self): + a = object() extras = {'extra': 'woot'} with boddle(**extras): self.assertEqual(bottle.request.extra, 'woot') @@ -57,9 +58,15 @@ def testExtraAsDict(self): self.assertEqual(bottle.request.extra, 'woot') self.assertFalse(hasattr(bottle.request,'extra')) - def testExtraForms(self): - with boddle(forms='form'): - self.assertEqual(bottle.request.forms, 'form') + def testEnviron(self): + environ = {'bottle.request.forms': 'formdata'} + with boddle(environ=environ): + self.assertTrue(hasattr(bottle.request, 'forms')) + self.assertEqual(bottle.request.forms, 'formdata') + with boddle(environ={'bottle.request.forms': 'not formdata'}): + self.assertEqual(bottle.request.forms, 'not formdata') + self.assertTrue(hasattr(bottle.request, 'forms')) + self.assertEqual(bottle.request.forms, 'formdata') def testJSON(self): with boddle(json={'name':'derek'}):