def test_should_upload_asset_with_no_extension(self, mock_token):
        # Create temporary file to upload
        dummy_file_path = os.path.join(temp_dir, "testupload-no-extension")
        os.makedirs(os.path.dirname(dummy_file_path), exist_ok=True)
        dummy_content = (
            "# Test File with no extension\n\n*Dummy asset for testing uploads.*"
        )
        with open(dummy_file_path, "w") as dummy_file:
            dummy_file.write(dummy_content)

        def request_callback(request):
            self.assertEqual(request.body.decode().replace("\r\n", "\n"),
                             dummy_content)
            self.assertEqual(request.url, self.asset_no_extension_url_params)
            self.assertEqual(request.headers["Content-Type"],
                             "application/octet-stream")
            self.assertEqual("token super-token",
                             request.headers["Authorization"])

            return 201, {}, json.dumps({})

        responses.add_callback(responses.POST,
                               self.asset_url,
                               callback=request_callback)
        status = Github.upload_asset("relekang", "rmoq", 1, dummy_file_path,
                                     "Dummy file no extension")
        self.assertTrue(status)

        # Remove test file
        os.remove(dummy_file_path)
    def test_should_upload_asset(self, mock_token):
        # Create temporary file to upload
        dummy_file_path = os.path.join(temp_dir, 'testupload.md')
        os.makedirs(os.path.dirname(dummy_file_path), exist_ok=True)
        dummy_content = '# Test File\n\n*Dummy asset for testing uploads.*'
        with open(dummy_file_path, 'w') as dummy_file:
            dummy_file.write(dummy_content)

        def request_callback(request):
            self.assertEqual(request.body.decode().replace('\r\n', '\n'),
                             dummy_content)
            self.assertEqual(request.url, self.asset_url_params)
            self.assertEqual(request.headers['Content-Type'], 'text/markdown')
            self.assertEqual('token super-token',
                             request.headers['Authorization'])

            return 201, {}, json.dumps({})

        responses.add_callback(responses.POST,
                               self.asset_url,
                               callback=request_callback)
        status = Github.upload_asset('relekang', 'rmoq', 1, dummy_file_path,
                                     'Dummy file')
        self.assertTrue(status)

        # Remove test file
        os.remove(dummy_file_path)
    def test_should_upload_asset(self, mock_token):
        # Create temporary file to upload
        dummy_file_path = os.path.join(temp_dir, "testupload.md")
        os.makedirs(os.path.dirname(dummy_file_path), exist_ok=True)
        dummy_content = "# Test File\n\n*Dummy asset for testing uploads.*"
        with open(dummy_file_path, "w") as dummy_file:
            dummy_file.write(dummy_content)

        required_payload = {"upload_url": self.upload_url}
        responses.add(
            responses.GET,
            self.edit_url,
            status=200,
            body=json.dumps(required_payload),
            content_type="application/json",
        )

        def request_callback(request):
            self.assertEqual(request.body.decode().replace("\r\n", "\n"), dummy_content)
            self.assertEqual(request.url, self.asset_url_params)
            self.assertEqual(request.headers["Content-Type"], "text/markdown")
            self.assertEqual("token super-token", request.headers.get("Authorization"))

            return 201, {}, json.dumps({})

        responses.add_callback(
            responses.POST, self.asset_url, callback=request_callback
        )
        status = Github.upload_asset(
            "relekang", "rmoq", 1, dummy_file_path, "Dummy file"
        )
        self.assertTrue(status)

        # Remove test file
        os.remove(dummy_file_path)