def test_xlsx_local_file_upload(): if sys.version_info[0] < 3: raise SkipTest csv_file = '''test 1,test.2,test_3,test_4 2010-10-10 00:00:00,2012-10-11 01:00:00,30, 2021-10-10 00:00:00,2012-10-11 03:00:00,0.12, 2010-10-10 00:00:00,2012-10-11 09:00:00,0.99, 2010-10-10 00:00:00,2012-10-11 04:00:00,500, 2010-10-10 00:00:00,2012-10-11 09:00:00,29830, 2010-10-10 00:00:00,2012-10-11 08:00:00,50, 2010-10-10 00:00:00,2012-10-11 07:00:00,, 2010-10-10 00:00:00,2012-10-11 03:00:00,, 2010-10-10 00:00:00,2012-10-11 09:00:00,, 2010-10-10 00:00:00,2022-10-10 14:00:00,, 2010-10-10 00:00:00,2021-10-10 15:00:00,, 2010-10-10 00:00:00,,, 2010-10-10 00:00:00,,, 2010-10-10 00:00:00,scattered,, 2010-10-10 00:00:00,,scattered, 2010-10-10 00:00:00,,, ,,, ,,, scattered,,, ,,scattered, ,,, ,,, ,scattered,, ,,, ,,, ,,, scattered,,,scattered ,,, ,,, ,,, ,,, ,scattered,, ''' with open(BASE_DIR + '/apps/beeswax/data/tables/book.xlsx', 'rb') as file: uploaded_file = InMemoryUploadedFile(file=file, field_name='test', name='book(1).xlsx', content_type='xlsx', size=100, charset='utf-8') request = Mock() request.user = Mock() request.FILES = MultiValueDict({'file': [uploaded_file]}) response = upload_local_file(request) path = urllib_unquote(json.loads(response.content.decode('utf-8'))['local_file_url']) with open(path, 'r') as _test_file: test_file = _test_file.read().replace('\r\n', '\n') assert_equal(csv_file, test_file) assert_true("book_1_xlsx" in path)
def test_post_upload_succeed(self, uuid_uuid1): found = resolve('/image/upload/', urlconf=adminpage.urls) request = Mock(wraps=HttpRequest(), method='POST') file = MultiValueDict() file['image'] = InMemoryUploadedFile(None, None, "1", 'image/jpg', None, 'utf-8') file['image'].chunks = Mock(return_value=[b"1"]) request.FILES = file request.body = Mock() request.body.decode = Mock(return_value='{}') request.user = Mock() request.user.is_authenticated = Mock(return_value=True) uuid.uuid1.return_value = 1 response = json.loads(found.func(request).content.decode()) self.assertEqual(response['code'], 0)
def _build_request( self, method: str, path: str, data: Dict, request_params: Any ) -> Mock: request = Mock() request.method = method request.path = path request.body = "" request.COOKIES = {} request._dont_enforce_csrf_checks = True request.is_secure.return_value = False request.build_absolute_uri = build_absolute_uri if "user" not in request_params: request.user.is_authenticated = False request.META = request_params.pop("META", {}) request.FILES = request_params.pop("FILES", {}) request.META.update( dict( [ (f"HTTP_{k.replace('-', '_')}", v) for k, v in request_params.pop("headers", {}).items() ] ) ) if django.VERSION[:2] > (2, 1): from django.http.request import HttpHeaders request.headers = HttpHeaders(request.META) if isinstance(data, QueryDict): request.POST = data else: request.POST = QueryDict(mutable=True) for k, v in data.items(): request.POST[k] = v if "?" in path: request.GET = QueryDict(path.split("?")[1]) else: request.GET = QueryDict() for k, v in request_params.items(): setattr(request, k, v) return request