123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- // Copyright 2022 The Chromium 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 "ash/quick_pair/companion_app/companion_app_parser.h"
- #include "ash/quick_pair/common/device.h"
- #include "ash/quick_pair/common/logging.h"
- #include "ash/quick_pair/repository/fake_fast_pair_repository.h"
- #include "base/memory/scoped_refptr.h"
- #include "base/run_loop.h"
- #include "base/test/mock_callback.h"
- #include "base/test/task_environment.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace {
- constexpr char kTestDeviceAddress[] = "11:12:13:14:15:16";
- constexpr char kHasCompanionAppModelId[] = "718c17";
- constexpr char kEmptyMetadataModelId[] = "718c16";
- constexpr char kValidMetadataModelId[] = "718c15";
- constexpr char kEmptyParameterMetadataModelId[] = "718c14";
- constexpr char kNoMetadataModelId[] = "718c12";
- constexpr char kValidIntentWithCompanionAppURI[] =
- "intent:#Intent;action=com.google.android.gms.nearby."
- "discovery%3AACTION_MAGIC_PAIR;package=com.google.android."
- "gms;component=com.google.android.gms/.nearby.discovery."
- "service.DiscoveryService;S.com.google.android.gms.nearby."
- "discovery%3AEXTRA_COMPANION_APP=com.bose.monet;end";
- constexpr char kValidIntentURI[] =
- "intent:#Intent;action=com.google.android.gms.nearby."
- "discovery%3AACTION_MAGIC_PAIR;package=com.google.android."
- "gms;component=com.google.android.gms/.nearby.discovery."
- "service.DiscoveryService;end";
- constexpr char kEmptyParameterIntentURI[] =
- "intent:#Intent;action=com.google.android.gms.nearby."
- "discovery%3AACTION_MAGIC_PAIR;package=com.google.android."
- "gms;component=com.google.android.gms/.nearby.discovery."
- "service.DiscoveryService;S.com.google.android.gms.nearby."
- "discovery%3AEXTRA_COMPANION_APP=com.bose.monet;;end";
- constexpr char kEmptyIntentURI[] = "";
- } // namespace
- namespace ash {
- namespace quick_pair {
- class CompanionAppParserUnitTest : public testing::Test {
- public:
- void SetUp() override {
- repository_ = std::make_unique<FakeFastPairRepository>();
- parser_ = std::make_unique<CompanionAppParser>();
- deviceWithCompanionApp_ = base::MakeRefCounted<Device>(
- kHasCompanionAppModelId, kTestDeviceAddress,
- Protocol::kFastPairInitial);
- deviceWithValidMetadata_ = base::MakeRefCounted<Device>(
- kValidMetadataModelId, kTestDeviceAddress, Protocol::kFastPairInitial);
- deviceWithEmptyParameterMetadata_ = base::MakeRefCounted<Device>(
- kEmptyParameterMetadataModelId, kTestDeviceAddress,
- Protocol::kFastPairInitial);
- deviceWithEmptyMetadata_ = base::MakeRefCounted<Device>(
- kEmptyMetadataModelId, kTestDeviceAddress, Protocol::kFastPairInitial);
- deviceWithNoMetadata_ = base::MakeRefCounted<Device>(
- kNoMetadataModelId, kTestDeviceAddress, Protocol::kFastPairInitial);
- metadataWithCompanionApp_.set_intent_uri(kValidIntentWithCompanionAppURI);
- emptyMetadata_.set_intent_uri(kEmptyIntentURI);
- validMetadata_.set_intent_uri(kValidIntentURI);
- emptyParameterMetadata_.set_intent_uri(kEmptyParameterIntentURI);
- repository_->SetFakeMetadata(kHasCompanionAppModelId,
- metadataWithCompanionApp_);
- repository_->SetFakeMetadata(kEmptyMetadataModelId, emptyMetadata_);
- repository_->SetFakeMetadata(kValidMetadataModelId, validMetadata_);
- repository_->SetFakeMetadata(kEmptyParameterMetadataModelId,
- emptyParameterMetadata_);
- }
- protected:
- base::test::SingleThreadTaskEnvironment task_enviornment_;
- std::unique_ptr<FakeFastPairRepository> repository_;
- std::unique_ptr<CompanionAppParser> parser_;
- nearby::fastpair::Device metadataWithCompanionApp_;
- nearby::fastpair::Device validMetadata_;
- nearby::fastpair::Device emptyParameterMetadata_;
- nearby::fastpair::Device emptyMetadata_;
- scoped_refptr<ash::quick_pair::Device> deviceWithCompanionApp_;
- scoped_refptr<ash::quick_pair::Device> deviceWithEmptyMetadata_;
- scoped_refptr<ash::quick_pair::Device> deviceWithValidMetadata_;
- scoped_refptr<ash::quick_pair::Device> deviceWithEmptyParameterMetadata_;
- scoped_refptr<ash::quick_pair::Device> deviceWithNoMetadata_;
- };
- TEST_F(CompanionAppParserUnitTest, MetadataContainsCompanionApp) {
- base::MockCallback<base::OnceCallback<void(absl::optional<std::string>)>>
- on_companion_app_parsed;
- EXPECT_CALL(on_companion_app_parsed, Run(testing::Eq("com.bose.monet")))
- .Times(1);
- parser_->GetAppPackageName(deviceWithCompanionApp_,
- on_companion_app_parsed.Get());
- base::RunLoop().RunUntilIdle();
- }
- TEST_F(CompanionAppParserUnitTest, MetadataIsEmpty) {
- base::MockCallback<base::OnceCallback<void(absl::optional<std::string>)>>
- on_companion_app_parsed;
- EXPECT_CALL(on_companion_app_parsed, Run(testing::Eq(absl::nullopt)))
- .Times(1);
- parser_->GetAppPackageName(deviceWithEmptyMetadata_,
- on_companion_app_parsed.Get());
- base::RunLoop().RunUntilIdle();
- }
- TEST_F(CompanionAppParserUnitTest, MetadataIsValid) {
- base::MockCallback<base::OnceCallback<void(absl::optional<std::string>)>>
- on_companion_app_parsed;
- EXPECT_CALL(on_companion_app_parsed, Run(testing::Eq(absl::nullopt)))
- .Times(1);
- parser_->GetAppPackageName(deviceWithValidMetadata_,
- on_companion_app_parsed.Get());
- base::RunLoop().RunUntilIdle();
- }
- TEST_F(CompanionAppParserUnitTest, MetadataHasEmptyParameter) {
- base::MockCallback<base::OnceCallback<void(absl::optional<std::string>)>>
- on_companion_app_parsed;
- EXPECT_CALL(on_companion_app_parsed, Run(testing::Eq(absl::nullopt)))
- .Times(1);
- parser_->GetAppPackageName(deviceWithEmptyParameterMetadata_,
- on_companion_app_parsed.Get());
- base::RunLoop().RunUntilIdle();
- }
- TEST_F(CompanionAppParserUnitTest, NoMetadata) {
- base::MockCallback<base::OnceCallback<void(absl::optional<std::string>)>>
- on_companion_app_parsed;
- EXPECT_CALL(on_companion_app_parsed, Run(testing::Eq(absl::nullopt)))
- .Times(0);
- parser_->GetAppPackageName(deviceWithNoMetadata_,
- on_companion_app_parsed.Get());
- base::RunLoop().RunUntilIdle();
- }
- } // namespace quick_pair
- } // namespace ash
|