def test_post___bmp_32kb___returns_status_code_200_protected_file(self):
        """
        5-Test_File submit using pre-signed url with valid x-api key is successful
        Steps:
            Post a file payload request with file url to endpoint: '[API GATEWAY URL]/api/Rebuild' with valid x-api key
        Expected:
            The response is returned with the processed file and success code 200
        """
        # Send post request
        response = requests.post(
            url=self.endpoint+self.api_key,
            json={
                "InputGetUrl": self.bmp_32kb_urls.get("InputGetUrl"),
                "OutputPutUrl": self.bmp_32kb_urls.get("OutputPutUrl"),
            }
        )

        # Status code should be 200, ok
        self.assertEqual(
            response.status_code,
            HTTPStatus.OK
        )

        # Response etag should be the same as the md5 of the input file
        self.assertEqual(
            ast.literal_eval(response.headers.get("gw-put-file-etag")),
            get_md5(self.bmp_32kb)
        )
示例#2
0
    def test_post___doc_embedded_images_12kb_content_management_policy_sanitise___returns_status_code_200_sanitised_file(self):
        """
        4-Test_The default cmp policy is applied to submitted file using base64 code
        Steps:
            Set cmp policy for file type as 'cmptype'
            Post file payload request to endpoint: '[API GATEWAY URL]/api/Rebuild/base64' with valid x-api key
        Expected:
        The response is returned with success code '200'
            0) If cmpType is 'Allow', Then the file is allowed & the original file is returned
            1) If cmpType is 'Sanitise', Then the file is returned sanitised
            2) If cmpType is 'Disallow', Then the file is allowed & the original file is returned
        """

        # Set variable for file to test
        test_file = get_file_bytes(self.doc_embedded_images_12kb)

        # Send post request
        response = requests.post(
            url=self.endpoint+self.api_key,
            json={
                "Base64": b64encode(test_file).decode(),
                "ContentManagementFlags": {
                    "WordContentManagement": {
                        "Metadata": 1,
                        "InternalHyperlinks": 1,
                        "ExternalHyperlinks": 1,
                        "EmbeddedFiles": 1,
                        "EmbeddedImages": 1,
                        "DynamicDataExchange": 1,
                        "Macros": 1,
                        "ReviewComments": 1
                    }
                }
            },
            headers={
                "Content-Type": "application/json"
            }
        )

        # Status code should be 200, ok
        self.assertEqual(
            response.status_code,
            HTTPStatus.OK
        )

        # Response content as file bytes should match known md5 of expected bytes.
        #B64content = json.loads(response.content)
        response_file_bytes = b64decode(response.json().get("Base64"))
        self.assertEqual(
            get_md5(response_file_bytes),
            "665f3d263d7fe25b7491cbeec657abb0"
        )
    def test_post___doc_embedded_images_12kb_content_management_policy_sanitise___returns_status_code_200_sanitised_file(self):
        """
        7b-Test_The default cmp policy is applied to submitted file using pre-signed url
        Steps:
                Set cmp policy for file type as 'cmptype'
                Post a file payload request with file url: '[API GATEWAY URL]/api/Rebuild/sas' with valid x-api key
        Expected:
        The response is returned with error code '200'
                If cmpType is 'Sanitise', Then the file is returned sanitised
                If cmpType is 'Allow', Then the file is allowed & the original file is returned
                If cmpType is 'Disallow', Then the file is allowed & the original file is returned
        """
        # Send post request
        response = requests.post(
            url=self.endpoint+self.api_key,
            json={
                "InputGetUrl": self.doc_embedded_images_12kb_urls.get("InputGetUrl"),
                "OutputPutUrl": self.doc_embedded_images_12kb_urls.get("OutputPutUrl"),
                "ContentManagementFlags": {
                    "WordContentManagement": {
                        "Metadata": 1,
                        "InternalHyperlinks": 1,
                        "ExternalHyperlinks": 1,
                        "EmbeddedFiles": 1,
                        "EmbeddedImages": 1,
                        "DynamicDataExchange": 1,
                        "Macros": 1,
                        "ReviewComments": 1,
                    },
                },
            },
        )

        # Status code should be 200, ok
        self.assertEqual(
            response.status_code,
            HTTPStatus.OK
        )

        # Response etag should be different to the md5 of the input file
        self.assertNotEqual(
            ast.literal_eval(response.headers.get("gw-put-file-etag")),
            get_md5(self.doc_embedded_images_12kb)
        )

        # etag should match expected md5
        self.assertEqual(
            ast.literal_eval(response.headers.get("gw-put-file-etag")),
            "665f3d263d7fe25b7491cbeec657abb0"
        )
