blob: a141955f1474565ce38e54d50d2ed6b8c4f31b87 [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "encoder/shuffler_client.h"
#include <memory>
#include <string>
#include <utility>
#include "./encrypted_message.pb.h"
#include "./gtest.h"
#include "./logging.h"
#include "third_party/gflags/include/gflags/gflags.h"
namespace cobalt {
namespace encoder {
class ShufflerClientTest : public ::testing::Test {
public:
ShufflerClientTest() {}
protected:
};
// This is just a smoke test of ShufflerClient. There is not very much we
// can test in the unit test environment--since ShufflerClient is a thin wrapper
// around gRPC there is no sensible place to insert a mock. ShufflerClient is
// thouroughly tested by our integration tests.
TEST_F(ShufflerClientTest, SmokeTest) {
static const std::string kUri = "www.not.really.a.uri";
static const EncryptedMessage encrypted_message;
bool use_tls = false;
std::unique_ptr<ShufflerClient> shuffler_client(
new ShufflerClient(kUri, use_tls));
// Since this is a unit test and we are not mocking the gRPC connection
// and there is no actual Shuffler service to connect to we expect
// SendToShuffler() to fail. Here we are only testing that it fails in
// the expected way. We set the gRPC timeout to the current time and
// expect a DEADLINE_EXCEEDED error. Note that if we don't set a timeout
// then the call hangs forever.
std::unique_ptr<grpc::ClientContext> context(new grpc::ClientContext());
context->set_deadline(std::chrono::system_clock::now());
auto status =
shuffler_client->SendToShuffler(encrypted_message, context.get());
EXPECT_EQ(grpc::DEADLINE_EXCEEDED, status.error_code());
// Try again with use_tls = true.
use_tls = true;
// A context can only be used once.
context.reset(new grpc::ClientContext());
context->set_deadline(std::chrono::system_clock::now());
status =
shuffler_client->SendToShuffler(encrypted_message, context.get());
EXPECT_EQ(grpc::DEADLINE_EXCEEDED, status.error_code());
}
} // namespace encoder
} // namespace cobalt