From 611fe994c40c4abadb5076b80c4a8c97071f013c Mon Sep 17 00:00:00 2001 From: Julian Arni Date: Wed, 21 Aug 2013 15:34:58 -0400 Subject: [PATCH 1/2] Add test for large asset upload --- cms/djangoapps/contentstore/tests/test_assets.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cms/djangoapps/contentstore/tests/test_assets.py b/cms/djangoapps/contentstore/tests/test_assets.py index b627237729a1..affea89f5f5b 100644 --- a/cms/djangoapps/contentstore/tests/test_assets.py +++ b/cms/djangoapps/contentstore/tests/test_assets.py @@ -3,10 +3,11 @@ """ import json +import os from datetime import datetime from io import BytesIO from pytz import UTC -from unittest import TestCase, skip +from unittest import TestCase, skipIf from .utils import CourseTestCase from django.core.urlresolvers import reverse from contentstore.views import assets @@ -55,13 +56,23 @@ def setUp(self): 'coursename': self.course.location.name, }) - @skip("CorruptGridFile error on continuous integration server") + skipOnJenkins = lambda x: skipIf(os.getenv("JENKINS_URL"), x) + + @skipOnJenkins("CorruptGridFile error on continuous integration server") def test_happy_path(self): f = BytesIO("sample content") f.name = "sample.txt" resp = self.client.post(self.url, {"name": "my-name", "file": f}) self.assert2XX(resp.status_code) + @skipOnJenkins("CorruptGridFile error on continuous integration server") + def test_large(self): + f = BytesIO("some content") + f.truncate(20 * 1024 * 1024) + f.name = "sample2.txt" + resp = self.client.post(self.url, {"name": "my-name", "file": f}) + self.assert2XX(resp.status_code) + def test_no_file(self): resp = self.client.post(self.url, {"name": "file.txt"}) self.assert4XX(resp.status_code) From c97d6c64dec246f7ef2f8a2d1ca1edafe8979b3a Mon Sep 17 00:00:00 2001 From: JonahStanley Date: Thu, 22 Aug 2013 12:16:34 -0400 Subject: [PATCH 2/2] Using temporary files doesn't cause errors on jenkins Removed unneeded imports. Also, can't set the name of a tempfile --- .../contentstore/tests/test_assets.py | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/cms/djangoapps/contentstore/tests/test_assets.py b/cms/djangoapps/contentstore/tests/test_assets.py index affea89f5f5b..98d90d5f3018 100644 --- a/cms/djangoapps/contentstore/tests/test_assets.py +++ b/cms/djangoapps/contentstore/tests/test_assets.py @@ -3,11 +3,10 @@ """ import json -import os from datetime import datetime -from io import BytesIO +from tempfile import TemporaryFile from pytz import UTC -from unittest import TestCase, skipIf +from unittest import TestCase from .utils import CourseTestCase from django.core.urlresolvers import reverse from contentstore.views import assets @@ -56,22 +55,18 @@ def setUp(self): 'coursename': self.course.location.name, }) - skipOnJenkins = lambda x: skipIf(os.getenv("JENKINS_URL"), x) - - @skipOnJenkins("CorruptGridFile error on continuous integration server") def test_happy_path(self): - f = BytesIO("sample content") - f.name = "sample.txt" - resp = self.client.post(self.url, {"name": "my-name", "file": f}) - self.assert2XX(resp.status_code) + with TemporaryFile() as temp: + temp.write('This is a test') + resp = self.client.post(self.url, {"name": "my-name", "file": temp}) + self.assert2XX(resp.status_code) - @skipOnJenkins("CorruptGridFile error on continuous integration server") def test_large(self): - f = BytesIO("some content") - f.truncate(20 * 1024 * 1024) - f.name = "sample2.txt" - resp = self.client.post(self.url, {"name": "my-name", "file": f}) - self.assert2XX(resp.status_code) + with TemporaryFile() as f: + f.write('Some Content') + f.truncate(20 * 1024 * 1024) + resp = self.client.post(self.url, {"name": "my-name", "file": f}) + self.assert2XX(resp.status_code) def test_no_file(self): resp = self.client.post(self.url, {"name": "file.txt"})