tests: Use timedelta to adjust dates, not string manipulations

Change-Id: I8f65ccd7f2a79d5b877bfbef0274fb7857e21391
This commit is contained in:
Tim Burke 2020-02-28 18:59:32 -08:00
parent a5afe76758
commit 55049beda5
2 changed files with 8 additions and 4 deletions

View File

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

View File

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