text: # Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  #
  # Licensed under the Apache License, Version 2.0 (the "License"). You
  # may not use this file except in compliance with the License. A copy of
  # the License is located at
  #
  # http://aws.amazon.com/apache2.0/
  #
  # or in the "license" file accompanying this file. This file is
  # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
  # ANY KIND, either express or implied. See the License for the specific
  # language governing permissions and limitations under the License.
  from datetime import datetime
  
  import mock
  
  from tests import BaseSessionTest
  from tests import assert_url_equal
  from botocore.stub import Stubber
  
  
  class TestSTSPresignedUrl(BaseSessionTest):
      def setUp(self):
          super(TestSTSPresignedUrl, self).setUp()
          self.client = self.session.create_client('sts', 'us-west-2')
          # Makes sure that no requests will go through
          self.stubber = Stubber(self.client)
          self.stubber.activate()
  
      def test_presigned_url_contains_no_content_type(self):
          timestamp = datetime(2017, 3, 22, 0, 0)
          with mock.patch('botocore.auth.datetime') as _datetime:
              _datetime.datetime.utcnow.return_value = timestamp
              url = self.client.generate_presigned_url('get_caller_identity', {})
  
          # There should be no 'content-type' in x-amz-signedheaders
          expected_url = (
              'https://sts.amazonaws.com/?Action=GetCallerIdentity&'
              'Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&'
              'X-Amz-Credential=access_key%2F20170322%2Fus-east-1%2Fsts%2F'
              'aws4_request&X-Amz-Date=20170322T000000Z&X-Amz-Expires=3600&'
              'X-Amz-SignedHeaders=host&X-Amz-Signature=767845d2ee858069a598d5f'
              '8b497b75c7d57356885b1b3dba46dbbc0fc62bf5a'
          )
          assert_url_equal(url, expected_url)
  