| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <brillo/errors/error_codes.h> |
| #include <dbus/dlcservice/dbus-constants.h> |
| #include <gmock/gmock.h> |
| #include <gtest/gtest.h> |
| |
| #include "dlcservice/error.h" |
| |
| using brillo::errors::dbus::kDomain; |
| |
| namespace dlcservice { |
| |
| TEST(Error, Create) { |
| brillo::ErrorPtr err = Error::Create(FROM_HERE, "error-code", "msg"); |
| EXPECT_STREQ(kDomain, err->GetDomain().c_str()); |
| EXPECT_STREQ("error-code", err->GetCode().c_str()); |
| EXPECT_STREQ("msg", err->GetMessage().c_str()); |
| } |
| |
| TEST(Error, CreateInternal) { |
| brillo::ErrorPtr err = Error::CreateInternal(FROM_HERE, "error-code", "msg"); |
| EXPECT_STREQ(kDlcErrorDomain, err->GetDomain().c_str()); |
| EXPECT_STREQ("error-code", err->GetCode().c_str()); |
| EXPECT_STREQ("msg", err->GetMessage().c_str()); |
| } |
| |
| TEST(Error, ToString) { |
| brillo::ErrorPtr err = Error::Create(FROM_HERE, "error-code", "message"); |
| EXPECT_STREQ("Error Code=error-code, Error Message=message", |
| Error::ToString(err).c_str()); |
| } |
| |
| TEST(Error, AddTo) { |
| brillo::ErrorPtr err = Error::Create(FROM_HERE, "root-code", "msg"); |
| Error::AddTo(&err, FROM_HERE, "linked-code", "msg-linked"); |
| EXPECT_STREQ("linked-code", err->GetCode().c_str()); |
| EXPECT_STREQ(kDomain, err->GetDomain().c_str()); |
| EXPECT_STREQ("root-code", err->GetInnerError()->GetCode().c_str()); |
| } |
| |
| TEST(Error, AddInternalTo) { |
| brillo::ErrorPtr err = Error::Create(FROM_HERE, "root-code", "msg"); |
| Error::AddInternalTo(&err, FROM_HERE, "linked-code", "msg-linked"); |
| EXPECT_STREQ("linked-code", err->GetCode().c_str()); |
| EXPECT_STREQ(kDlcErrorDomain, err->GetDomain().c_str()); |
| EXPECT_STREQ("root-code", err->GetInnerError()->GetCode().c_str()); |
| } |
| |
| TEST(Error, GetRootErrorCode) { |
| brillo::ErrorPtr err = Error::Create(FROM_HERE, "root-code", "msg"); |
| Error::AddInternalTo(&err, FROM_HERE, "linked-code", "msg-linked"); |
| Error::AddInternalTo(&err, FROM_HERE, "linked-code2", "msg-linked"); |
| EXPECT_STREQ("root-code", Error::GetRootErrorCode(err).c_str()); |
| } |
| |
| TEST(Error, GetDbusErrorCode) { |
| brillo::ErrorPtr err = Error::CreateInternal(FROM_HERE, "root-code", "msg"); |
| Error::AddTo(&err, FROM_HERE, "linked-code", "dbus-msg-linked"); |
| Error::AddInternalTo(&err, FROM_HERE, "linked-code2", "msg-linked"); |
| Error::AddTo(&err, FROM_HERE, "linked-code2", "dbus-msg-linked"); |
| EXPECT_STREQ("linked-code2", Error::GetDbusErrorCode(err).c_str()); |
| } |
| |
| TEST(Error, ConvertToDbusError_internal_dbus) { |
| brillo::ErrorPtr err = Error::Create(FROM_HERE, "dbus-code", "msg"); |
| Error::AddInternalTo(&err, FROM_HERE, "internal-code", "msg-linked"); |
| EXPECT_STREQ("internal-code", err->GetCode().c_str()); |
| EXPECT_STREQ(kDlcErrorDomain, err->GetDomain().c_str()); |
| EXPECT_TRUE(err->GetInnerError() != nullptr); |
| |
| Error::ConvertToDbusError(&err); |
| EXPECT_STREQ("dbus-code", err->GetCode().c_str()); |
| EXPECT_STREQ(kDomain, err->GetDomain().c_str()); |
| EXPECT_TRUE(err->GetInnerError() == nullptr); |
| } |
| |
| TEST(Error, ConvertToDbusError_dbus) { |
| brillo::ErrorPtr err = Error::Create(FROM_HERE, "dbus-code", "msg"); |
| Error::ConvertToDbusError(&err); |
| EXPECT_STREQ("dbus-code", err->GetCode().c_str()); |
| EXPECT_STREQ(kDomain, err->GetDomain().c_str()); |
| EXPECT_TRUE(err->GetInnerError() == nullptr); |
| } |
| |
| TEST(Error, ConvertToDbusError_dbus_internal) { |
| brillo::ErrorPtr err = |
| Error::CreateInternal(FROM_HERE, "internal-code", "msg"); |
| Error::AddTo(&err, FROM_HERE, "dbus-code", "msg-linked"); |
| EXPECT_STREQ("dbus-code", err->GetCode().c_str()); |
| EXPECT_STREQ(kDomain, err->GetDomain().c_str()); |
| EXPECT_TRUE(err->GetInnerError() != nullptr); |
| |
| Error::ConvertToDbusError(&err); |
| EXPECT_STREQ("dbus-code", err->GetCode().c_str()); |
| EXPECT_STREQ(kDomain, err->GetDomain().c_str()); |
| EXPECT_TRUE(err->GetInnerError() == nullptr); |
| } |
| |
| TEST(Error, ConvertToDbusError_internal_only) { |
| brillo::ErrorPtr err = |
| Error::CreateInternal(FROM_HERE, "internal-code", "msg"); |
| Error::AddInternalTo(&err, FROM_HERE, "internal-code2", "msg-linked"); |
| |
| Error::ConvertToDbusError(&err); |
| EXPECT_STREQ(kErrorInternal, err->GetCode().c_str()); |
| EXPECT_STREQ(kDomain, err->GetDomain().c_str()); |
| EXPECT_TRUE(err->GetInnerError() == nullptr); |
| } |
| |
| } // namespace dlcservice |