]> asedeno.scripts.mit.edu Git - bluechips.git/commitdiff
cleaned up and added tests for auth and deleting
authorScott Torborg <scott@crookedmedia.com>
Mon, 9 Nov 2009 03:18:28 +0000 (19:18 -0800)
committerScott Torborg <scott@crookedmedia.com>
Mon, 9 Nov 2009 03:18:28 +0000 (19:18 -0800)
bluechips/config/middleware.py
bluechips/tests/__init__.py
bluechips/tests/functional/test_spend.py
bluechips/tests/functional/test_transfer.py
bluechips/tests/lib/test_permissions.py [new file with mode: 0644]
bluechips/tests/test_models.py [deleted file]

index 9ce8dc94f678cee5a2680017e45cb83d65dd20ee..a5fdaaf1b93d6c358e81ad3992860fd0bd216842 100644 (file)
@@ -43,7 +43,6 @@ def make_app(global_conf, full_stack=True, **app_conf):
     
     # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
     app = authkit.authorize.middleware(app, BlueChipUser())
-    app = DummyAuthenticate(app, app_conf)
     
     # Routing/Session/Cache Middleware
     app = RoutesMiddleware(app, config['routes.map'])
@@ -69,4 +68,5 @@ def make_app(global_conf, full_stack=True, **app_conf):
     static_app = StaticURLParser(config['pylons.paths']['static_files'])
     app = Cascade([static_app, app])
     app = AuthBasicHandler(app, 'BlueChips', authenticate)
+    app = DummyAuthenticate(app, app_conf)
     return app
index 8ce9e3dacbaef9d6656f29ca37e374d04bc12f16..4eadf12630c18d453b1b32a2eb7e0a06cf0ad726 100644 (file)
@@ -33,6 +33,7 @@ def setUpPackage():
     
     u1 = bluechips.model.User(u'root', u'Charlie Root', True)
     u1.email = u'charlie@example.com'
+    u1.password = u'charliepass'
     u2 = bluechips.model.User(u'ben', u'Ben Bitdiddle', True)
     u3 = bluechips.model.User(u'gotta', u'Gotta Lisp', True)
     u4 = bluechips.model.User(u'rich', u'Rich Scheme', True)
index 125ac0649b579f8b0cf7fd78f2c3c4fbe6c1b601..b7884c8113ec8bd915d133b36efd4c708cd3d221 100644 (file)
@@ -55,7 +55,7 @@ class TestSpendController(TestController):
         assert shares[4] == Currency('12.34')
 
 
-    def test_edit(self):
+    def test_edit_and_delete(self):
         user = meta.Session.query(model.User).\
                 filter_by(name=u'Charlie Root').one()
         e = model.Expenditure(user, 53812, u'Lemon bundt cake', None)
@@ -86,6 +86,36 @@ class TestSpendController(TestController):
                 order_by(model.Expenditure.id.desc()).first()
         assert e.description == u'Updated bundt cake'
 
+        response = self.app.get(url_for(controller='spend',
+                                        action='delete',
+                                        id=e.id))
+        response = response.form.submit('delete').follow()
+        response.mustcontain('Expenditure', 'deleted')
+
+    def test_delete_nonexistent(self):
+        self.app.get(url_for(controller='spend',
+                             action='delete',
+                             id=124344),
+                     status=404)
+
+    def test_destroy_nonexistent(self):
+        response = self.app.get(url_for(controller='spend',
+                                        action='edit'))
+        params = self.sample_params.copy()
+        params[token_key] = response.form[token_key].value
+        self.app.post(url_for(controller='spend',
+                              action='destroy',
+                              id=124344), 
+                      params=params,
+                      status=404)
+
+    def test_delete_xsrf_protection(self):
+        self.app.post(url_for(controller='spend',
+                              action='destroy',
+                              id=1),
+                      params={'delete': 'Delete'},
+                      status=403)
+
     def test_edit_zero_value(self):
         user = meta.Session.query(model.User).\
                 filter_by(name=u'Charlie Root').one()
