diff --git a/test/s3/error_compat/s3_error_compat_test.py b/test/s3/error_compat/s3_error_compat_test.py index 22737d971b..b8e31546b0 100644 --- a/test/s3/error_compat/s3_error_compat_test.py +++ b/test/s3/error_compat/s3_error_compat_test.py @@ -93,6 +93,22 @@ def S3(method, path, **kw): return dict(method=method, path=path, **kw) +# ---------------- cleanup (atexit so failed runs still clean up) ---------------- +def cleanup(): + try: + send(**iam({'Action': 'DeleteAccessKey', 'UserName': user, 'AccessKeyId': USER.access_key})) + send(**iam({'Action': 'DeleteUser', 'UserName': user})) + send('DELETE', '/%s/mp?uploadId=%s' % (B, upload_id)) + st, d = send('GET', '/%s?list-type=2' % B) + for k in re.findall(r'([^<]+)', d): + send('DELETE', '/%s/%s' % (B, urllib.parse.quote(k))) + send('DELETE', '/' + B) + except Exception as e: + print('cleanup failed: %s' % e) + + +atexit.register(cleanup) + # ---------------- setup ---------------- st, d = send('PUT', '/' + B) if st != 200: @@ -178,22 +194,6 @@ case(3, 'DeleteObjects with 1001 keys', (400, 'Error', 'MalformedXML'), S3DOC + case(3, 'IAM DeleteUser while it has an access key', (409, 'ErrorResponse', 'DeleteConflict'), IAMDOC + 'API_DeleteUser.html#API_DeleteUser_Errors', iam({'Action': 'DeleteUser', 'UserName': user})) -# ---------------- cleanup (atexit so failed runs still clean up) ---------------- -def cleanup(): - try: - send(**iam({'Action': 'DeleteAccessKey', 'UserName': user, 'AccessKeyId': USER.access_key})) - send(**iam({'Action': 'DeleteUser', 'UserName': user})) - send('DELETE', '/%s/mp?uploadId=%s' % (B, upload_id)) - st, d = send('GET', '/%s?list-type=2' % B) - for k in re.findall(r'([^<]+)', d): - send('DELETE', '/%s/%s' % (B, urllib.parse.quote(k))) - send('DELETE', '/' + B) - except Exception as e: - print('cleanup failed: %s' % e) - - -atexit.register(cleanup) - # ---------------- report ---------------- w = max(len(r[1]) for r in rows) print('%-4s %-*s %-46s %-40s %s' % ('', w, 'case', 'got (status root code)', 'expected (AWS)', 'side effect'))