tests: Use timedelta to adjust dates, not string manipulations

Change-Id: I8f65ccd7f2a79d5b877bfbef0274fb7857e21391
(cherry picked from commit 55049beda5)
This commit is contained in:
Tim Burke 2020-02-28 18:59:32 -08:00 committed by Tim Burke
parent 778767f324
commit 8ce27500e2
2 changed files with 8 additions and 4 deletions

View File

@ -131,8 +131,10 @@ class S3ApiTestCase(unittest.TestCase):
# email.utils.formatdate returns utc timestamp in default
return email.utils.formatdate(time.time())
def get_v4_amz_date_header(self):
return datetime.utcnow().strftime('%Y%m%dT%H%M%SZ')
def get_v4_amz_date_header(self, when=None):
if when is None:
when = datetime.utcnow()
return when.strftime('%Y%m%dT%H%M%SZ')
def call_app(self, req, app=None, expect_exception=False):
if app is None:

View File

@ -13,6 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from datetime import datetime, timedelta
import hashlib
from mock import patch, MagicMock
import unittest
@ -463,8 +464,9 @@ class TestRequest(S3ApiTestCase):
self.assertIn(access_denied_message, cm.exception.body)
# near-future X-Amz-Date header
dt = self.get_v4_amz_date_header()
date_header = {'X-Amz-Date': '%d%s' % (int(dt[:4]) + 1, dt[4:])}
date_header = {'X-Amz-Date': self.get_v4_amz_date_header(
datetime.utcnow() + timedelta(days=1)
)}
with self.assertRaises(RequestTimeTooSkewed) as cm:
self._test_request_timestamp_sigv4(date_header)