| // 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 |