diff venv/lib/python2.7/site-packages/github/tests/ExposeAllAttributes.py @ 0:d67268158946 draft

planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author bcclaywell
date Mon, 12 Oct 2015 17:43:33 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/venv/lib/python2.7/site-packages/github/tests/ExposeAllAttributes.py	Mon Oct 12 17:43:33 2015 -0400
@@ -0,0 +1,160 @@
+# -*- coding: utf-8 -*-
+
+# ########################## Copyrights and license ############################
+#                                                                              #
+# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net>                 #
+#                                                                              #
+# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/          #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+# ##############################################################################
+
+import Framework
+
+
+class ExposeAllAttributes(Framework.TestCase):
+    def testAllClasses(self):
+        authenticatedUser = self.g.get_user()
+        namedUser = self.g.get_user("nvie")
+        repository = authenticatedUser.get_repo("PyGithub")
+        organization = self.g.get_organization("BeaverSoftware")
+        plan = authenticatedUser.plan
+        branch = repository.get_branch("master")
+        commit = repository.get_commit("1292bf0e22c796e91cc3d6e24b544aece8c21f2a")
+        commitStats = commit.stats
+        commitStatus = commit.get_statuses()[0]
+        milestone = repository.get_milestone(17)
+        gist = self.g.get_gist("149016")
+        gistComment = gist.get_comment(4565)
+        gistFile = gist.files[".gitignore"]
+        gistHistoryState = gist.history[0]
+        gitCommit = repository.get_git_commit("be37b8a7f3a68631c32672dcd84d9eba27438ee6")
+        gitAuthor = gitCommit.author
+        gitTree = repository.get_git_tree("6f7c2d8c66d78863f7b91792deaead619799a1ce")
+        gitTreeElement = gitTree.tree[0]
+        gitBlob = repository.get_git_blob("681fb61f1761743a02f5c790f1c762cbfe8cfad1")
+        gitRef = repository.get_git_ref("tags/v1.17.0")
+        gitObject = gitRef.object
+        issue = repository.get_issue(188)
+        issueComment = issue.get_comment(22686536)
+        issueEvent = issue.get_events()[0]
+        issuePullRequest = issue.pull_request
+        gitignoreTemplate = self.g.get_gitignore_template("Python")
+        team = organization.get_team(141487)
+        label = repository.get_label("Bug")
+        pullRequest = repository.get_pull(31)
+        pullRequestComment = pullRequest.get_review_comment(1580134)
+        pullRequestPart = pullRequest.base
+        file = pullRequest.get_files()[0]
+        commitComment = repository.get_comment(3630301)
+        status = self.g.get_api_status()
+        statusMessage = self.g.get_last_api_status_message()
+        rateLimit = self.g.get_rate_limit()
+        rate = rateLimit.rate
+        hook = repository.get_hooks()[0]
+        hookResponse = hook.last_response
+        hookDescription = self.g.get_hooks()[0]
+        comparison = repository.compare("master", "develop")
+        contentFile = repository.get_file_contents("README.rst")
+        permissions = repository.permissions
+        event = repository.get_events()[0]
+        notification = authenticatedUser.get_notification("8406712")
+        notificationSubject = notification.subject
+
+        missingAttributes = self.gatherMissingAttributes([
+            authenticatedUser,
+            # authorization,  # Security issue if put as-is in ReplayData
+            # authorizationApplication,  # Security issue if put as-is in ReplayData
+            branch,
+            commit,
+            commitComment,
+            commitStats,
+            commitStatus,
+            comparison,
+            contentFile,
+            # download,  # Deprecated: https://github.com/blog/1302-goodbye-uploads
+            event,
+            file,
+            gist,
+            gistComment,
+            gistFile,
+            gistHistoryState,
+            gitAuthor,
+            gitBlob,
+            gitCommit,
+            gitignoreTemplate,
+            gitObject,
+            gitRef,
+            # gitTag,
+            gitTree,
+            gitTreeElement,
+            hook,
+            hookDescription,
+            hookResponse,
+            issue,
+            issueComment,
+            issueEvent,
+            issuePullRequest,
+            label,
+            milestone,
+            namedUser,
+            notification,
+            notificationSubject,
+            organization,
+            permissions,
+            plan,
+            pullRequest,
+            pullRequestComment,
+            # pullRequestMergeStatus,  # Only obtained when merging a pull request through the API
+            pullRequestPart,
+            rate,
+            rateLimit,
+            repository,
+            # repositoryKey,  # Security issue if put as-is in ReplayData
+            status,
+            statusMessage,
+            # tag,
+            team,
+            # userKey,  # Security issue if put as-is in ReplayData
+        ])
+
+        for className, attributesMissingInClass in sorted(missingAttributes.iteritems()):
+            for attrName, value in sorted(attributesMissingInClass.iteritems()):
+                print className, attrName, "->", repr(value)
+
+        self.assertEqual(sum(len(attrs) for attrs in missingAttributes.values()), 0)
+
+    def findMissingAttributes(self, obj):
+        if hasattr(obj, "update"):
+            obj.update()
+        className = obj.__class__.__name__
+        missingAttributes = {}
+        for attribute in obj.raw_data:
+            if attribute != "_links":
+                if not hasattr(obj, attribute):
+                    missingAttributes[attribute] = obj.raw_data[attribute]
+        return (className, missingAttributes)
+
+    def gatherMissingAttributes(self, objs):
+        allMissingAttributes = dict()
+
+        for obj in objs:
+            className, attributesMissingInClass = self.findMissingAttributes(obj)
+            if len(attributesMissingInClass) > 0:
+                if className not in allMissingAttributes:
+                    allMissingAttributes[className] = dict()
+                allMissingAttributes[className].update(attributesMissingInClass)
+
+        return allMissingAttributes