blob: f78127fa21bcf908adf3f45af473d89dc0c9c54c [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 "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.avi"), IsOkAndHolds("video/x-msvideo"));
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