small formatting change for clarity
[opensuse:python-bugzilla.git] / selftest.py
1 #!/usr/bin/python
2 # Simple self-test of the bugzilla module
3
4 # Copyright (C) 2007 Red Hat Inc.
5 # Author: Will Woods <wwoods@redhat.com>
6
7 # This program is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by the
9 # Free Software Foundation; either version 2 of the License, or (at your
10 # option) any later version.  See http://www.gnu.org/copyleft/gpl.html for
11 # the full text of the license.
12
13 from bugzilla import Bugzilla
14 import os, glob, sys
15
16 def find_firefox_cookiefile():
17     cookieglob = os.path.expanduser('~/.mozilla/firefox/default.*/cookies.txt')
18     cookiefiles = glob.glob(cookieglob)
19     if cookiefiles:
20         # TODO return whichever is newest
21         return cookiefiles[0]
22
23 def selftest(user='',password=''):
24     url = 'https://bugzilla.redhat.com/xmlrpc.cgi'
25     public_bug = 1
26     private_bug = 250666
27     query = {'product':'Fedora',
28              'component':'kernel',
29              'version':'devel',
30              'long_desc':'wireless'}
31     
32     print "Woo, welcome to the bugzilla.py self-test."
33     print "Using bugzilla at " + url
34     if user and password:
35         print 'Using username "%s", password "%s"' % (user,password)
36         b = Bugzilla(url=url,user=user,password=password)
37     else:
38         cookies = find_firefox_cookiefile()
39         if not cookies:
40             print "Could not find any cookies for that URL!"
41             print "Log in with firefox or give me a username/password."
42             sys.exit(1)
43         print "Reading cookies from " + cookies
44         b = Bugzilla(url=url,cookies=cookies)
45     print "Reading product list"
46     print b.getproducts()
47     print
48
49     print "Reading public bug (#%i)" % public_bug
50     print b.getbug(public_bug)
51     print
52
53     print "Reading private bug (#%i)" % private_bug
54     try:
55         print b.getbug(private_bug)
56     except xmlrpclib.Fault, e:
57         if 'NotPermitted' in e.faultString:
58             print "Failed: Not authorized."
59         else:
60             print "Failed: Unknown XMLRPC error: %s"  % e
61     q_msg = "%s %s %s %s" % (query['product'],query['component'],
62                              query['version'],query['long_desc'])
63     print
64
65     print "Querying %s bugs" % q_msg
66     bugs = b.query(query)
67     print "%s bugs found." % len(bugs)
68     for bug in bugs:
69         print "Bug %s" % bug
70     print
71
72     print "Awesome. We're done."
73
74 if __name__ == '__main__':
75     user = ''
76     password = ''
77     if len(sys.argv) > 2:
78         (user,password) = sys.argv[1:3]
79     selftest(user,password)