blob: d70dcd0861721fd3cbd08051d6754ddd558b4e86 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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 <fuchsia/modular/testing/cpp/fidl.h>
#include <lib/modular/testing/cpp/test_harness_builder.h>
#include <sdk/lib/sys/cpp/service_directory.h>
#include <sdk/lib/sys/cpp/testing/test_with_environment.h>
#include "src/modular/lib/modular_test_harness/cpp/test_harness_fixture.h"
class AutoLoginBaseShellTest : public modular_testing::TestHarnessFixture {};
// Use auto_login_base_shell and expect the user to be automatically logged into
// session shell.
TEST_F(AutoLoginBaseShellTest, AutoLoginBaseShellLaunchesSessionShell) {
constexpr char kAutoLoginBaseShellUrl[] =
"fuchsia-pkg://fuchsia.com/auto_login_base_shell#meta/"
"auto_login_base_shell.cmx";
fuchsia::modular::testing::TestHarnessSpec spec;
spec.mutable_basemgr_config()->mutable_base_shell()->mutable_app_config()->set_url(
kAutoLoginBaseShellUrl);
modular_testing::TestHarnessBuilder builder(std::move(spec));
// Listen for session shell interception.
bool intercepted = false;
builder.InterceptSessionShell(
{.url = modular_testing::TestHarnessBuilder::GenerateFakeUrl(),
.launch_handler =
[&intercepted](
fuchsia::sys::StartupInfo startup_info,
fidl::InterfaceHandle<fuchsia::modular::testing::InterceptedComponent> component) {
intercepted = true;
}});
builder.BuildAndRun(test_harness());
RunLoopUntil([&] { return intercepted; });
}