Files
android/libclearkeydrmengine/test/WVDrmPluginFactory_test.cpp
Fred Gylys-Colwell 8ab3b10971 Fix UniquePtr Calls
This change corrects some problems with the unit tests and make files
for the libcleardrmengine.

Change-Id: Iafd8aae2ecae3885ad4bbfdf9257bce6f62f98dc
2012-12-21 12:42:39 -08:00

125 lines
4.1 KiB
C++

/*
* Copyright 2012 Google Inc. All Rights Reserved.
*/
#include "utils/UniquePtr.h"
#include "WVDrmPluginFactory.h"
#include "media/drm/DrmClientAPI.h"
#include "OEMCryptoDASH.h"
#include "gtest/gtest.h"
using namespace wvclearkey;
const uint8_t kWidevineUUID[16] = {
0xED,0xEF,0x8B,0xA9,0x79,0xD6,0x4A,0xCE,
0xA3,0xC8,0x27,0xDC,0xD5,0x1D,0x21,0xED
};
const uint8_t kOldNetflixWidevineUUID[16] = {
0x29,0x70,0x1F,0xE4,0x3C,0xC7,0x4A,0x34,
0x8C,0x5B,0xAE,0x90,0xC7,0x43,0x9A,0x47
};
const uint8_t kUnknownUUID[16] = {
0x6A,0x7F,0xAA,0xB0,0x83,0xC7,0x9E,0x20,
0x08,0xBC,0xEF,0x32,0x34,0x1A,0x9A,0x26
};
TEST(WVDrmPluginFactoryTest, SupportsSupportedCryptoSchemes) {
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
EXPECT_TRUE(factory->isCryptoSchemeSupported(kWidevineUUID)) <<
"WVDrmPluginFactory does not support Widevine's UUID";
EXPECT_TRUE(factory->isCryptoSchemeSupported(kOldNetflixWidevineUUID)) <<
"WVDrmPluginFactory does not support the old Netflix Widevine UUID";
}
TEST(WVDrmPluginFactoryTest, DoesNotSupportUnsupportedCryptoSchemes) {
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
EXPECT_FALSE(factory->isCryptoSchemeSupported(kUnknownUUID)) <<
"WVDrmPluginFactory incorrectly claims to support an unknown UUID";
}
TEST(WVDrmPluginFactoryTest, CreatesCryptoPlugins) {
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
android::CryptoPlugin *plugin;
status_t result = factory->createCryptoPlugin(kWidevineUUID, NULL, 0, &plugin);
EXPECT_EQ(android::OK, result) <<
"WVDrmPluginFactory returned error from createCryptoPlugin()";
EXPECT_NE((android::CryptoPlugin *)NULL, plugin) <<
"WVDrmPluginFactory's createCryptoPlugin() did not create a plugin";
delete plugin;
}
TEST(WVDrmPluginFactoryTest, DoesNotCreateDrmClientPlugins) {
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
android::DrmClientPlugin *plugin;
status_t result = factory->createDrmClientPlugin(kWidevineUUID, NULL, 0, &plugin);
EXPECT_EQ(-EPERM, result) <<
"WVDrmPluginFactory did not indicate that createDrmClientPlugin() is not implemented";
EXPECT_EQ((android::DrmClientPlugin *)NULL, plugin) <<
"WVDrmPluginFactory's createDrmClientPlugin() created a plugin (?!?)";
delete plugin;
}
TEST(WVDrmPluginFactoryTest, RefusesToCreateWithUnsupportedCryptoScheme) {
UniquePtr<WVDrmPluginFactory> factory(new WVDrmPluginFactory());
android::CryptoPlugin *cryptoPlugin;
android::DrmClientPlugin *drmClientPlugin;
status_t result;
result = factory->createCryptoPlugin(kUnknownUUID, NULL, 0, &cryptoPlugin);
EXPECT_EQ(android::BAD_VALUE, result) <<
"WVDrmPluginFactory did not reject unknown UUID when creating a CryptoPlugin";
EXPECT_EQ((android::CryptoPlugin *)NULL, cryptoPlugin) <<
"WVDrmPluginFactory created a CryptoPlugin despite having an unknown UUID";
result = factory->createDrmClientPlugin(kUnknownUUID, NULL, 0, &drmClientPlugin);
EXPECT_EQ(android::BAD_VALUE, result) <<
"WVDrmPluginFactory did not reject unknown UUID when creating a DrmClientPlugin";
EXPECT_EQ((android::DrmClientPlugin *)NULL, drmClientPlugin) <<
"WVDrmPluginFactory created a DrmClientPlugin despite having an unknown UUID";
delete cryptoPlugin;
delete drmClientPlugin;
}
bool oemCryptoInitialized;
bool oemCryptoTerminated;
extern "C" {
OEMCryptoResult OEMCrypto_Initialize(void) {
oemCryptoInitialized = true;
return OEMCrypto_SUCCESS;
}
OEMCryptoResult OEMCrypto_Terminate(void) {
oemCryptoTerminated = true;
return OEMCrypto_SUCCESS;
}
}
TEST(WVDrmPluginFactoryTest, CallsOemCrypto) {
oemCryptoInitialized = false;
oemCryptoTerminated = false;
WVDrmPluginFactory *factory = new WVDrmPluginFactory();
EXPECT_EQ(true, oemCryptoInitialized) <<
"WVDrmPluginFactory did not call OEMCrypto_Initialize()";
delete factory;
EXPECT_EQ(true, oemCryptoTerminated) <<
"WVDrmPluginFactory did not call OEMCrypto_Terminate()";
}