xref: /aosp_15_r20/external/anonymous-counting-tokens/act/fake_act_test.cc (revision a26f13018b999b025c962678da434c0a5aec4dae)
1*a26f1301SXin Li /*
2*a26f1301SXin Li  * Copyright 2023 Google LLC.
3*a26f1301SXin Li  * Licensed under the Apache License, Version 2.0 (the "License");
4*a26f1301SXin Li  * you may not use this file except in compliance with the License.
5*a26f1301SXin Li  * You may obtain a copy of the License at
6*a26f1301SXin Li  *
7*a26f1301SXin Li  *     https://www.apache.org/licenses/LICENSE-2.0
8*a26f1301SXin Li  *
9*a26f1301SXin Li  * Unless required by applicable law or agreed to in writing, software
10*a26f1301SXin Li  * distributed under the License is distributed on an "AS IS" BASIS,
11*a26f1301SXin Li  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*a26f1301SXin Li  * See the License for the specific language governing permissions and
13*a26f1301SXin Li  * limitations under the License.
14*a26f1301SXin Li  */
15*a26f1301SXin Li 
16*a26f1301SXin Li #include "act/fake_act.h"
17*a26f1301SXin Li 
18*a26f1301SXin Li #include <gmock/gmock.h>
19*a26f1301SXin Li #include <gtest/gtest.h>
20*a26f1301SXin Li 
21*a26f1301SXin Li #include <memory>
22*a26f1301SXin Li #include <string>
23*a26f1301SXin Li #include <tuple>
24*a26f1301SXin Li #include <utility>
25*a26f1301SXin Li #include <vector>
26*a26f1301SXin Li 
27*a26f1301SXin Li #include "private_join_and_compute/util/status.inc"
28*a26f1301SXin Li #include "private_join_and_compute/util/status_testing.inc"
29*a26f1301SXin Li 
30*a26f1301SXin Li namespace private_join_and_compute {
31*a26f1301SXin Li namespace anonymous_counting_tokens {
32*a26f1301SXin Li namespace {
33*a26f1301SXin Li 
TEST(FakeActTest,FingerprintsAreEqualExactlyWhenMessagesAreEqual)34*a26f1301SXin Li TEST(FakeActTest, FingerprintsAreEqualExactlyWhenMessagesAreEqual) {
35*a26f1301SXin Li   auto fake_act = FakeAnonymousCountingTokens::Create();
36*a26f1301SXin Li 
37*a26f1301SXin Li   std::vector<std::string> messages_1 = {"m1", "m2"};
38*a26f1301SXin Li   std::vector<std::string> fingerprints_1;
39*a26f1301SXin Li 
40*a26f1301SXin Li   std::vector<std::string> messages_2 = {"m3", "m1"};
41*a26f1301SXin Li   std::vector<std::string> fingerprints_2;
42*a26f1301SXin Li 
43*a26f1301SXin Li   // Empty parameters for testing the fake.
44*a26f1301SXin Li   SchemeParameters scheme_parameters;
45*a26f1301SXin Li   ClientPublicParameters client_public_parameters;
46*a26f1301SXin Li   ClientPrivateParameters client_private_parameters;
47*a26f1301SXin Li   ServerPublicParameters server_public_parameters;
48*a26f1301SXin Li 
49*a26f1301SXin Li   ASSERT_OK_AND_ASSIGN(
50*a26f1301SXin Li       std::tie(fingerprints_1, std::ignore, std::ignore),
51*a26f1301SXin Li       fake_act->GenerateTokensRequest(
52*a26f1301SXin Li           messages_1, scheme_parameters, client_public_parameters,
53*a26f1301SXin Li           client_private_parameters, server_public_parameters));
54*a26f1301SXin Li   ASSERT_OK_AND_ASSIGN(
55*a26f1301SXin Li       std::tie(fingerprints_2, std::ignore, std::ignore),
56*a26f1301SXin Li       fake_act->GenerateTokensRequest(
57*a26f1301SXin Li           messages_2, scheme_parameters, client_public_parameters,
58*a26f1301SXin Li           client_private_parameters, server_public_parameters));
59*a26f1301SXin Li 
60*a26f1301SXin Li   // Only the fingerprints for "m1" should be the same.
61*a26f1301SXin Li   EXPECT_EQ(fingerprints_1[0], fingerprints_2[1]);
62*a26f1301SXin Li   EXPECT_NE(fingerprints_1[0], fingerprints_2[0]);
63*a26f1301SXin Li   EXPECT_NE(fingerprints_1[1], fingerprints_2[1]);
64*a26f1301SXin Li   EXPECT_NE(fingerprints_1[1], fingerprints_2[0]);
65*a26f1301SXin Li }
66*a26f1301SXin Li 
TEST(FakeActTest,DifferentTokensAreNotEqual)67*a26f1301SXin Li TEST(FakeActTest, DifferentTokensAreNotEqual) {
68*a26f1301SXin Li   auto fake_act = FakeAnonymousCountingTokens::Create();
69*a26f1301SXin Li 
70*a26f1301SXin Li   std::vector<std::string> messages = {"m1", "m2"};
71*a26f1301SXin Li   // Empty parameters and messages for testing the fake.
72*a26f1301SXin Li   TokensRequest tokens_request;
73*a26f1301SXin Li   TokensRequestPrivateState tokens_request_private_state;
74*a26f1301SXin Li   TokensResponse tokens_response;
75*a26f1301SXin Li   SchemeParameters scheme_parameters;
76*a26f1301SXin Li   ClientPublicParameters client_public_parameters;
77*a26f1301SXin Li   ClientPrivateParameters client_private_parameters;
78*a26f1301SXin Li   ServerPublicParameters server_public_parameters;
79*a26f1301SXin Li 
80*a26f1301SXin Li   ASSERT_OK_AND_ASSIGN(
81*a26f1301SXin Li       std::vector<Token> tokens,
82*a26f1301SXin Li       fake_act->RecoverTokens(
83*a26f1301SXin Li           messages, tokens_request, tokens_request_private_state,
84*a26f1301SXin Li           tokens_response, scheme_parameters, client_public_parameters,
85*a26f1301SXin Li           client_private_parameters, server_public_parameters));
86*a26f1301SXin Li 
87*a26f1301SXin Li   EXPECT_NE(tokens[0].SerializeAsString(), tokens[1].SerializeAsString());
88*a26f1301SXin Li }
89*a26f1301SXin Li 
90*a26f1301SXin Li }  // namespace
91*a26f1301SXin Li }  // namespace anonymous_counting_tokens
92*a26f1301SXin Li 
93*a26f1301SXin Li }  // namespace private_join_and_compute
94