示例#4
0
    def test_post___xls_malware_macro_48kb___returns_status_code_200_sanitised_file(self):
        """
        12-Test_upload of files with issues and or malware using base64 code with valid x-api key 
        Execution Steps:
            Post a payload request with file containing malware to url: '[API GATEWAY URL]/api/Rebuild/base64' with valid x-api key
            Post a payload request with file containing structural issues to url: '[API GATEWAY URL]/api/Rebuild/base64' with valid x-api key
            Post a payload request with file containing issues and malware to url: '[API GATEWAY URL]/api/Rebuild/base64' with valid x-api key
        Expected Results:
        The response message returned for file containing malware is:'OK' with success code '200'
        The response message returned for file containing structural issues is: 'Unprocessable Entity' with error code '422'
        The response message returned for file containing malware is: 'Unprocessable Entity' with error code '422'
        """

        # Set variable for file to test
        test_file = get_file_bytes(self.xls_malware_macro_48kb)

        # Send post request
        response = requests.post(
            url=self.endpoint+self.api_key,
            json={
                "Base64": b64encode(test_file).decode()
            },
            headers={
                "Content-Type": "application/json"
            }
        )

        # Status code should be 200, OK
        self.assertEqual(
            response.status_code,
            HTTPStatus.OK
        )

        # Response content as file bytes should match known md5 of expected bytes.
        response_file_bytes = b64decode(response.json().get("Base64"))
        self.assertEqual(
            get_md5(response_file_bytes),
            "4b6ef99d2932fd735a4eed1c1ca236ee"
        )
    def test_post___xls_malware_macro_48kb___returns_status_code_200_sanitised_file(self):
        """
        11a-Test_upload of files with issues and or malware using presigned with valid x-api key
        Execution Steps:
            Post a payload request with file containing malware to url: '[API GATEWAY URL]/api/Rebuild/sas' with valid x-api key
            Post a payload request with file containing structural issues to url: '[API GATEWAY URL]/api/Rebuild/sas' with valid x-api key
            Post a payload request with file containing issues and malware to url: '[API GATEWAY URL]/api/Rebuild/sas' with valid x-api key
        Expected Results:
            The response message returned for file containing malware is:'OK' with success code '200'
            The response message returned for file containing structural issues is: 'Unprocessable Entity' with error code '422'
            The response message returned for file containing malware is: 'Unprocessable Entity' with error code '422'
        """
        # Send post request
        response = requests.post(
            url=self.endpoint+self.api_key,
            json={
                "InputGetUrl": self.xls_malware_macro_48kb_urls.get("InputGetUrl"),
                "OutputPutUrl": self.xls_malware_macro_48kb_urls.get("OutputPutUrl"),
            },
        )

        # Status code should be 200, ok
        self.assertEqual(
            response.status_code,
            HTTPStatus.OK
        )

        # Response etag should be different to the md5 of the input file
        self.assertNotEqual(
            ast.literal_eval(response.headers.get("gw-put-file-etag")),
            get_md5(self.xls_malware_macro_48kb)
        )

        # etag should match expected md5
        self.assertEqual(
            ast.literal_eval(response.headers.get("gw-put-file-etag")),
            "4b6ef99d2932fd735a4eed1c1ca236ee"
        )