blob: 5d89ceb77507dd9d64fde0bd81b5b2440f3a4692 [file] [log] [blame]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "dns-proxy/controller.h"
#include <memory>
#include <string>
#include <utility>
#include <chromeos/patchpanel/mock_message_dispatcher.h>
#include <google/protobuf/message_lite.h>
#include <gtest/gtest.h>
#include "dns-proxy/ipc.pb.h"
#include "dns-proxy/mock_resolv_conf.h"
using testing::Test;
namespace dns_proxy {
using testing::_;
using testing::ElementsAre;
using testing::IsEmpty;
class ControllerTest : public Test {
public:
void SetUp() override {
auto resolv_conf = std::make_unique<MockResolvConf>();
resolv_conf_ptr_ = resolv_conf.get();
controller_ = std::make_unique<Controller>(std::move(resolv_conf));
}
protected:
MockResolvConf* resolv_conf_ptr_;
std::unique_ptr<Controller> controller_;
};
TEST_F(ControllerTest, SetProxyAddrs) {
ProxyAddrMessage msg;
msg.set_type(ProxyAddrMessage::SET_ADDRS);
msg.add_addrs("100.115.92.100");
msg.add_addrs("::1");
EXPECT_CALL(*resolv_conf_ptr_,
SetDNSProxyAddresses(ElementsAre("100.115.92.100", "::1")));
controller_->OnProxyAddrMessage(msg);
}
TEST_F(ControllerTest, ClearProxyAddrs) {
ProxyAddrMessage msg;
msg.set_type(ProxyAddrMessage::CLEAR_ADDRS);
EXPECT_CALL(*resolv_conf_ptr_, SetDNSProxyAddresses(IsEmpty()));
controller_->OnProxyAddrMessage(msg);
}
} // namespace dns_proxy