xref: /llvm-project/lldb/unittests/Utility/UserIDResolverTest.cpp (revision 2fe8327406050d2585d2ced910a678e28caefcf5)
180814287SRaphael Isemann //===-- UserIDResolverTest.cpp --------------------------------------------===//
2aa51e6a6SPavel Labath //
3aa51e6a6SPavel Labath // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4aa51e6a6SPavel Labath // See https://llvm.org/LICENSE.txt for license information.
5aa51e6a6SPavel Labath // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6aa51e6a6SPavel Labath //
7aa51e6a6SPavel Labath //===----------------------------------------------------------------------===//
8aa51e6a6SPavel Labath 
9aa51e6a6SPavel Labath #include "lldb/Utility/UserIDResolver.h"
10aa51e6a6SPavel Labath #include "gmock/gmock.h"
11f190ce62SKazu Hirata #include <optional>
12aa51e6a6SPavel Labath 
13aa51e6a6SPavel Labath using namespace lldb_private;
14aa51e6a6SPavel Labath using namespace testing;
15aa51e6a6SPavel Labath 
16aa51e6a6SPavel Labath namespace {
17aa51e6a6SPavel Labath class TestUserIDResolver : public UserIDResolver {
18aa51e6a6SPavel Labath public:
19*2fe83274SKazu Hirata   MOCK_METHOD1(DoGetUserName, std::optional<std::string>(id_t uid));
20*2fe83274SKazu Hirata   MOCK_METHOD1(DoGetGroupName, std::optional<std::string>(id_t gid));
21aa51e6a6SPavel Labath };
22aa51e6a6SPavel Labath } // namespace
23aa51e6a6SPavel Labath 
TEST(UserIDResolver,GetUserName)24aa51e6a6SPavel Labath TEST(UserIDResolver, GetUserName) {
25aa51e6a6SPavel Labath   StrictMock<TestUserIDResolver> r;
26aa51e6a6SPavel Labath   llvm::StringRef user47("foo");
27aa51e6a6SPavel Labath   EXPECT_CALL(r, DoGetUserName(47)).Times(1).WillOnce(Return(user47.str()));
28d2a6114fSKazu Hirata   EXPECT_CALL(r, DoGetUserName(42)).Times(1).WillOnce(Return(std::nullopt));
29aa51e6a6SPavel Labath 
30aa51e6a6SPavel Labath   // Call functions twice to make sure the caching works.
31aa51e6a6SPavel Labath   EXPECT_EQ(user47, r.GetUserName(47));
32aa51e6a6SPavel Labath   EXPECT_EQ(user47, r.GetUserName(47));
33d2a6114fSKazu Hirata   EXPECT_EQ(std::nullopt, r.GetUserName(42));
34d2a6114fSKazu Hirata   EXPECT_EQ(std::nullopt, r.GetUserName(42));
35aa51e6a6SPavel Labath }
36aa51e6a6SPavel Labath 
TEST(UserIDResolver,GetGroupName)37aa51e6a6SPavel Labath TEST(UserIDResolver, GetGroupName) {
38aa51e6a6SPavel Labath   StrictMock<TestUserIDResolver> r;
39aa51e6a6SPavel Labath   llvm::StringRef group47("foo");
40aa51e6a6SPavel Labath   EXPECT_CALL(r, DoGetGroupName(47)).Times(1).WillOnce(Return(group47.str()));
41d2a6114fSKazu Hirata   EXPECT_CALL(r, DoGetGroupName(42)).Times(1).WillOnce(Return(std::nullopt));
42aa51e6a6SPavel Labath 
43aa51e6a6SPavel Labath   // Call functions twice to make sure the caching works.
44aa51e6a6SPavel Labath   EXPECT_EQ(group47, r.GetGroupName(47));
45aa51e6a6SPavel Labath   EXPECT_EQ(group47, r.GetGroupName(47));
46d2a6114fSKazu Hirata   EXPECT_EQ(std::nullopt, r.GetGroupName(42));
47d2a6114fSKazu Hirata   EXPECT_EQ(std::nullopt, r.GetGroupName(42));
48aa51e6a6SPavel Labath }
49