blob: ab5c58058e18b07dc86c6df12d7d55228a02f794 [file]
// Copyright 2026 Google LLC
//
// 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
//
// https://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 "crypto/default/pem.h"
#include <string>
#include <vector>
#include "absl/status/status.h"
#include "absl/status/status_matchers.h"
#include "absl/strings/string_view.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace credentio {
namespace {
using ::absl_testing::StatusIs;
using ::testing::SizeIs;
constexpr absl::string_view kPemCertChain = R"(-----BEGIN CERTIFICATE-----
MIIBtDCCATqgAwIBAgIRANPe8rJVADfD8bhzA2jtwl4wCgYIKoZIzj0EAwMwFzEV
MBMGA1UEAxMMVGVzdCBSb290IENBMB4XDTI2MDMyOTEyMDAwMFoXDTI3MDMyOTEy
MDAwMFowHzEdMBsGA1UEAxMUVGVzdCBJbnRlcm1lZGlhdGUgQ0EwdjAQBgcqhkjO
PQIBBgUrgQQAIgNiAAQ7UFokBR4PPW+a73HQPyS6myzyxvDqtr++Xo/TrELi0Y+e
7+gJO/OmI78lzBdVdPcNxrQ4PJxCcHDI1ArOr9F6M3YYBR5x0ykRZSpFR2in2HU3
6rvjimlPtT/l4OTeDZOjQjBAMA4GA1UdDwEB/wQEAwICBDAPBgNVHRMBAf8EBTAD
AQH/MB0GA1UdDgQWBBT0u2grl7HnYYbNpUeacyT8BlqZ+DAKBggqhkjOPQQDAwNo
ADBlAjEAzOZu5HO8gtLheQgoE7gdj6qpB8MBnAO8zIDZ2byp+E3Q3lOc8TGWro0O
sY/1iAyMAjAQcNb21dwi/ZPRo70+RG5Hx70tDWzk6BtvWEr6NkEuNV/8j7Jn7/ED
/GwOJzwrywk=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIBajCB8aADAgECAhABfuUxwcNoiwWqcTHpsCU8MAoGCCqGSM49BAMDMB8xHTAb
BgNVBAMTFFRlc3QgSW50ZXJtZWRpYXRlIENBMB4XDTI2MDMyOTEyMDAwMFoXDTI3
MDMyOTEyMDAwMFowHDEaMBgGA1UEAxMRVGVzdCBjbGFpbSBzaWduZXIwWTATBgcq
hkjOPQIBBggqhkjOPQMBBwNCAAQZCL12JyasTpL9oU/mHZlDVP7j5DAAHIH+jauM
d4ufXdNahmxHAy5dJ3n9pvnMfQeXh8ZQTjNHzqZVTvlN5o0koxIwEDAOBgNVHQ8B
Af8EBAMCB4AwCgYIKoZIzj0EAwMDaAAwZQIxALDh3HqsATwFtu9KMOHdVq7jX0nm
Rm13/7yh6oREzQsHX125BW5NO/95+oUY+AjbqAIwBwO4P3XxDGuIlMJBi5bc5baR
QKnNhfW2ruLN754O4M+lDQdvVWKz5ghGCwQtfpv+
-----END CERTIFICATE-----)";
TEST(LoadCertsFromPemTest, FailsOnInvalidPem) {
auto chain_or = LoadCertsFromPem("not pem data");
EXPECT_THAT(chain_or, StatusIs(absl::StatusCode::kInvalidArgument));
}
TEST(LoadCertsFromPemTest, Succeeds) {
auto der_chain = LoadCertsFromPem(kPemCertChain);
ASSERT_TRUE(der_chain.ok());
EXPECT_THAT(*der_chain, SizeIs(2));
}
} // namespace
} // namespace credentio