4040 PathRoot_validator ,
4141)
4242
43- def _value_from_env_or_die (env_name = 'DROPBOX_TOKEN' ):
43+ # Key Types
44+ REFRESH_TOKEN_KEY = "REFRESH_TOKEN"
45+ ACCESS_TOKEN_KEY = "DROPBOX_TOKEN"
46+ CLIENT_ID_KEY = "CLIENT_ID"
47+ CLIENT_SECRET_KEY = "CLIENT_SECRET"
48+ # App Types
49+ SCOPED_KEY = "SCOPED"
50+ LEGACY_KEY = "LEGACY"
51+ # User Types
52+ USER_KEY = "USER"
53+ TEAM_KEY = "TEAM"
54+ # Misc types
55+ SHARED_LINK_KEY = "DROPBOX_SHARED_LINK"
56+
57+ def format_env_name (app_type = SCOPED_KEY , user_type = USER_KEY , key_type = ACCESS_TOKEN_KEY ):
58+ return '{}_{}_{}' .format (app_type , user_type , key_type )
59+
60+ def _value_from_env_or_die (env_name ):
4461 value = os .environ .get (env_name )
4562 if value is None :
4663 print ('Set {} environment variable to a valid value.' .format (env_name ),
@@ -51,35 +68,36 @@ def _value_from_env_or_die(env_name='DROPBOX_TOKEN'):
5168
5269@pytest .fixture ()
5370def dbx_from_env ():
54- oauth2_token = _value_from_env_or_die ()
71+ oauth2_token = _value_from_env_or_die (format_env_name () )
5572 return Dropbox (oauth2_token )
5673
5774
5875@pytest .fixture ()
5976def refresh_dbx_from_env ():
60- refresh_token = _value_from_env_or_die ("DROPBOX_REFRESH_TOKEN" )
61- app_key = _value_from_env_or_die ("DROPBOX_APP_KEY" )
62- app_secret = _value_from_env_or_die ("DROPBOX_APP_SECRET" )
77+ refresh_token = _value_from_env_or_die (format_env_name ( SCOPED_KEY , USER_KEY , REFRESH_TOKEN_KEY ) )
78+ app_key = _value_from_env_or_die (format_env_name ( SCOPED_KEY , USER_KEY , CLIENT_ID_KEY ) )
79+ app_secret = _value_from_env_or_die (format_env_name ( SCOPED_KEY , USER_KEY , CLIENT_SECRET_KEY ) )
6380 return Dropbox (oauth2_refresh_token = refresh_token ,
6481 app_key = app_key , app_secret = app_secret )
6582
6683
6784@pytest .fixture ()
6885def dbx_team_from_env ():
69- team_oauth2_token = _value_from_env_or_die ('DROPBOX_TEAM_TOKEN' )
86+ team_oauth2_token = _value_from_env_or_die (
87+ format_env_name (SCOPED_KEY , TEAM_KEY , ACCESS_TOKEN_KEY ))
7088 return DropboxTeam (team_oauth2_token )
7189
7290
7391@pytest .fixture ()
7492def dbx_app_auth_from_env ():
75- app_key = _value_from_env_or_die ("DROPBOX_APP_KEY" )
76- app_secret = _value_from_env_or_die ("DROPBOX_APP_SECRET" )
93+ app_key = _value_from_env_or_die (format_env_name ( SCOPED_KEY , USER_KEY , CLIENT_ID_KEY ) )
94+ app_secret = _value_from_env_or_die (format_env_name ( SCOPED_KEY , USER_KEY , CLIENT_SECRET_KEY ) )
7795 return Dropbox (app_key = app_key , app_secret = app_secret )
7896
7997
8098@pytest .fixture ()
8199def dbx_share_url_from_env ():
82- return _value_from_env_or_die ("DROPBOX_SHARED_LINK" )
100+ return _value_from_env_or_die (SHARED_LINK_KEY )
83101
84102
85103MALFORMED_TOKEN = 'asdf'
@@ -88,9 +106,31 @@ def dbx_share_url_from_env():
88106# Need bytes type for Python3
89107DUMMY_PAYLOAD = string .ascii_letters .encode ('ascii' )
90108
109+ RANDOM_FOLDER = random .sample (string .ascii_letters , 15 )
110+ TIMESTAMP = str (datetime .datetime .utcnow ())
111+ STATIC_FILE = "/test.txt"
112+
113+ @pytest .fixture (scope = 'module' , autouse = True )
114+ def pytest_setup ():
115+ print ("Setup" )
116+ dbx = Dropbox (_value_from_env_or_die (format_env_name ()))
117+
118+ try :
119+ dbx .files_delete (STATIC_FILE )
120+ except Exception :
121+ print ("File not found" )
122+
123+ try :
124+ dbx .files_delete ('/Test/%s' % TIMESTAMP )
125+ except Exception :
126+ print ("File not found" )
127+
91128
92129@pytest .mark .usefixtures (
93- "dbx_from_env" , "refresh_dbx_from_env" , "dbx_app_auth_from_env" , "dbx_share_url_from_env"
130+ "dbx_from_env" ,
131+ "refresh_dbx_from_env" ,
132+ "dbx_app_auth_from_env" ,
133+ "dbx_share_url_from_env"
94134)
95135class TestDropbox :
96136 def test_default_oauth2_urls (self ):
@@ -154,16 +194,15 @@ def test_rpc(self, dbx_from_env):
154194
155195 # Test API error
156196 random_folder_path = '/' + \
157- '' .join (random . sample ( string . ascii_letters , 15 ) )
197+ '' .join (RANDOM_FOLDER )
158198 with pytest .raises (ApiError ) as cm :
159199 dbx_from_env .files_list_folder (random_folder_path )
160200 assert isinstance (cm .value .error , ListFolderError )
161201
162202 def test_upload_download (self , dbx_from_env ):
163203 # Upload file
164- timestamp = str (datetime .datetime .utcnow ())
165- random_filename = '' .join (random .sample (string .ascii_letters , 15 ))
166- random_path = '/Test/%s/%s' % (timestamp , random_filename )
204+ random_filename = '' .join (RANDOM_FOLDER )
205+ random_path = '/Test/%s/%s' % (TIMESTAMP , random_filename )
167206 test_contents = DUMMY_PAYLOAD
168207 dbx_from_env .files_upload (test_contents , random_path )
169208
@@ -172,7 +211,7 @@ def test_upload_download(self, dbx_from_env):
172211 assert DUMMY_PAYLOAD == resp .content
173212
174213 # Cleanup folder
175- dbx_from_env .files_delete ('/Test/%s' % timestamp )
214+ dbx_from_env .files_delete ('/Test/%s' % TIMESTAMP )
176215
177216 def test_bad_upload_types (self , dbx_from_env ):
178217 with pytest .raises (TypeError ):
@@ -231,11 +270,10 @@ def test_path_root_err(self, dbx_from_env):
231270
232271 def test_versioned_route (self , dbx_from_env ):
233272 # Upload a test file
234- path = '/test.txt'
235- dbx_from_env .files_upload (DUMMY_PAYLOAD , path )
273+ dbx_from_env .files_upload (DUMMY_PAYLOAD , STATIC_FILE )
236274
237275 # Delete the file with v2 route
238- resp = dbx_from_env .files_delete_v2 (path )
276+ resp = dbx_from_env .files_delete_v2 (STATIC_FILE )
239277 # Verify response type is of v2 route
240278 assert isinstance (resp , DeleteResult )
241279
0 commit comments