def test_get_temp_key_post_account_exception(self, mock_get_account, mock_post_account): mock_get_account.return_value = [{}] mock_post_account.side_effect = client.ClientException('') computed_key = utils.get_temp_key('http://fakeurl', 'faketoken', False) self.assertIsNone(computed_key)
def test_get_temp_key_get_account_no_key_retrieved_on_get_account( self, mock_get_account, mock_post_account): mock_get_account.return_value = [{}] retrieved_key = utils.get_temp_key('http://fakeurl', 'faketoken', False) name, args, kargs = mock_post_account.mock_calls[0] computed_key = kargs['headers']['x-account-meta-temp-url-key'] self.assertEqual(retrieved_key, computed_key)
def test_get_temp_key(self, mock_get_account): expected_key = 'asgdia7239rgahsjbfhsd' mock_get_account.return_value = [{ 'x-account-meta-temp-url-key': expected_key }] computed_key = utils.get_temp_key('http://fakeurl', 'faketoken', False) self.assertEqual(expected_key, computed_key)
def upload(request, container, prefix=None): """ Display upload form using swift formpost """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') redirect_url = get_base_url(request) redirect_url += reverse('objectview', kwargs={ 'container': container, }) swift_url = storage_url + '/' + container + '/' if prefix: swift_url += prefix redirect_url += prefix url_parts = urlparse(swift_url) path = url_parts.path max_file_size = 5 * 1024 * 1024 * 1024 max_file_count = 1 expires = int(time.time() + 15 * 60) key = get_temp_key(storage_url, auth_token) if not key: messages.add_message(request, messages.ERROR, _("Access denied.")) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) hmac_body = '%s\n%s\n%s\n%s\n%s' % (path, redirect_url, max_file_size, max_file_count, expires) signature = hmac.new(bytes(key, "utf-8"), bytes(hmac_body, "utf-8"), sha1).hexdigest() prefixes = prefix_list(prefix) return render( request, 'upload_form.html', { 'swift_url': swift_url, 'redirect_url': redirect_url, 'max_file_size': max_file_size, 'max_file_count': max_file_count, 'expires': expires, 'signature': signature, 'container': container, 'prefix': prefix, 'prefixes': prefixes })
def upload(request, container, prefix=None): """ Display upload form using swift formpost """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') redirect_url = get_base_url(request) redirect_url += reverse('objectview', kwargs={'container': container, }) swift_url = storage_url + '/' + container + '/' if prefix: swift_url += prefix redirect_url += prefix url_parts = urlparse.urlparse(swift_url) path = url_parts.path max_file_size = 5 * 1024 * 1024 * 1024 max_file_count = 1 expires = int(time.time() + 15 * 60) key = get_temp_key(storage_url, auth_token) if not key: messages.add_message(request, messages.ERROR, _("Access denied.")) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) hmac_body = '%s\n%s\n%s\n%s\n%s' % ( path, redirect_url, max_file_size, max_file_count, expires) signature = hmac.new(str(key), str(hmac_body), sha1).hexdigest() prefixes = prefix_list(prefix) return render_to_response('upload_form.html', { 'swift_url': swift_url, 'redirect_url': redirect_url, 'max_file_size': max_file_size, 'max_file_count': max_file_count, 'expires': expires, 'signature': signature, 'container': container, 'prefix': prefix, 'prefixes': prefixes, }, context_instance=RequestContext(request))
def upload(request, container, prefix=None): """ Display upload form using swift formpost """ storage_url = request.session.get('storage_url', '') auth_token = request.session.get('auth_token', '') #redirect_url = get_base_url(request) redirect_url = reverse('objectview', kwargs={ 'container': container, }) swift_url = storage_url + '/' + container + '/' if prefix: swift_url += prefix redirect_url += prefix url_parts = urlparse.urlparse(swift_url) path = url_parts.path max_file_size = 5 * 1024 * 1024 * 1024 max_file_count = 1 expires = int(time.time() + 15 * 60) key = get_temp_key(storage_url, auth_token) if not key: messages.add_message(request, messages.ERROR, _("Access denied.")) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) hmac_body = '%s\n%s\n%s\n%s\n%s' % (path, redirect_url, max_file_size, max_file_count, expires) signature = hmac.new(str(key), str(hmac_body), sha1).hexdigest() prefixes = prefix_list(prefix) if request.method == 'POST': post_file = request.FILES.values().pop() if prefix: post_file_name = prefix + post_file.name else: post_file_name = post_file.name try: client.put_object(storage_url, auth_token, container, post_file_name, post_file) if prefix: return redirect(objectview, container=container, prefix=prefix) else: return redirect(objectview, container=container) except client.ClientException: traceback.print_exc() messages.add_message(request, messages.ERROR, _("Access denied.")) return render_to_response('upload_form.html', { 'swift_url': swift_url, 'redirect_url': redirect_url, 'max_file_size': max_file_size, 'max_file_count': max_file_count, 'expires': expires, 'signature': signature, 'container': container, 'prefix': prefix, 'prefixes': prefixes, }, context_instance=RequestContext(request))