Source

bloodhound-mq / t355 / t355_r1437383_trac_test_perm.diff

# HG changeset patch
# Parent fe2d7e3af2da7bc7177fd4dd171280a3ef58ec2f
BH Multiproduct #355 : Rewrite Trac test cases for default permissions data store

diff -r fe2d7e3af2da bloodhound_multiproduct/tests/perm.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bloodhound_multiproduct/tests/perm.py	Wed Jan 23 17:17:48 2013 -0500
@@ -0,0 +1,83 @@
+# -*- coding: utf-8 -*-
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+"""Tests for Apache(TM) Bloodhound's product permissions subsystem"""
+
+import unittest
+
+from trac import perm
+from trac.tests.perm import DefaultPermissionStoreTestCase
+
+from multiproduct.env import ProductEnvironment
+from tests.env import MultiproductTestCase
+
+
+class ProductDefaultPermissionStoreTestCase(DefaultPermissionStoreTestCase, 
+        MultiproductTestCase):
+
+    def setUp(self):
+        self.global_env = self._setup_test_env()
+        self._upgrade_mp(self.global_env)
+        self._setup_test_log(self.global_env)
+        self._load_product_from_data(self.env, self.default_product)
+        self.env = ProductEnvironment(self.env, self.default_product)
+
+        self.store = perm.DefaultPermissionStore(self.env)
+
+    def test_env_isolation(self):
+        global_env = self.global_env
+        env = self.env
+
+        self._load_product_from_data(self.global_env, 'tp2')
+        env1 = ProductEnvironment(self.global_env, 'tp2')
+
+        global_store = perm.DefaultPermissionStore(global_env)
+        store = perm.DefaultPermissionStore(env)
+        store1 = perm.DefaultPermissionStore(env1)
+
+        global_env.db_transaction.executemany(
+            "INSERT INTO permission VALUES (%s,%s)", 
+            [('dev', 'WIKI_MODIFY'),
+             ('dev', 'REPORT_ADMIN'),
+             ('john', 'dev')])
+        env.db_transaction.executemany(
+            "INSERT INTO permission VALUES (%s,%s)", 
+            [('dev', 'WIKI_VIEW'),
+             ('dev', 'REPORT_VIEW'),
+             ('john', 'dev')])
+        env1.db_transaction.executemany(
+            "INSERT INTO permission VALUES (%s,%s)", 
+            [('dev', 'TICKET_CREATE'),
+             ('dev', 'MILESTONE_VIEW'),
+             ('john', 'dev')])
+
+        self.assertEquals(['REPORT_ADMIN', 'WIKI_MODIFY'],
+                          sorted(global_store.get_user_permissions('john')))
+        self.assertEquals(['REPORT_VIEW', 'WIKI_VIEW'],
+                          sorted(store.get_user_permissions('john')))
+        self.assertEquals(['MILESTONE_VIEW', 'TICKET_CREATE'],
+                          sorted(store1.get_user_permissions('john')))
+
+
+def test_suite():
+    return unittest.makeSuite(ProductDefaultPermissionStoreTestCase,'test')
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')
+
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.