1+ import os
2+ import unittest
3+
4+ import tableauserverclient as TSC
5+
6+ class SignInSignOutSmokeTest (unittest .TestCase ):
7+
8+ def setUp (self ):
9+ self .username = os .environ .get ('TABLEAU_USERNAME' , None )
10+ self .server = os .environ .get ('TABLEAU_SERVER' , None )
11+ self .password = os .environ .get ('TABLEAU_PASSWORD' , None )
12+ self .site_id = os .environ .get ('TABLEAU_SITE_ID' , '' )
13+
14+ if not (self .username and self .server and self .password ):
15+ raise unittest .SkipTest ("Environment variables must be set when run from inside UnitTest" )
16+
17+
18+ def test_sign_in_sign_out (self ):
19+
20+ authz = TSC .TableauAuth (self .username , self .password )
21+ server = TSC .Server (self .server )
22+
23+ server .auth .sign_in (authz )
24+ server .auth .sign_out ()
25+
26+ def test_sign_in_get_sign_out (self ):
27+
28+ authz = TSC .TableauAuth (self .username , self .password )
29+ server = TSC .Server (self .server )
30+
31+ server .auth .sign_in (authz )
32+
33+ for w in TSC .Pager (server .workbooks ):
34+ print (w .name )
35+
36+ for u in TSC .Pager (server .users ):
37+ print (u .name )
38+
39+ for p in TSC .Pager (server .projects ):
40+ print (p .name )
41+
42+ for h in TSC .Pager (server .schedules ):
43+ print (h .name )
44+
45+ server .auth .sign_out ()
46+
47+ if __name__ == "__main__" :
48+ import argparse
49+ import sys
50+
51+ parser = argparse .ArgumentParser (description = 'Initialize a server with content.' )
52+ parser .add_argument ('--server' , '-s' , default = None , help = 'server address' )
53+ parser .add_argument ('--site-id' , '-si' , default = None , help = 'site to use' )
54+ parser .add_argument ('--username' , '-u' , default = None , help = 'username to sign into server' )
55+ parser .add_argument ('unittest_args' , nargs = '*' )
56+ args = parser .parse_args ()
57+
58+
59+ # This could probably be made smarter, but after trying too hard
60+ # to be clever, I opted for this simple and readable approach.
61+ # This will merge whatever is provided in the command line into
62+ # your environment variables
63+
64+ if os .environ .get ('TABLEAU_SERVER' , None ) is None :
65+ os .environ ['TABLEAU_SERVER' ] = args .server
66+
67+ if os .environ .get ('TABLEAU_USERNAME' , None ) is None :
68+ os .environ ['TABLEAU_USERNAME' ] = args .username
69+
70+ if os .environ .get ('TABLEAU_PASSWORD' , None ) is None :
71+ import getpass
72+ password = getpass .getpass ("Password: " )
73+ os .environ ['TABLEAU_PASSWORD' ] = password
74+
75+ # Makes unittest and standalone play nice see http://stackoverflow.com/questions/1029891/
76+ sys .argv [1 :] = args .unittest_args
77+ unittest .main ()
0 commit comments