| // 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 "utils/media_type.h" |
| |
| #include "absl/status/status.h" |
| #include "absl/status/status_matchers.h" |
| #include "gmock/gmock.h" |
| #include "gtest/gtest.h" |
| |
| namespace credentio { |
| namespace { |
| |
| using ::absl_testing::IsOkAndHolds; |
| using ::absl_testing::StatusIs; |
| |
| TEST(MediaTypeTest, ReturnsMediaType) { |
| EXPECT_THAT(MediaType("foo.avif"), IsOkAndHolds("image/avif")); |
| EXPECT_THAT(MediaType("foo.heic"), IsOkAndHolds("image/heic")); |
| EXPECT_THAT(MediaType("foo.heif"), IsOkAndHolds("image/heif")); |
| EXPECT_THAT(MediaType("foo.jpeg"), IsOkAndHolds("image/jpeg")); |
| EXPECT_THAT(MediaType("foo.jpg"), IsOkAndHolds("image/jpeg")); |
| EXPECT_THAT(MediaType("foo.mp4"), IsOkAndHolds("video/mp4")); |
| EXPECT_THAT(MediaType("foo.pdf"), IsOkAndHolds("application/pdf")); |
| EXPECT_THAT(MediaType("foo.png"), IsOkAndHolds("image/png")); |
| EXPECT_THAT(MediaType("foo.webp"), IsOkAndHolds("image/webp")); |
| EXPECT_THAT(MediaType("foo.mov"), IsOkAndHolds("video/quicktime")); |
| EXPECT_THAT(MediaType("foo.dng"), IsOkAndHolds("image/x-adobe-dng")); |
| EXPECT_THAT(MediaType("foo.tif"), IsOkAndHolds("image/tiff")); |
| EXPECT_THAT(MediaType("foo.tiff"), IsOkAndHolds("image/tiff")); |
| EXPECT_THAT(MediaType("foo.wav"), IsOkAndHolds("audio/wav")); |
| EXPECT_THAT(MediaType("foo.gif"), IsOkAndHolds("image/gif")); |
| EXPECT_THAT(MediaType("foo.m4a"), IsOkAndHolds("audio/mp4")); |
| EXPECT_THAT(MediaType("foo.mp3"), IsOkAndHolds("audio/mpeg")); |
| EXPECT_THAT(MediaType("foo.flac"), IsOkAndHolds("audio/flac")); |
| EXPECT_THAT( |
| MediaType("foo.pptx"), |
| IsOkAndHolds( |
| "application/" |
| "vnd.openxmlformats-officedocument.presentationml.presentation")); |
| EXPECT_THAT( |
| MediaType("foo.docx"), |
| IsOkAndHolds( |
| "application/" |
| "vnd.openxmlformats-officedocument.wordprocessingml.document")); |
| EXPECT_THAT( |
| MediaType("foo.xlsx"), |
| IsOkAndHolds("application/" |
| "vnd.openxmlformats-officedocument.spreadsheetml.sheet")); |
| |
| EXPECT_THAT(MediaType("FOO.AVIF"), IsOkAndHolds("image/avif")); |
| |
| EXPECT_THAT(MediaType("no_extension"), |
| StatusIs(absl::StatusCode::kInvalidArgument)); |
| EXPECT_THAT(MediaType(""), StatusIs(absl::StatusCode::kInvalidArgument)); |
| EXPECT_THAT(MediaType("foo.txt"), |
| StatusIs(absl::StatusCode::kInvalidArgument)); |
| } |
| |
| } // namespace |
| } // namespace credentio |