You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by ju...@apache.org on 2013/02/19 10:07:09 UTC

svn commit: r1447640 - in /incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct: multiproduct/env.py tests/admin/ tests/admin/__init__.py tests/admin/console-tests.txt tests/admin/console.py

Author: jure
Date: Tue Feb 19 09:07:08 2013
New Revision: 1447640

URL: http://svn.apache.org/r1447640
Log:
#355, admin console tests, patch t355_r1446579_trac_test_admin_console.diff applied (from Olemis)


Added:
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/__init__.py
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console-tests.txt
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console.py
Modified:
    incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py

Modified: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py?rev=1447640&r1=1447639&r2=1447640&view=diff
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py (original)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/multiproduct/env.py Tue Feb 19 09:07:08 2013
@@ -419,7 +419,7 @@ class ProductEnvironment(Component, Comp
         """
         return BloodhoundConnectionWrapper(self.parent.get_db_cnx(), self)
 
-    @lazy
+    @property
     def db_exc(self):
         """Return an object (typically a module) containing all the
         backend-specific exception types as attributes, named
@@ -435,7 +435,7 @@ class ProductEnvironment(Component, Comp
                 ...
         """
         # exception types same as in global environment
-        return self.parent.db_exc()
+        return self.parent.db_exc
 
     def with_transaction(self, db=None):
         """Decorator for transaction functions :deprecated:

Added: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/__init__.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/__init__.py?rev=1447640&view=auto
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/__init__.py (added)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/__init__.py Tue Feb 19 09:07:08 2013
@@ -0,0 +1,20 @@
+
+#  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 administration in product environments"""
+

Added: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console-tests.txt
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console-tests.txt?rev=1447640&view=auto
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console-tests.txt (added)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console-tests.txt Tue Feb 19 09:07:08 2013
@@ -0,0 +1,1024 @@
+===== test_help_ok =====
+trac-admin - The Trac Administration Console %(version)s
+
+Usage: trac-admin </path/to/projenv> [command [subcommand] [option ...]]
+
+Invoking trac-admin without command starts interactive mode.
+
+help                 Show documentation
+initenv              Create and initialize a new environment
+attachment add       Attach a file to a resource
+attachment export    Export an attachment from a resource to a file or stdout
+attachment list      List attachments of a resource
+attachment remove    Remove an attachment from a resource
+changeset added      Notify trac about changesets added to a repository
+changeset modified   Notify trac about changesets modified in a repository
+component add        Add a new component
+component chown      Change component ownership
+component list       Show available components
+component remove     Remove/uninstall a component
+component rename     Rename a component
+config get           Get the value of the given option in "trac.ini"
+config remove        Remove the specified option from "trac.ini"
+config set           Set the value for the given option in "trac.ini"
+deploy               Extract static resources from Trac and all plugins
+hotcopy              Make a hot backup copy of an environment
+milestone add        Add milestone
+milestone completed  Set milestone complete date
+milestone due        Set milestone due date
+milestone list       Show milestones
+milestone remove     Remove milestone
+milestone rename     Rename milestone
+permission add       Add a new permission rule
+permission export    Export permission rules to a file or stdout as CSV
+permission import    Import permission rules from a file or stdin as CSV
+permission list      List permission rules
+permission remove    Remove a permission rule
+priority add         Add a priority value option
+priority change      Change a priority value
+priority list        Show possible ticket priorities
+priority order       Move a priority value up or down in the list
+priority remove      Remove a priority value
+repository add       Add a source repository
+repository alias     Create an alias for a repository
+repository list      List source repositories
+repository remove    Remove a source repository
+repository resync    Re-synchronize trac with repositories
+repository set       Set an attribute of a repository
+repository sync      Resume synchronization of repositories
+resolution add       Add a resolution value option
+resolution change    Change a resolution value
+resolution list      Show possible ticket resolutions
+resolution order     Move a resolution value up or down in the list
+resolution remove    Remove a resolution value
+session add          Create a session for the given sid
+session delete       Delete the session of the specified sid
+session list         List the name and email for the given sids
+session purge        Purge all anonymous sessions older than the given age
+session set          Set the name or email attribute of the given sid
+severity add         Add a severity value option
+severity change      Change a severity value
+severity list        Show possible ticket severities
+severity order       Move a severity value up or down in the list
+severity remove      Remove a severity value
+ticket remove        Remove ticket
+ticket_type add      Add a ticket type
+ticket_type change   Change a ticket type
+ticket_type list     Show possible ticket types
+ticket_type order    Move a ticket type up or down in the list
+ticket_type remove   Remove a ticket type
+upgrade              Upgrade database to current version
+version add          Add version
+version list         Show versions
+version remove       Remove version
+version rename       Rename version
+version time         Set version date
+wiki dump            Export wiki pages to files named by title
+wiki export          Export wiki page to file or stdout
+wiki import          Import wiki page from file or stdin
+wiki list            List wiki pages
+wiki load            Import wiki pages from files
+wiki remove          Remove wiki page
+wiki rename          Rename wiki page
+wiki replace         Replace the content of wiki pages from files (DANGEROUS!)
+wiki upgrade         Upgrade default wiki pages to current version
+===== test_attachment_list_empty =====
+
+Name  Size  Author  Date  Description
+-------------------------------------
+
+===== test_config_get =====
+Test project
+===== test_config_set =====
+===== test_config_remove =====
+===== test_permission_list_ok =====
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_VIEW
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE, 
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_add_one_action_ok =====
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_VIEW
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+test_user      WIKI_VIEW
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_add_multiple_actions_ok =====
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_VIEW
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+test_user      FILE_VIEW
+test_user      LOG_VIEW
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_add_already_exists =====
+The user anonymous already has permission WIKI_VIEW.
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_CREATE
+anonymous      WIKI_MODIFY
+anonymous      WIKI_VIEW
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_remove_one_action_ok =====
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_VIEW
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_remove_multiple_actions_ok =====
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_VIEW
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_remove_all_actions_for_user =====
+
+User           Action
+----------------------------
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_remove_action_for_all_users =====
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_VIEW
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_permission_remove_unknown_user =====
+Error: Cannot remove permission TICKET_VIEW for user joe.
+===== test_permission_remove_action_not_granted =====
+Error: Cannot remove permission TICKET_CREATE for user anonymous.
+===== test_permission_export_ok =====
+anonymous,BROWSER_VIEW,CHANGESET_VIEW,FILE_VIEW,LOG_VIEW,MILESTONE_VIEW,REPORT_SQL_VIEW,REPORT_VIEW,ROADMAP_VIEW,SEARCH_VIEW,TICKET_VIEW,TIMELINE_VIEW,WIKI_VIEW
+authenticated,TICKET_CREATE,TICKET_MODIFY,WIKI_CREATE,WIKI_MODIFY
+===== test_permission_import_ok =====
+
+User           Action
+------------------------------
+anonymous      BROWSER_VIEW
+anonymous      CHANGESET_VIEW
+anonymous      FILE_VIEW
+anonymous      LOG_VIEW
+anonymous      MILESTONE_VIEW
+anonymous      REPORT_SQL_VIEW
+anonymous      REPORT_VIEW
+anonymous      ROADMAP_VIEW
+anonymous      SEARCH_VIEW
+anonymous      TICKET_VIEW
+anonymous      TIMELINE_VIEW
+anonymous      WIKI_VIEW
+authenticated  TICKET_CREATE
+authenticated  TICKET_MODIFY
+authenticated  WIKI_CREATE
+authenticated  WIKI_MODIFY
+test_userɐ     TICKET_VIEW
+test_userɐ     WIKI_VIEW
+
+
+Available actions:
+ BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW,
+ LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE,
+ MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT,
+ PERMISSION_REVOKE, PRODUCT_ADMIN, PRODUCT_CREATE, PRODUCT_DELETE,
+ PRODUCT_MODIFY, PRODUCT_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE,
+ REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW,
+ SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_BATCH_MODIFY,
+ TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_COMMENT,
+ TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW,
+ TRAC_ADMIN, VERSIONCONTROL_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE,
+ WIKI_MODIFY, WIKI_RENAME, WIKI_VIEW
+
+===== test_component_list_ok =====
+
+Name        Owner
+--------------------
+component1  somebody
+component2  somebody
+
+===== test_component_add_ok =====
+
+Name           Owner
+-----------------------
+component1     somebody
+component2     somebody
+new_component  new_user
+
+===== test_component_add_error_already_exists =====
+IntegrityError: [...]
+===== test_component_rename_ok =====
+
+Name          Owner
+----------------------
+changed_name  somebody
+component2    somebody
+
+===== test_component_rename_error_bad_component =====
+ResourceNotFound: Component bad_component does not exist.
+===== test_component_rename_error_bad_new_name =====
+IntegrityError: [...]
+===== test_component_chown_ok =====
+
+Name        Owner
+-------------------------
+component1  somebody
+component2  changed_owner
+
+===== test_component_chown_error_bad_component =====
+ResourceNotFound: Component bad_component does not exist.
+===== test_component_remove_ok =====
+
+Name        Owner
+--------------------
+component2  somebody
+
+===== test_component_remove_error_bad_component =====
+ResourceNotFound: Component bad_component does not exist.
+===== test_ticket_type_list_ok =====
+
+Possible Values
+---------------
+defect
+enhancement
+task
+
+===== test_ticket_type_add_ok =====
+
+Possible Values
+---------------
+defect
+enhancement
+task
+new_type
+
+===== test_ticket_type_add_error_already_exists =====
+IntegrityError: [...]
+===== test_ticket_type_change_ok =====
+
+Possible Values
+---------------
+bug
+enhancement
+task
+
+===== test_ticket_type_change_error_bad_type =====
+ResourceNotFound: ticket_type bad_type does not exist.
+===== test_ticket_type_change_error_bad_new_name =====
+IntegrityError: [...]
+===== test_ticket_type_remove_ok =====
+
+Possible Values
+---------------
+defect
+enhancement
+
+===== test_ticket_type_remove_error_bad_type =====
+ResourceNotFound: ticket_type bad_type does not exist.
+===== test_ticket_type_order_down_ok =====
+
+Possible Values
+---------------
+enhancement
+defect
+task
+
+===== test_ticket_type_order_up_ok =====
+
+Possible Values
+---------------
+enhancement
+defect
+task
+
+===== test_ticket_type_order_error_bad_type =====
+ResourceNotFound: ticket_type bad_type does not exist.
+===== test_priority_list_ok =====
+
+Possible Values
+---------------
+blocker
+critical
+major
+minor
+trivial
+
+===== test_priority_add_ok =====
+
+Possible Values
+---------------
+blocker
+critical
+major
+minor
+trivial
+new_priority
+
+===== test_priority_add_many_ok =====
+
+Possible Values
+---------------
+blocker
+critical
+major
+minor
+trivial
+p0
+p1
+p2
+p3
+p4
+p5
+p6
+p7
+p8
+p9
+p10
+
+===== test_priority_add_error_already_exists =====
+IntegrityError: [...]
+===== test_priority_change_ok =====
+
+Possible Values
+---------------
+blocker
+critical
+normal
+minor
+trivial
+
+===== test_priority_change_error_bad_priority =====
+ResourceNotFound: priority bad_priority does not exist.
+===== test_priority_change_error_bad_new_name =====
+IntegrityError: [...]
+===== test_priority_remove_ok =====
+
+Possible Values
+---------------
+blocker
+critical
+minor
+trivial
+
+===== test_priority_remove_error_bad_priority =====
+ResourceNotFound: priority bad_priority does not exist.
+===== test_priority_order_down_ok =====
+
+Possible Values
+---------------
+critical
+blocker
+major
+minor
+trivial
+
+===== test_priority_order_up_ok =====
+
+Possible Values
+---------------
+critical
+blocker
+major
+minor
+trivial
+
+===== test_priority_order_error_bad_priority =====
+ResourceNotFound: priority bad_priority does not exist.
+===== test_severity_list_ok =====
+
+Possible Values
+---------------
+
+===== test_severity_add_ok =====
+
+Possible Values
+---------------
+new_severity
+
+===== test_severity_add_error_already_exists =====
+IntegrityError: [...]
+===== test_severity_change_ok =====
+
+Possible Values
+----------------
+end-of-the-world
+
+===== test_severity_change_error_bad_severity =====
+ResourceNotFound: severity bad_severity does not exist.
+===== test_severity_change_error_bad_new_name =====
+IntegrityError: [...]
+===== test_severity_remove_ok =====
+
+Possible Values
+---------------
+
+===== test_severity_remove_error_bad_severity =====
+ResourceNotFound: severity bad_severity does not exist.
+===== test_severity_order_down_ok =====
+
+Possible Values
+---------------
+bar
+foo
+
+===== test_severity_order_up_ok =====
+
+Possible Values
+---------------
+bar
+foo
+
+===== test_severity_order_error_bad_severity =====
+ResourceNotFound: severity bad_severity does not exist.
+===== test_version_list_ok =====
+
+Name  Time
+----------
+2.0
+1.0
+
+===== test_version_add_ok =====
+
+Name  Time
+----------------
+2.0
+1.0
+9.9   2004-01-11
+
+===== test_version_add_error_already_exists =====
+IntegrityError: [...]
+===== test_version_rename_ok =====
+
+Name  Time
+----------
+9.9
+2.0
+
+===== test_version_rename_error_bad_version =====
+ResourceNotFound: Version bad_version does not exist.
+===== test_version_time_ok =====
+
+Name  Time
+----------------
+1.0
+2.0   2004-01-11
+
+===== test_version_time_unset_ok =====
+
+Name  Time
+----------
+2.0
+1.0
+
+===== test_version_time_error_bad_version =====
+ResourceNotFound: Version bad_version does not exist.
+===== test_version_remove_ok =====
+
+Name  Time
+----------
+2.0
+
+===== test_version_remove_error_bad_version =====
+ResourceNotFound: Version bad_version does not exist.
+===== test_milestone_list_ok =====
+
+Name        Due  Completed
+--------------------------
+milestone1
+milestone2
+milestone3
+milestone4
+
+===== test_milestone_add_ok =====
+
+Name           Due         Completed
+------------------------------------
+new_milestone  2004-01-11
+milestone1
+milestone2
+milestone3
+milestone4
+
+===== test_milestone_add_utf8_ok =====
+
+Name        Due         Completed
+---------------------------------
+©tat_final  2004-01-11
+milestone1
+milestone2
+milestone3
+milestone4
+
+===== test_milestone_add_error_already_exists =====
+IntegrityError: [...]
+===== test_milestone_rename_ok =====
+
+Name               Due  Completed
+---------------------------------
+changed_milestone
+milestone2
+milestone3
+milestone4
+
+===== test_milestone_rename_error_bad_milestone =====
+ResourceNotFound: Milestone bad_milestone does not exist.
+===== test_milestone_due_ok =====
+
+Name        Due         Completed
+---------------------------------
+milestone2  2004-01-11
+milestone1
+milestone3
+milestone4
+
+===== test_milestone_due_unset_ok =====
+
+Name        Due  Completed
+--------------------------
+milestone1
+milestone2
+milestone3
+milestone4
+
+===== test_milestone_due_error_bad_milestone =====
+ResourceNotFound: Milestone bad_milestone does not exist.
+===== test_milestone_completed_ok =====
+
+Name        Due  Completed
+------------------------------------
+milestone2       2004-01-11 00:00:00
+milestone1
+milestone3
+milestone4
+
+===== test_milestone_completed_error_bad_milestone =====
+ResourceNotFound: Milestone bad_milestone does not exist.
+===== test_milestone_remove_ok =====
+
+Name        Due  Completed
+--------------------------
+milestone1
+milestone2
+milestone4
+
+===== test_milestone_remove_error_bad_milestone =====
+ResourceNotFound: Milestone bad_milestone does not exist.
+===== test_backslash_use_ok =====
+
+Name  Time
+----------
+\
+2.0
+1.0
+
+===== test_session_list_no_sessions =====
+
+SID  Auth  Last Visit  Name  Email
+----------------------------------
+
+===== test_session_list_authenticated =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name00  1     2010-01-01  val00  val00
+name01  1     2010-01-01  val01  val01
+name02  1     2010-01-01  val02  val02
+name03  1     2010-01-01  val03  val03
+name04  1     2010-01-01  val04  val04
+name05  1     2010-01-01  val05  val05
+name06  1     2010-01-01  val06  val06
+name07  1     2010-01-01  val07  val07
+name08  1     2010-01-01  val08  val08
+name09  1     2010-01-01  val09  val09
+
+===== test_session_list_anonymous =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name10  0     2010-01-01  val10  val10
+name11  0     2010-01-01  val11  val11
+name12  0     2010-01-01  val12  val12
+name13  0     2010-01-01  val13  val13
+name14  0     2010-01-01  val14  val14
+name15  0     2010-01-01  val15  val15
+name16  0     2010-01-01  val16  val16
+name17  0     2010-01-01  val17  val17
+name18  0     2010-01-01  val18  val18
+name19  0     2010-01-01  val19  val19
+
+===== test_session_list_all =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name00  1     2010-01-01  val00  val00
+name01  1     2010-01-01  val01  val01
+name02  1     2010-01-01  val02  val02
+name03  1     2010-01-01  val03  val03
+name04  1     2010-01-01  val04  val04
+name05  1     2010-01-01  val05  val05
+name06  1     2010-01-01  val06  val06
+name07  1     2010-01-01  val07  val07
+name08  1     2010-01-01  val08  val08
+name09  1     2010-01-01  val09  val09
+name10  0     2010-01-01  val10  val10
+name11  0     2010-01-01  val11  val11
+name12  0     2010-01-01  val12  val12
+name13  0     2010-01-01  val13  val13
+name14  0     2010-01-01  val14  val14
+name15  0     2010-01-01  val15  val15
+name16  0     2010-01-01  val16  val16
+name17  0     2010-01-01  val17  val17
+name18  0     2010-01-01  val18  val18
+name19  0     2010-01-01  val19  val19
+
+===== test_session_list_authenticated_sid =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name00  1     2010-01-01  val00  val00
+
+===== test_session_list_anonymous_sid =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name10  0     2010-01-01  val10  val10
+
+===== test_session_list_missing_sid =====
+
+SID  Auth  Last Visit  Name  Email
+----------------------------------
+
+===== test_session_add_missing_sid =====
+Error: Invalid arguments
+
+session add <sid[:0|1]> [name] [email]
+
+    Create a session for the given sid
+
+    Populates the name and email attributes for the given session. Adding a
+    suffix ':0' to the sid makes the session unauthenticated, and a suffix ':1'
+    makes it authenticated (the default if no suffix is specified).
+
+===== test_session_add_duplicate_sid =====
+Error: Session 'name00' already exists
+===== test_session_add_sid_all =====
+
+SID   Auth  Last Visit  Name  Email
+----------------------------------------------
+john  1     %(today)s  John  john@example.org
+
+===== test_session_add_sid =====
+
+SID   Auth  Last Visit  Name  Email
+-----------------------------------
+john  1     %(today)s
+
+===== test_session_add_sid_name =====
+
+SID   Auth  Last Visit  Name  Email
+-----------------------------------
+john  1     %(today)s  John
+
+===== test_session_set_attr_name =====
+
+SID     Auth  Last Visit  Name  Email
+-------------------------------------
+name00  1     2010-01-01  JOHN  val00
+
+===== test_session_set_attr_email =====
+
+SID     Auth  Last Visit  Name   Email
+-------------------------------------------------
+name00  1     2010-01-01  val00  JOHN@EXAMPLE.ORG
+
+===== test_session_set_attr_missing_attr =====
+Error: Invalid arguments
+
+session set <name|email> <sid[:0|1]> <value>
+
+    Set the name or email attribute of the given sid
+
+    An sid suffix ':0' operates on an unauthenticated session with the given
+    sid, and a suffix ':1' on an authenticated session (the default).
+
+===== test_session_set_attr_missing_value =====
+Error: Invalid arguments
+
+session set <name|email> <sid[:0|1]> <value>
+
+    Set the name or email attribute of the given sid
+
+    An sid suffix ':0' operates on an unauthenticated session with the given
+    sid, and a suffix ':1' on an authenticated session (the default).
+
+===== test_session_set_attr_missing_sid =====
+Error: Invalid arguments
+
+session set <name|email> <sid[:0|1]> <value>
+
+    Set the name or email attribute of the given sid
+
+    An sid suffix ':0' operates on an unauthenticated session with the given
+    sid, and a suffix ':1' on an authenticated session (the default).
+
+===== test_session_set_attr_nonexistent_sid =====
+Error: Session 'john' not found
+===== test_session_delete_sid =====
+
+SID  Auth  Last Visit  Name  Email
+----------------------------------
+
+===== test_session_delete_missing_params =====
+===== test_session_delete_anonymous =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name00  1     2010-01-01  val00  val00
+name01  1     2010-01-01  val01  val01
+name02  1     2010-01-01  val02  val02
+name03  1     2010-01-01  val03  val03
+name04  1     2010-01-01  val04  val04
+name05  1     2010-01-01  val05  val05
+name06  1     2010-01-01  val06  val06
+name07  1     2010-01-01  val07  val07
+name08  1     2010-01-01  val08  val08
+name09  1     2010-01-01  val09  val09
+
+===== test_session_delete_multiple_sids =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name04  1     2010-01-01  val04  val04
+name05  1     2010-01-01  val05  val05
+name06  1     2010-01-01  val06  val06
+name07  1     2010-01-01  val07  val07
+name08  1     2010-01-01  val08  val08
+name09  1     2010-01-01  val09  val09
+name10  0     2010-01-01  val10  val10
+name11  0     2010-01-01  val11  val11
+name12  0     2010-01-01  val12  val12
+name13  0     2010-01-01  val13  val13
+name14  0     2010-01-01  val14  val14
+name15  0     2010-01-01  val15  val15
+name16  0     2010-01-01  val16  val16
+name17  0     2010-01-01  val17  val17
+name18  0     2010-01-01  val18  val18
+name19  0     2010-01-01  val19  val19
+
+===== test_session_purge_all =====
+
+SID     Name   Email
+--------------------
+name00  val00  val00
+name01  val01  val01
+name02  val02  val02
+name03  val03  val03
+name04  val04  val04
+name05  val05  val05
+name06  val06  val06
+name07  val07  val07
+name08  val08  val08
+name09  val09  val09
+
+===== test_session_purge_age =====
+
+SID     Auth  Last Visit  Name   Email
+--------------------------------------
+name00  1     2010-01-01  val00  val00
+name01  1     2010-01-02  val01  val01
+name02  1     2010-01-03  val02  val02
+name03  1     2010-01-04  val03  val03
+name04  1     2010-01-05  val04  val04
+name05  1     2010-01-06  val05  val05
+name06  1     2010-01-07  val06  val06
+name07  1     2010-01-08  val07  val07
+name08  1     2010-01-09  val08  val08
+name09  1     2010-01-10  val09  val09
+name11  0     2010-01-12  val11  val11
+name12  0     2010-01-13  val12  val12
+name13  0     2010-01-14  val13  val13
+name14  0     2010-01-15  val14  val14
+name15  0     2010-01-16  val15  val15
+name16  0     2010-01-17  val16  val16
+name17  0     2010-01-18  val17  val17
+name18  0     2010-01-19  val18  val18
+name19  0     2010-01-20  val19  val19
+

Added: incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console.py?rev=1447640&view=auto
==============================================================================
--- incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console.py (added)
+++ incubator/bloodhound/branches/bep_0003_multiproduct/bloodhound_multiproduct/tests/admin/console.py Tue Feb 19 09:07:08 2013
@@ -0,0 +1,99 @@
+
+#  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 admin console in product environments"""
+
+import os.path
+import sys
+from StringIO import StringIO
+import unittest
+
+from trac.admin.tests.console import load_expected_results, \
+        STRIP_TRAILING_SPACE, TracadminTestCase
+
+from multiproduct.env import ProductEnvironment
+from tests.env import MultiproductTestCase
+
+class ProductTracadminTestCase(TracadminTestCase, MultiproductTestCase):
+
+    expected_results = load_expected_results(
+            os.path.join(os.path.split(__file__)[0], 'console-tests.txt'),
+            '===== (test_[^ ]+) =====')
+
+    @property
+    def env(self):
+        env = getattr(self, '_env', None)
+        if env is None:
+            self.global_env = self._setup_test_env(
+                    enable=('trac.*', 'multiproduct.*'), 
+                    disable=('trac.tests.*',),
+                )
+            self._upgrade_mp(self.global_env)
+            self._setup_test_log(self.global_env)
+            self._load_product_from_data(self.global_env, self.default_product)
+            self._env = env = ProductEnvironment(
+                    self.global_env, self.default_product)
+            self._load_default_data(env)
+        return env
+
+    @env.setter
+    def env(self, value):
+        pass
+
+    def tearDown(self):
+        self.global_env.reset_db()
+        self.global_env = self._env = None
+
+    def _execute(self, cmd, strip_trailing_space=True, input=None):
+        _in = sys.stdin
+        _err = sys.stderr
+        _out = sys.stdout
+        try:
+            if input:
+                sys.stdin = StringIO(input.encode('utf-8'))
+                sys.stdin.encoding = 'utf-8' # fake input encoding
+            sys.stderr = sys.stdout = out = StringIO()
+            out.encoding = 'utf-8' # fake output encoding
+            retval = None
+            try:
+                retval = self._admin.onecmd(cmd)
+            except SystemExit:
+                pass
+            value = out.getvalue()
+            if isinstance(value, str): # reverse what print_listing did
+                value = value.decode('utf-8')
+            if retval != 0:
+                self.env.log.debug('trac-admin failure: %s', value)
+            if strip_trailing_space:
+                return retval, STRIP_TRAILING_SPACE.sub('', value)
+            else:
+                return retval, value
+        finally:
+            sys.stdin = _in
+            sys.stderr = _err
+            sys.stdout = _out
+
+
+def test_suite():
+    return unittest.TestSuite([
+            unittest.makeSuite(ProductTracadminTestCase,'test'),
+        ])
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')
+