mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-15 07:06:11 -04:00
219 lines
7.5 KiB
C++
219 lines
7.5 KiB
C++
// Copyright 2024 Google LLC
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#include "sharing/attachment_container.h"
|
|
|
|
#include <cstdint>
|
|
#include <memory>
|
|
#include <optional>
|
|
#include <vector>
|
|
|
|
#include "gmock/gmock.h"
|
|
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
|
#include "gtest/gtest.h"
|
|
#include "internal/base/file_path.h"
|
|
#include "proto/sharing_enums.pb.h"
|
|
#include "sharing/attachment_compare.h" // IWYU pragma: keep
|
|
#include "sharing/file_attachment.h"
|
|
#include "sharing/text_attachment.h"
|
|
#include "sharing/wifi_credentials_attachment.h"
|
|
|
|
namespace nearby::sharing {
|
|
namespace {
|
|
|
|
using ::location::nearby::proto::sharing::AttachmentSourceType;
|
|
using testing::Eq;
|
|
using testing::IsEmpty;
|
|
using testing::IsFalse;
|
|
using testing::IsTrue;
|
|
using testing::SizeIs;
|
|
using testing::UnorderedElementsAre;
|
|
|
|
class AttachmentContainerTest : public ::testing::Test {
|
|
protected:
|
|
AttachmentContainerTest()
|
|
: text1_(/*id=*/12345L,
|
|
nearby::sharing::service::proto::TextMetadata::URL,
|
|
"A bit of text body", "Some text title", /*size=*/18,
|
|
"text/html", /*batch_id=*/987654,
|
|
AttachmentSourceType::ATTACHMENT_SOURCE_DRAG_AND_DROP),
|
|
text2_(/*id=*/98564L,
|
|
nearby::sharing::service::proto::TextMetadata::ADDRESS,
|
|
"A bit of text body 2", "Some text title 2", /*size=*/20,
|
|
"text/plain",
|
|
/*batch_id=*/456547,
|
|
AttachmentSourceType::ATTACHMENT_SOURCE_CONTEXT_MENU),
|
|
file1_(/*id=*/436346L, /*size=*/100000, "someFileName", "image/jpeg",
|
|
nearby::sharing::service::proto::FileMetadata::IMAGE,
|
|
"/usr/local/tmp", /*batch_id=*/66657L,
|
|
AttachmentSourceType::ATTACHMENT_SOURCE_SELECT_FILES_BUTTON),
|
|
wifi1_(
|
|
/*id=*/57457L, "GoogleGuest",
|
|
nearby::sharing::service::proto::WifiCredentialsMetadata::WPA_PSK,
|
|
"somepassword", true, /*batch_id=*/99707L,
|
|
AttachmentSourceType::ATTACHMENT_SOURCE_PASTE) {
|
|
file1_.set_file_path(FilePath{"/usr/local/tmp/someFileName.jpg"});
|
|
}
|
|
|
|
TextAttachment text1_;
|
|
TextAttachment text2_;
|
|
FileAttachment file1_;
|
|
WifiCredentialsAttachment wifi1_;
|
|
};
|
|
|
|
TEST_F(AttachmentContainerTest, Constructor) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddTextAttachment(text1_)
|
|
.AddTextAttachment(text2_)
|
|
.AddFileAttachment(file1_)
|
|
.AddWifiCredentialsAttachment(wifi1_)
|
|
.Build();
|
|
|
|
EXPECT_THAT(container->GetTextAttachments(),
|
|
UnorderedElementsAre(text1_, text2_));
|
|
EXPECT_THAT(container->GetFileAttachments(), UnorderedElementsAre(file1_));
|
|
EXPECT_THAT(container->GetWifiCredentialsAttachments(),
|
|
UnorderedElementsAre(wifi1_));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, AddTextAttachment) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddTextAttachment(text1_)
|
|
.AddTextAttachment(text2_)
|
|
.Build();
|
|
|
|
EXPECT_THAT(container->GetTextAttachments(),
|
|
UnorderedElementsAre(text1_, text2_));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, AddFileAttachment) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder().AddFileAttachment(file1_).Build();
|
|
|
|
EXPECT_THAT(container->GetFileAttachments(), UnorderedElementsAre(file1_));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, AddWifiCredentialsAttachment) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddWifiCredentialsAttachment(wifi1_)
|
|
.Build();
|
|
|
|
EXPECT_THAT(container->GetWifiCredentialsAttachments(),
|
|
UnorderedElementsAre(wifi1_));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, GetMutableTextAttachment) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddTextAttachment(text1_)
|
|
.AddTextAttachment(text2_)
|
|
.Build();
|
|
|
|
EXPECT_THAT(container->GetMutableTextAttachment(0), Eq(text1_));
|
|
EXPECT_THAT(container->GetMutableTextAttachment(1), Eq(text2_));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, GetMutableFileAttachment) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder().AddFileAttachment(file1_).Build();
|
|
|
|
EXPECT_THAT(container->GetMutableFileAttachment(0), Eq(file1_));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, GetMutableWifiCredentialsAttachment) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddWifiCredentialsAttachment(wifi1_)
|
|
.Build();
|
|
|
|
EXPECT_THAT(container->GetMutableWifiCredentialsAttachment(0), Eq(wifi1_));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, AttachmentCount) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddTextAttachment(text1_)
|
|
.AddTextAttachment(text2_)
|
|
.AddFileAttachment(file1_)
|
|
.AddWifiCredentialsAttachment(wifi1_)
|
|
.Build();
|
|
|
|
EXPECT_THAT(container->GetAttachmentCount(), Eq(4));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, GetTotalAttachmentsSize) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddTextAttachment(text1_)
|
|
.AddTextAttachment(text2_)
|
|
.AddFileAttachment(file1_)
|
|
.Build();
|
|
|
|
EXPECT_THAT(container->GetTotalAttachmentsSize(), Eq(18 + 20 + 100000));
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, HasAttachments) {
|
|
AttachmentContainer::Builder builder = AttachmentContainer::Builder();
|
|
|
|
EXPECT_THAT(builder.Empty(), IsTrue());
|
|
|
|
builder.AddWifiCredentialsAttachment(wifi1_);
|
|
|
|
EXPECT_THAT(builder.Empty(), IsFalse());
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, ClearAttachments) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddTextAttachment(text1_)
|
|
.AddTextAttachment(text2_)
|
|
.AddFileAttachment(file1_)
|
|
.AddWifiCredentialsAttachment(wifi1_)
|
|
.Build();
|
|
|
|
container->ClearAttachments();
|
|
|
|
ASSERT_THAT(container->GetTextAttachments(), SizeIs(2));
|
|
EXPECT_THAT(container->GetTextAttachments()[0].text_body(), IsEmpty());
|
|
EXPECT_THAT(container->GetTextAttachments()[1].text_body(), IsEmpty());
|
|
ASSERT_THAT(container->GetFileAttachments(), SizeIs(1));
|
|
EXPECT_THAT(container->GetFileAttachments()[0].file_path(), Eq(std::nullopt));
|
|
ASSERT_THAT(container->GetWifiCredentialsAttachments(), SizeIs(1));
|
|
EXPECT_THAT(container->GetWifiCredentialsAttachments()[0].password(),
|
|
IsEmpty());
|
|
EXPECT_THAT(container->GetWifiCredentialsAttachments()[0].is_hidden(),
|
|
IsFalse());
|
|
}
|
|
|
|
TEST_F(AttachmentContainerTest, GetStorageSize) {
|
|
std::unique_ptr<AttachmentContainer> container =
|
|
AttachmentContainer::Builder()
|
|
.AddTextAttachment(text1_)
|
|
.AddTextAttachment(text2_)
|
|
.AddFileAttachment(file1_)
|
|
.AddWifiCredentialsAttachment(wifi1_)
|
|
.Build();
|
|
|
|
int64_t storage_size = container->GetStorageSize();
|
|
|
|
EXPECT_THAT(storage_size, Eq(file1_.size()));
|
|
}
|
|
|
|
} // namespace
|
|
|
|
} // namespace nearby::sharing
|