40
40
PathRoot_validator ,
41
41
)
42
42
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 ):
44
61
value = os .environ .get (env_name )
45
62
if value is None :
46
63
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'):
51
68
52
69
@pytest .fixture ()
53
70
def dbx_from_env ():
54
- oauth2_token = _value_from_env_or_die ()
71
+ oauth2_token = _value_from_env_or_die (format_env_name () )
55
72
return Dropbox (oauth2_token )
56
73
57
74
58
75
@pytest .fixture ()
59
76
def 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 ) )
63
80
return Dropbox (oauth2_refresh_token = refresh_token ,
64
81
app_key = app_key , app_secret = app_secret )
65
82
66
83
67
84
@pytest .fixture ()
68
85
def 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 ))
70
88
return DropboxTeam (team_oauth2_token )
71
89
72
90
73
91
@pytest .fixture ()
74
92
def 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 ) )
77
95
return Dropbox (app_key = app_key , app_secret = app_secret )
78
96
79
97
80
98
@pytest .fixture ()
81
99
def 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 )
83
101
84
102
85
103
MALFORMED_TOKEN = 'asdf'
@@ -88,9 +106,31 @@ def dbx_share_url_from_env():
88
106
# Need bytes type for Python3
89
107
DUMMY_PAYLOAD = string .ascii_letters .encode ('ascii' )
90
108
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
+
91
128
92
129
@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"
94
134
)
95
135
class TestDropbox :
96
136
def test_default_oauth2_urls (self ):
@@ -154,16 +194,15 @@ def test_rpc(self, dbx_from_env):
154
194
155
195
# Test API error
156
196
random_folder_path = '/' + \
157
- '' .join (random . sample ( string . ascii_letters , 15 ) )
197
+ '' .join (RANDOM_FOLDER )
158
198
with pytest .raises (ApiError ) as cm :
159
199
dbx_from_env .files_list_folder (random_folder_path )
160
200
assert isinstance (cm .value .error , ListFolderError )
161
201
162
202
def test_upload_download (self , dbx_from_env ):
163
203
# 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 )
167
206
test_contents = DUMMY_PAYLOAD
168
207
dbx_from_env .files_upload (test_contents , random_path )
169
208
@@ -172,7 +211,7 @@ def test_upload_download(self, dbx_from_env):
172
211
assert DUMMY_PAYLOAD == resp .content
173
212
174
213
# Cleanup folder
175
- dbx_from_env .files_delete ('/Test/%s' % timestamp )
214
+ dbx_from_env .files_delete ('/Test/%s' % TIMESTAMP )
176
215
177
216
def test_bad_upload_types (self , dbx_from_env ):
178
217
with pytest .raises (TypeError ):
@@ -231,11 +270,10 @@ def test_path_root_err(self, dbx_from_env):
231
270
232
271
def test_versioned_route (self , dbx_from_env ):
233
272
# 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 )
236
274
237
275
# 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 )
239
277
# Verify response type is of v2 route
240
278
assert isinstance (resp , DeleteResult )
241
279
0 commit comments