def test_do_not_return_expired_tempurls(self, tempurl_mock):
        fake_image = {'id': uuidutils.generate_uuid()}
        old_exp_time = int(time.time()) + 99
        path = ('/v1/AUTH_a422b2-91f3-2f46-74b7-d7c9e8958f5d30'
                '/glance'
                '/%s' % fake_image['id'])
        query = '?temp_url_sig=hmacsig&temp_url_expires=%s'
        self.glance_service._cache[fake_image['id']] = (
            glance_v2.TempUrlCacheElement(url=(CONF.glance.swift_endpoint_url +
                                               path + query % old_exp_time),
                                          url_expires_at=old_exp_time))

        new_exp_time = int(time.time()) + 1200
        tempurl_mock.return_value = (path + query % new_exp_time)

        self.glance_service._validate_temp_url_config = mock.Mock()

        fresh_temp_url = self.glance_service.swift_temp_url(
            image_info=fake_image)

        self.assertEqual(
            CONF.glance.swift_endpoint_url + tempurl_mock.return_value,
            fresh_temp_url)
        tempurl_mock.assert_called_with(
            path=path,
            seconds=CONF.glance.swift_temp_url_duration,
            key=CONF.glance.swift_temp_url_key,
            method='GET')
        self.assertEqual((fresh_temp_url, new_exp_time),
                         self.glance_service._cache[fake_image['id']])
    def test_return_cached_tempurl(self, tempurl_mock):
        fake_image = {'id': uuidutils.generate_uuid()}

        exp_time = int(time.time()) + 1200
        temp_url = CONF.glance.swift_endpoint_url + (
            '/v1/AUTH_a422b2-91f3-2f46-74b7-d7c9e8958f5d30'
            '/glance'
            '/%(uuid)s'
            '?temp_url_sig=hmacsig&temp_url_expires=%(exp_time)s' % {
                'uuid': fake_image['id'],
                'exp_time': exp_time
            })
        self.glance_service._cache[fake_image['id']] = (
            glance_v2.TempUrlCacheElement(url=temp_url,
                                          url_expires_at=exp_time))

        cleanup_mock = mock.Mock()
        self.glance_service._remove_expired_items_from_cache = cleanup_mock
        self.glance_service._validate_temp_url_config = mock.Mock()

        self.assertEqual(
            temp_url,
            self.glance_service.swift_temp_url(image_info=fake_image))

        cleanup_mock.assert_called_once_with()
        self.assertFalse(tempurl_mock.called)