summaryrefslogtreecommitdiff
path: root/fpdfsdk/fpdfattachment_embeddertest.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2018-03-28 19:23:25 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-03-28 19:23:25 +0000
commit971a674ef17526ad37ce55ba90110830b94889d0 (patch)
treed99fabf665cc63825b48dd087daadf664bb80ee8 /fpdfsdk/fpdfattachment_embeddertest.cpp
parent7d12532362545273e0ceac93fae2154661323fd1 (diff)
downloadpdfium-971a674ef17526ad37ce55ba90110830b94889d0.tar.xz
Rename fpdfsdk/fpdf* files to be consistent
This CL makes the fpdfsdk/fpdf* files to be consistently prefixed with fpdf_ instead of randomly dropping the _. Change-Id: I23e3c8a0831b56bcd17c788d9fe874b2ab8b24fc Reviewed-on: https://pdfium-review.googlesource.com/29390 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'fpdfsdk/fpdfattachment_embeddertest.cpp')
-rw-r--r--fpdfsdk/fpdfattachment_embeddertest.cpp260
1 files changed, 0 insertions, 260 deletions
diff --git a/fpdfsdk/fpdfattachment_embeddertest.cpp b/fpdfsdk/fpdfattachment_embeddertest.cpp
deleted file mode 100644
index dd9b5aebf3..0000000000
--- a/fpdfsdk/fpdfattachment_embeddertest.cpp
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "public/fpdf_attachment.h"
-#include "public/fpdfview.h"
-#include "testing/embedder_test.h"
-
-static constexpr char kDateKey[] = "CreationDate";
-static constexpr char kChecksumKey[] = "CheckSum";
-
-class FPDFAttachmentEmbeddertest : public EmbedderTest {};
-
-TEST_F(FPDFAttachmentEmbeddertest, ExtractAttachments) {
- // Open a file with two attachments.
- ASSERT_TRUE(OpenDocument("embedded_attachments.pdf"));
- EXPECT_EQ(2, FPDFDoc_GetAttachmentCount(document()));
-
- // Retrieve the first attachment.
- FPDF_ATTACHMENT attachment = FPDFDoc_GetAttachment(document(), 0);
- ASSERT_TRUE(attachment);
-
- // Check that the name of the first attachment is correct.
- unsigned long len = FPDFAttachment_GetName(attachment, nullptr, 0);
- std::vector<char> buf(len);
- EXPECT_EQ(12u, FPDFAttachment_GetName(attachment, buf.data(), len));
- EXPECT_STREQ(L"1.txt",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Check that the content of the first attachment is correct.
- len = FPDFAttachment_GetFile(attachment, nullptr, 0);
- buf.clear();
- buf.resize(len);
- ASSERT_EQ(4u, FPDFAttachment_GetFile(attachment, buf.data(), len));
- EXPECT_EQ(std::string("test"), std::string(buf.data(), 4));
-
- // Check that a non-existent key does not exist.
- EXPECT_FALSE(FPDFAttachment_HasKey(attachment, "none"));
-
- // Check that the string value of a non-string dictionary entry is empty.
- static constexpr char kSizeKey[] = "Size";
- EXPECT_EQ(FPDF_OBJECT_NUMBER,
- FPDFAttachment_GetValueType(attachment, kSizeKey));
- EXPECT_EQ(2u,
- FPDFAttachment_GetStringValue(attachment, kSizeKey, nullptr, 0));
-
- // Check that the creation date of the first attachment is correct.
- len = FPDFAttachment_GetStringValue(attachment, kDateKey, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(48u, FPDFAttachment_GetStringValue(attachment, kDateKey, buf.data(),
- len));
- EXPECT_STREQ(L"D:20170712214438-07'00'",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Retrieve the second attachment.
- attachment = FPDFDoc_GetAttachment(document(), 1);
- ASSERT_TRUE(attachment);
-
- // Retrieve the second attachment file.
- len = FPDFAttachment_GetFile(attachment, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(5869u, FPDFAttachment_GetFile(attachment, buf.data(), len));
-
- // Check that the calculated checksum of the file data matches expectation.
- const char kCheckSum[] = "72afcddedf554dda63c0c88e06f1ce18";
- const wchar_t kCheckSumW[] = L"<72AFCDDEDF554DDA63C0C88E06F1CE18>";
- const std::string generated_checksum =
- GenerateMD5Base16(reinterpret_cast<uint8_t*>(buf.data()), len);
- EXPECT_EQ(kCheckSum, generated_checksum);
-
- // Check that the stored checksum matches expectation.
- len = FPDFAttachment_GetStringValue(attachment, kChecksumKey, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(70u, FPDFAttachment_GetStringValue(attachment, kChecksumKey,
- buf.data(), len));
- EXPECT_EQ(kCheckSumW,
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data())));
-}
-
-TEST_F(FPDFAttachmentEmbeddertest, AddAttachments) {
- // Open a file with two attachments.
- ASSERT_TRUE(OpenDocument("embedded_attachments.pdf"));
- EXPECT_EQ(2, FPDFDoc_GetAttachmentCount(document()));
-
- // Check that adding an attachment with an empty name would fail.
- EXPECT_FALSE(FPDFDoc_AddAttachment(document(), nullptr));
-
- // Add an attachment to the beginning of the embedded file list.
- std::unique_ptr<unsigned short, pdfium::FreeDeleter> file_name =
- GetFPDFWideString(L"0.txt");
- FPDF_ATTACHMENT attachment =
- FPDFDoc_AddAttachment(document(), file_name.get());
-
- // Check that writing to a file with nullptr but non-zero bytes would fail.
- EXPECT_FALSE(FPDFAttachment_SetFile(attachment, document(), nullptr, 10));
-
- // Set the new attachment's file.
- constexpr char kContents1[] = "Hello!";
- EXPECT_TRUE(FPDFAttachment_SetFile(attachment, document(), kContents1,
- strlen(kContents1)));
-
- // Verify the name of the new attachment (i.e. the first attachment).
- attachment = FPDFDoc_GetAttachment(document(), 0);
- ASSERT_TRUE(attachment);
- unsigned long len = FPDFAttachment_GetName(attachment, nullptr, 0);
- std::vector<char> buf(len);
- EXPECT_EQ(12u, FPDFAttachment_GetName(attachment, buf.data(), len));
- EXPECT_STREQ(L"0.txt",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Verify the content of the new attachment (i.e. the first attachment).
- len = FPDFAttachment_GetFile(attachment, nullptr, 0);
- buf.clear();
- buf.resize(len);
- ASSERT_EQ(6u, FPDFAttachment_GetFile(attachment, buf.data(), len));
- EXPECT_EQ(std::string(kContents1), std::string(buf.data(), 6));
-
- // Add an attachment to the end of the embedded file list and set its file.
- file_name = GetFPDFWideString(L"z.txt");
- attachment = FPDFDoc_AddAttachment(document(), file_name.get());
- constexpr char kContents2[] = "World!";
- EXPECT_TRUE(FPDFAttachment_SetFile(attachment, document(), kContents2,
- strlen(kContents2)));
- EXPECT_EQ(4, FPDFDoc_GetAttachmentCount(document()));
-
- // Verify the name of the new attachment (i.e. the fourth attachment).
- attachment = FPDFDoc_GetAttachment(document(), 3);
- ASSERT_TRUE(attachment);
- len = FPDFAttachment_GetName(attachment, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(12u, FPDFAttachment_GetName(attachment, buf.data(), len));
- EXPECT_STREQ(L"z.txt",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Verify the content of the new attachment (i.e. the fourth attachment).
- len = FPDFAttachment_GetFile(attachment, nullptr, 0);
- buf.clear();
- buf.resize(len);
- ASSERT_EQ(6u, FPDFAttachment_GetFile(attachment, buf.data(), len));
- EXPECT_EQ(std::string(kContents2), std::string(buf.data(), 6));
-}
-
-TEST_F(FPDFAttachmentEmbeddertest, AddAttachmentsWithParams) {
- // Open a file with two attachments.
- ASSERT_TRUE(OpenDocument("embedded_attachments.pdf"));
- EXPECT_EQ(2, FPDFDoc_GetAttachmentCount(document()));
-
- // Add an attachment to the embedded file list.
- std::unique_ptr<unsigned short, pdfium::FreeDeleter> file_name =
- GetFPDFWideString(L"5.txt");
- FPDF_ATTACHMENT attachment =
- FPDFDoc_AddAttachment(document(), file_name.get());
- constexpr char kContents[] = "Hello World!";
- EXPECT_TRUE(FPDFAttachment_SetFile(attachment, document(), kContents,
- strlen(kContents)));
-
- // Set the date to be an arbitrary value.
- constexpr wchar_t kDateW[] = L"D:20170720161527-04'00'";
- std::unique_ptr<unsigned short, pdfium::FreeDeleter> ws_date =
- GetFPDFWideString(kDateW);
- EXPECT_TRUE(
- FPDFAttachment_SetStringValue(attachment, kDateKey, ws_date.get()));
-
- // Set the checksum to be an arbitrary value.
- constexpr wchar_t kCheckSumW[] = L"<ABCDEF01234567899876543210FEDCBA>";
- std::unique_ptr<unsigned short, pdfium::FreeDeleter> ws_checksum =
- GetFPDFWideString(kCheckSumW);
- EXPECT_TRUE(FPDFAttachment_SetStringValue(attachment, kChecksumKey,
- ws_checksum.get()));
-
- // Verify the name of the new attachment (i.e. the second attachment).
- attachment = FPDFDoc_GetAttachment(document(), 1);
- ASSERT_TRUE(attachment);
- unsigned long len = FPDFAttachment_GetName(attachment, nullptr, 0);
- std::vector<char> buf(len);
- EXPECT_EQ(12u, FPDFAttachment_GetName(attachment, buf.data(), len));
- EXPECT_STREQ(L"5.txt",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Verify the content of the new attachment.
- len = FPDFAttachment_GetFile(attachment, nullptr, 0);
- buf.clear();
- buf.resize(len);
- ASSERT_EQ(12u, FPDFAttachment_GetFile(attachment, buf.data(), len));
- EXPECT_EQ(std::string(kContents), std::string(buf.data(), 12));
-
- // Verify the creation date of the new attachment.
- len = FPDFAttachment_GetStringValue(attachment, kDateKey, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(48u, FPDFAttachment_GetStringValue(attachment, kDateKey, buf.data(),
- len));
- EXPECT_STREQ(kDateW,
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Verify the checksum of the new attachment.
- len = FPDFAttachment_GetStringValue(attachment, kChecksumKey, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(70u, FPDFAttachment_GetStringValue(attachment, kChecksumKey,
- buf.data(), len));
- EXPECT_STREQ(kCheckSumW,
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Overwrite the existing file with empty content, and check that the checksum
- // gets updated to the correct value.
- EXPECT_TRUE(FPDFAttachment_SetFile(attachment, document(), nullptr, 0));
- EXPECT_EQ(0u, FPDFAttachment_GetFile(attachment, nullptr, 0));
- len = FPDFAttachment_GetStringValue(attachment, kChecksumKey, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(70u, FPDFAttachment_GetStringValue(attachment, kChecksumKey,
- buf.data(), len));
- EXPECT_EQ(L"<D41D8CD98F00B204E9800998ECF8427E>",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data())));
-}
-
-TEST_F(FPDFAttachmentEmbeddertest, DeleteAttachment) {
- // Open a file with two attachments.
- ASSERT_TRUE(OpenDocument("embedded_attachments.pdf"));
- EXPECT_EQ(2, FPDFDoc_GetAttachmentCount(document()));
-
- // Verify the name of the first attachment.
- FPDF_ATTACHMENT attachment = FPDFDoc_GetAttachment(document(), 0);
- unsigned long len = FPDFAttachment_GetName(attachment, nullptr, 0);
- std::vector<char> buf(len);
- EXPECT_EQ(12u, FPDFAttachment_GetName(attachment, buf.data(), len));
- EXPECT_STREQ(L"1.txt",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-
- // Delete the first attachment.
- EXPECT_TRUE(FPDFDoc_DeleteAttachment(document(), 0));
- EXPECT_EQ(1, FPDFDoc_GetAttachmentCount(document()));
-
- // Verify the name of the new first attachment.
- attachment = FPDFDoc_GetAttachment(document(), 0);
- len = FPDFAttachment_GetName(attachment, nullptr, 0);
- buf.clear();
- buf.resize(len);
- EXPECT_EQ(26u, FPDFAttachment_GetName(attachment, buf.data(), len));
- EXPECT_STREQ(L"attached.pdf",
- GetPlatformWString(reinterpret_cast<unsigned short*>(buf.data()))
- .c_str());
-}