• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 
18 #include "account_manager_adapter.h"
19 #include "avsession_users_manager.h"
20 #include "isession_listener.h"
21 
22 using namespace testing::ext;
23 using namespace OHOS::AVSession;
24 
25 namespace OHOS {
26 namespace AVSession {
27 
28 class AVSessionUsersManagerTest : public testing::Test {
29 public:
30     static void SetUpTestCase(void);
31     static void TearDownTestCase(void);
32     void SetUp();
33     void TearDown();
34 };
35 
SetUpTestCase()36 void AVSessionUsersManagerTest::SetUpTestCase() {}
37 
TearDownTestCase()38 void AVSessionUsersManagerTest::TearDownTestCase() {}
39 
SetUp()40 void AVSessionUsersManagerTest::SetUp() {}
41 
TearDown()42 void AVSessionUsersManagerTest::TearDown() {}
43 
44 class ISessionListenerMock : public ISessionListener {
45 public:
OnSessionCreate(const AVSessionDescriptor & descriptor)46     ErrCode OnSessionCreate(const AVSessionDescriptor& descriptor) override{ return AVSESSION_SUCCESS; };
OnSessionRelease(const AVSessionDescriptor & descriptor)47     ErrCode OnSessionRelease(const AVSessionDescriptor& descriptor) override { return AVSESSION_SUCCESS; };
OnTopSessionChange(const AVSessionDescriptor & descriptor)48     ErrCode OnTopSessionChange(const AVSessionDescriptor& descriptor) override { return AVSESSION_SUCCESS; };
OnAudioSessionChecked(const int32_t uid)49     ErrCode OnAudioSessionChecked(const int32_t uid) override { return AVSESSION_SUCCESS; };
OnDeviceAvailable(const OutputDeviceInfo & castOutputDeviceInfo)50     ErrCode OnDeviceAvailable(const OutputDeviceInfo& castOutputDeviceInfo) override { return AVSESSION_SUCCESS; };
OnDeviceLogEvent(const int32_t eventId,const int64_t param)51     ErrCode OnDeviceLogEvent(
52         const int32_t eventId, const int64_t param) override { return AVSESSION_SUCCESS; };
OnDeviceOffline(const std::string & deviceId)53     ErrCode OnDeviceOffline(const std::string& deviceId) override { return AVSESSION_SUCCESS; };
OnDeviceStateChange(const DeviceState & deviceState)54     ErrCode OnDeviceStateChange(const DeviceState& deviceState) override { return AVSESSION_SUCCESS; };
OnRemoteDistributedSessionChange(const std::vector<OHOS::sptr<IRemoteObject>> & sessionControllers)55     ErrCode OnRemoteDistributedSessionChange(
56         const std::vector<OHOS::sptr<IRemoteObject>>& sessionControllers) override { return AVSESSION_SUCCESS; };
AsObject()57     OHOS::sptr<IRemoteObject> AsObject() override { return nullptr; };
58 };
59 
60 HWTEST_F(AVSessionUsersManagerTest, HandleUserRemoved001, TestSize.Level0)
61 {
62     auto& manager = AVSessionUsersManager::GetInstance();
63     int32_t userId = 0;
64     manager.HandleUserRemoved(userId);
65     EXPECT_TRUE(manager.sessionStackMapByUserId_.size() == 0);
66 }
67 
68 HWTEST_F(AVSessionUsersManagerTest, HandleUserRemoved002, TestSize.Level0)
69 {
70     auto& manager = AVSessionUsersManager::GetInstance();
71     int32_t userId = 0;
72     std::shared_ptr<SessionStack> stack = std::make_shared<SessionStack>();
73     manager.sessionStackMapByUserId_.insert({userId, stack});
74     manager.HandleUserRemoved(userId);
75     EXPECT_TRUE(manager.sessionStackMapByUserId_.size() == 0);
76 }
77 
78 HWTEST_F(AVSessionUsersManagerTest, HandleUserRemoved003, TestSize.Level0)
79 {
80     auto& manager = AVSessionUsersManager::GetInstance();
81     int32_t userId = 0;
82     std::shared_ptr<SessionStack> stack = std::make_shared<SessionStack>();
83     manager.sessionStackMapByUserId_.insert({userId, stack});
84     manager.frontSessionListMapByUserId_.insert({userId, std::make_shared<std::list<OHOS::sptr<AVSessionItem>>>()});
85     manager.sessionListenersMapByUserId_.insert({userId, std::map<pid_t, OHOS::sptr<ISessionListener>>()});
86     manager.topSessionsMapByUserId_.insert({userId, OHOS::sptr<AVSessionItem>(nullptr)});
87     manager.HandleUserRemoved(userId);
88     EXPECT_TRUE(manager.sessionStackMapByUserId_.size() == 0);
89 }
90 
91 HWTEST_F(AVSessionUsersManagerTest, AddSessionListener001, TestSize.Level0)
92 {
93     auto& manager = AVSessionUsersManager::GetInstance();
94     pid_t pid = 0;
95     OHOS::sptr<ISessionListener> listener = new ISessionListenerMock();
96     manager.sessionListenersMapByUserId_.clear();
97     manager.AddSessionListener(pid, listener);
98     auto iterForListenerMap = manager.sessionListenersMapByUserId_.find(manager.curUserId_);
99     EXPECT_TRUE(iterForListenerMap != manager.sessionListenersMapByUserId_.end());
100 }
101 
102 HWTEST_F(AVSessionUsersManagerTest, RemoveSessionListener001, TestSize.Level0)
103 {
104     auto& manager = AVSessionUsersManager::GetInstance();
105     pid_t pid = 0;
106     OHOS::sptr<ISessionListener> listener = new ISessionListenerMock();
107     std::map<pid_t, OHOS::sptr<ISessionListener>> listenerMap;
108     listenerMap.insert({pid, listener});
109     int32_t userId = 0;
110     manager.sessionListenersMapByUserId_.insert({userId, listenerMap});
111     manager.sessionListenersMap_[pid] = listener;
112     manager.RemoveSessionListener(pid);
113     EXPECT_TRUE(manager.sessionListenersMapByUserId_.size() > 0);
114 }
115 
116 HWTEST_F(AVSessionUsersManagerTest, GetContainerFromUser001, TestSize.Level0)
117 {
118     auto& manager = AVSessionUsersManager::GetInstance();
119     int32_t userId = 0;
120     manager.sessionStackMapByUserId_.insert({userId, nullptr});
121     manager.GetContainerFromUser(userId);
122     auto iter = manager.sessionStackMapByUserId_.find(userId);
123     EXPECT_TRUE(iter != manager.sessionStackMapByUserId_.end());
124 }
125 
126 HWTEST_F(AVSessionUsersManagerTest, GetDirForCurrentUser001, TestSize.Level0)
127 {
128     auto& manager = AVSessionUsersManager::GetInstance();
129     manager.curUserId_ = -1;
130     int32_t userId = 0;
131     std::string ret = manager.GetDirForCurrentUser(userId);
132     EXPECT_TRUE(ret == "/data/service/el2/public/av_session/");
133 }
134 
135 HWTEST_F(AVSessionUsersManagerTest, Init001, TestSize.Level0)
136 {
137     int32_t userId = 1;
138     AVSessionUsersManager::GetInstance().Init();
139     for (const auto& listener : AccountManagerAdapter::GetInstance().accountEventsListenerList_) {
140         if (listener) {
141             listener(AccountManagerAdapter::accountEventSwitched, userId);
142         }
143     }
144     EXPECT_EQ(AVSessionUsersManager::GetInstance().curUserId_, userId);
145 }
146 
147 HWTEST_F(AVSessionUsersManagerTest, Init002, TestSize.Level0)
148 {
149     int32_t userId = 1;
150     int32_t newUserId = 100;
151     AVSessionUsersManager::GetInstance().Init();
152     for (const auto& listener : AccountManagerAdapter::GetInstance().accountEventsListenerList_) {
153         if (listener) {
154             listener(AccountManagerAdapter::accountEventRemoved, userId);
155         }
156     }
157     EXPECT_EQ(AVSessionUsersManager::GetInstance().curUserId_, newUserId);
158 }
159 
160 HWTEST_F(AVSessionUsersManagerTest, Init003, TestSize.Level0)
161 {
162     int32_t userId = 100;
163     AVSessionUsersManager::GetInstance().Init();
164     for (const auto& listener : AccountManagerAdapter::GetInstance().accountEventsListenerList_) {
165         if (listener) {
166             listener("other", 1);
167         }
168     }
169     EXPECT_EQ(AVSessionUsersManager::GetInstance().curUserId_, userId);
170 }
171 
172 HWTEST_F(AVSessionUsersManagerTest, Init004, TestSize.Level0)
173 {
174     int32_t userId = 1;
175     AVSessionUsersManager::GetInstance().Init();
176     AVSessionUsersManager::GetInstance().aliveUsers_.push_back(userId);
177     for (const auto& listener : AccountManagerAdapter::GetInstance().accountEventsListenerList_) {
178         if (listener) {
179             listener(AccountManagerAdapter::accountEventSwitched, userId);
180         }
181     }
182     EXPECT_EQ(AVSessionUsersManager::GetInstance().curUserId_, userId);
183 }
184 
185 HWTEST_F(AVSessionUsersManagerTest, GetCurSessionListForKeyEvent001, TestSize.Level0)
186 {
187     int32_t userId = 1;
188     AVSessionUsersManager::GetInstance().GetCurSessionListForKeyEvent(userId);
189     EXPECT_EQ(AVSessionUsersManager::GetInstance().curUserId_, userId);
190 }
191 
192 HWTEST_F(AVSessionUsersManagerTest, UpdateSessionForCurrentUser001, TestSize.Level1)
193 {
194     auto& manager = AVSessionUsersManager::GetInstance();
195     AVSessionDescriptor descriptor;
196     descriptor.sessionId_ = "SessionId";
197     descriptor.userId_ = 0;
198     sptr<AVSessionItem> item = new(std::nothrow) AVSessionItem(descriptor, descriptor.userId_);
199     int32_t pid = 1;
200     std::string oldAbility = "oldAbilityName";
201     std::string newAbility = "newAbilityName";
202     auto res = manager.AddSessionForCurrentUser(pid, oldAbility, item);
203     EXPECT_EQ(res, 0);
204     res = manager.UpdateSessionForCurrentUser(pid, oldAbility, newAbility, item);
205     EXPECT_EQ(res, 0);
206 
207     sptr<AVSessionItem> result;
208     result = manager.GetContainerFromAll().GetSession(pid, newAbility);
209     EXPECT_NE(result, nullptr);
210 }
211 } //AVSession
212 } //OHOS