xref: /aosp_15_r20/external/federated-compute/fcp/secagg/client/secagg_client_completed_state_test.cc (revision 14675a029014e728ec732f129a32e299b2da0601)
1 /*
2  * Copyright 2018 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "fcp/secagg/client/secagg_client_completed_state.h"
18 
19 #include <string>
20 #include <unordered_map>
21 
22 #include "gmock/gmock.h"
23 #include "gtest/gtest.h"
24 #include "absl/container/node_hash_map.h"
25 #include "fcp/base/monitoring.h"
26 #include "fcp/secagg/shared/secagg_messages.pb.h"
27 #include "fcp/secagg/shared/secagg_vector.h"
28 #include "fcp/secagg/testing/mock_send_to_server_interface.h"
29 #include "fcp/secagg/testing/mock_state_transition_listener.h"
30 
31 namespace fcp {
32 namespace secagg {
33 namespace {
34 
35 using ::testing::Eq;
36 
TEST(SecAggClientCompletedStateTest,IsAbortedReturnsFalse)37 TEST(SecAggClientCompletedStateTest, IsAbortedReturnsFalse) {
38   MockSendToServerInterface* sender = new MockSendToServerInterface();
39   MockStateTransitionListener* transition_listener =
40       new MockStateTransitionListener();
41   SecAggClientCompletedState completed_state(
42       std::unique_ptr<SendToServerInterface>{sender},
43       std::unique_ptr<MockStateTransitionListener>{transition_listener});
44   EXPECT_THAT(completed_state.IsAborted(), Eq(false));
45 }
46 
TEST(SecAggClientCompletedStateTest,IsCompletedSuccessfullyReturnsTrue)47 TEST(SecAggClientCompletedStateTest, IsCompletedSuccessfullyReturnsTrue) {
48   MockSendToServerInterface* sender = new MockSendToServerInterface();
49   MockStateTransitionListener* transition_listener =
50       new MockStateTransitionListener();
51   SecAggClientCompletedState completed_state(
52       std::unique_ptr<SendToServerInterface>{sender},
53       std::unique_ptr<MockStateTransitionListener>{transition_listener});
54   EXPECT_THAT(completed_state.IsCompletedSuccessfully(), Eq(true));
55 }
56 
TEST(SecAggClientCompletedStateTest,ErrorMessageRaisesErrorStatus)57 TEST(SecAggClientCompletedStateTest, ErrorMessageRaisesErrorStatus) {
58   MockSendToServerInterface* sender = new MockSendToServerInterface();
59   MockStateTransitionListener* transition_listener =
60       new MockStateTransitionListener();
61   SecAggClientCompletedState completed_state(
62       std::unique_ptr<SendToServerInterface>{sender},
63       std::unique_ptr<MockStateTransitionListener>{transition_listener});
64   EXPECT_THAT(completed_state.ErrorMessage().ok(), Eq(false));
65 }
66 
TEST(SecAggClientCompletedStateTest,StartRaisesErrorStatus)67 TEST(SecAggClientCompletedStateTest, StartRaisesErrorStatus) {
68   MockSendToServerInterface* sender = new MockSendToServerInterface();
69   MockStateTransitionListener* transition_listener =
70       new MockStateTransitionListener();
71   SecAggClientCompletedState completed_state(
72       std::unique_ptr<SendToServerInterface>{sender},
73       std::unique_ptr<MockStateTransitionListener>{transition_listener});
74   EXPECT_THAT(completed_state.Start().ok(), Eq(false));
75 }
76 
TEST(SecAggClientCompletedStateTest,HandleMessageRaisesErrorStatus)77 TEST(SecAggClientCompletedStateTest, HandleMessageRaisesErrorStatus) {
78   MockSendToServerInterface* sender = new MockSendToServerInterface();
79   MockStateTransitionListener* transition_listener =
80       new MockStateTransitionListener();
81   SecAggClientCompletedState completed_state(
82       std::unique_ptr<SendToServerInterface>{sender},
83       std::unique_ptr<MockStateTransitionListener>{transition_listener});
84   EXPECT_THAT(
85       completed_state
86           .HandleMessage(ServerToClientWrapperMessage::default_instance())
87           .ok(),
88       Eq(false));
89 }
90 
TEST(SecAggClientCompletedStateTest,SetInputRaisesErrorStatus)91 TEST(SecAggClientCompletedStateTest, SetInputRaisesErrorStatus) {
92   MockSendToServerInterface* sender = new MockSendToServerInterface();
93   MockStateTransitionListener* transition_listener =
94       new MockStateTransitionListener();
95   SecAggClientCompletedState completed_state(
96       std::unique_ptr<SendToServerInterface>{sender},
97       std::unique_ptr<MockStateTransitionListener>{transition_listener});
98   EXPECT_THAT(
99       completed_state.SetInput(std::make_unique<SecAggVectorMap>()).ok(),
100       Eq(false));
101 }
102 
TEST(SecAggClientCompletedStateTest,AbortRaisesErrorStatus)103 TEST(SecAggClientCompletedStateTest, AbortRaisesErrorStatus) {
104   MockSendToServerInterface* sender = new MockSendToServerInterface();
105   MockStateTransitionListener* transition_listener =
106       new MockStateTransitionListener();
107   SecAggClientCompletedState completed_state(
108       std::unique_ptr<SendToServerInterface>{sender},
109       std::unique_ptr<MockStateTransitionListener>{transition_listener});
110   EXPECT_THAT(completed_state.Abort("incorrect abort").ok(), Eq(false));
111 }
112 
113 }  // namespace
114 }  // namespace secagg
115 }  // namespace fcp
116