@@ -115,7 +145,7 @@ class TestSpendController(TestController):
     def test_update_nonexistent(self):
         response = self.app.get(url_for(controller='spend',
                                         action='edit'))
-        params = self.sample_post.copy()
+        params = self.sample_params.copy()
         params[token_key] = response.form[token_key].value
         self.app.post(url_for(controller='spend',
                               action='update',
@@ -126,11 +156,11 @@ class TestSpendController(TestController):
     def test_xsrf_protection(self):
         self.app.post(url_for(controller='spend',
                               action='update'),
-                      params=self.sample_post,
+                      params=self.sample_params,
                       status=403)
 
     def test_all_zero_shares_fails(self):
-        params = self.sample_post.copy()
+        params = self.sample_params.copy()
         for ii in range(4):
             params['shares-%d.amount' % ii] = '0'
         v = ExpenditureSchema()
@@ -140,7 +170,7 @@ class TestSpendController(TestController):
             pass
 
     def setUp(self):
-        self.sample_post = {
+        self.sample_params = {
             'spender_id': '1',
             'amount': '44.12',
             'date': '10/5/2008',
index 69eba4668b27fbe4579d3b64d00fb7b28d24b322..2189fc9cb63babdff4623b69d5757f8fd43f0aee 100644 (file)
@@ -40,7 +40,7 @@ class TestTransferController(TestController):
         assert t.date == today
         assert t.description == u'A test transfer from Rich to Ben'
 
-    def test_edit(self):
+    def test_edit_and_delete(self):
         user_rich = meta.Session.query(model.User).\
                 filter_by(name=u'Rich Scheme').one()
         user_ben = meta.Session.query(model.User).\
@@ -72,6 +72,12 @@ class TestTransferController(TestController):
                 order_by(model.Transfer.id.desc()).first()
         assert t.description == u'A new description'
 
+        response = self.app.get(url_for(controller='transfer',
+                                        action='delete',
+                                        id=t.id))
+        response = response.form.submit('delete').follow()
+        response.mustcontain('Transfer', 'deleted')
+
     def test_edit_nonexistent(self):
         response = self.app.get(url_for(controller='transfer',
                                         action='edit',
@@ -102,6 +108,30 @@ class TestTransferController(TestController):
         assert (dict(response.headers)['location'] ==
                 url_for(controller='transfer', action='edit', qualified=True))
 
+    def test_delete_nonexistent(self):
+        self.app.get(url_for(controller='transfer',
+                             action='delete',
+                             id=124244),
+                     status=404)
+
+    def test_destroy_nonexistent(self):
+        response = self.app.get(url_for(controller='transfer',
+                                        action='edit'))
+        params = self.sample_params.copy()
+        params[token_key] = response.form[token_key].value
+        self.app.post(url_for(controller='transfer',
+                              action='destroy',
+                              id=124344), 
+                      params=params,
+                      status=404)
+
+    def test_delete_xsrf_protection(self):
+        self.app.post(url_for(controller='transfer',
+                              action='destroy',
+                              id=1),
+                      params={'delete': 'Delete'},
+                      status=403)
+
     def setUp(self):
         self.sample_params = {
             'debtor_id': '1',
diff --git a/bluechips/tests/lib/test_permissions.py b/bluechips/tests/lib/test_permissions.py
new file mode 100644 (file)
index 0000000..e4b165b
--- /dev/null
@@ -0,0 +1,9 @@
+from unittest import TestCase
+from bluechips.lib import permissions
+
+class TestReorderingSettle(TestCase):
+    def test_authenticate(self):
+        assert permissions.authenticate({}, u'root', u'charliepass')
+        assert not permissions.authenticate({}, u'root', u'blah')
+        assert not permissions.authenticate({}, u'blah', u'charliepass')
+        assert not permissions.authenticate({}, u'blah', u'blah')
diff --git a/bluechips/tests/test_models.py b/bluechips/tests/test_models.py
deleted file mode 100644 (file)
index e69de29..0000000