Merge "[vts-core] add VtsHalGatekeeperV1_0TargetTest to vts-core"

am: ddad94ab0e

Change-Id: I5b9c1d9f23421248f5c7ba35a2e47980148e4c68
This commit is contained in:
nelsonli
2019-11-25 21:33:38 -08:00
committed by android-build-merger
2 changed files with 19 additions and 38 deletions

View File

@@ -19,5 +19,5 @@ cc_test {
defaults: ["VtsHalTargetTestDefaults"], defaults: ["VtsHalTargetTestDefaults"],
srcs: ["VtsHalGatekeeperV1_0TargetTest.cpp"], srcs: ["VtsHalGatekeeperV1_0TargetTest.cpp"],
static_libs: ["android.hardware.gatekeeper@1.0"], static_libs: ["android.hardware.gatekeeper@1.0"],
test_suites: ["general-tests"], test_suites: ["general-tests", "vts-core"],
} }

View File

@@ -24,7 +24,10 @@
#include <inttypes.h> #include <inttypes.h>
#include <unistd.h> #include <unistd.h>
#include <gtest/gtest.h>
#include <hardware/hw_auth_token.h> #include <hardware/hw_auth_token.h>
#include <hidl/GtestPrinter.h>
#include <hidl/ServiceManagement.h>
#include <android/log.h> #include <android/log.h>
#include <android/hardware/gatekeeper/1.0/IGatekeeper.h> #include <android/hardware/gatekeeper/1.0/IGatekeeper.h>
@@ -32,9 +35,6 @@
#include <log/log.h> #include <log/log.h>
#include <VtsHalHidlTargetTestBase.h>
#include <VtsHalHidlTargetTestEnvBase.h>
using ::android::hardware::hidl_string; using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec; using ::android::hardware::hidl_vec;
using ::android::hardware::gatekeeper::V1_0::IGatekeeper; using ::android::hardware::gatekeeper::V1_0::IGatekeeper;
@@ -78,22 +78,8 @@ static const hw_auth_token_t *toAuthToken(GatekeeperResponse &rsp) {
return auth_token; return auth_token;
} }
// Test environment for Gatekeeper HIDL HAL.
class GatekeeperHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase {
public:
// get the test environment singleton
static GatekeeperHidlEnvironment* Instance() {
static GatekeeperHidlEnvironment* instance = new GatekeeperHidlEnvironment;
return instance;
}
virtual void registerTestServices() override { registerTestService<IGatekeeper>(); }
private:
GatekeeperHidlEnvironment() {}
};
// The main test class for Gatekeeper HIDL HAL. // The main test class for Gatekeeper HIDL HAL.
class GatekeeperHidlTest : public ::testing::VtsHalHidlTargetTestBase { class GatekeeperHidlTest : public ::testing::TestWithParam<std::string> {
protected: protected:
void setUid(uint32_t uid) { uid_ = uid; } void setUid(uint32_t uid) { uid_ = uid; }
@@ -204,8 +190,7 @@ class GatekeeperHidlTest : public ::testing::VtsHalHidlTargetTestBase {
GatekeeperHidlTest() : uid_(0) {} GatekeeperHidlTest() : uid_(0) {}
virtual void SetUp() override { virtual void SetUp() override {
GatekeeperResponse rsp; GatekeeperResponse rsp;
gatekeeper_ = ::testing::VtsHalHidlTargetTestBase::getService<IGatekeeper>( gatekeeper_ = IGatekeeper::getService(GetParam());
GatekeeperHidlEnvironment::Instance()->getServiceName<IGatekeeper>());
ASSERT_NE(nullptr, gatekeeper_.get()); ASSERT_NE(nullptr, gatekeeper_.get());
doDeleteAllUsers(rsp); doDeleteAllUsers(rsp);
} }
@@ -219,7 +204,7 @@ class GatekeeperHidlTest : public ::testing::VtsHalHidlTargetTestBase {
/** /**
* Ensure we can enroll new password * Ensure we can enroll new password
*/ */
TEST_F(GatekeeperHidlTest, EnrollSuccess) { TEST_P(GatekeeperHidlTest, EnrollSuccess) {
hidl_vec<uint8_t> password; hidl_vec<uint8_t> password;
GatekeeperResponse rsp; GatekeeperResponse rsp;
ALOGI("Testing Enroll (expected success)"); ALOGI("Testing Enroll (expected success)");
@@ -231,7 +216,7 @@ TEST_F(GatekeeperHidlTest, EnrollSuccess) {
/** /**
* Ensure we can not enroll empty password * Ensure we can not enroll empty password
*/ */
TEST_F(GatekeeperHidlTest, EnrollNoPassword) { TEST_P(GatekeeperHidlTest, EnrollNoPassword) {
hidl_vec<uint8_t> password; hidl_vec<uint8_t> password;
GatekeeperResponse rsp; GatekeeperResponse rsp;
ALOGI("Testing Enroll (expected failure)"); ALOGI("Testing Enroll (expected failure)");
@@ -242,7 +227,7 @@ TEST_F(GatekeeperHidlTest, EnrollNoPassword) {
/** /**
* Ensure we can successfully verify previously enrolled password * Ensure we can successfully verify previously enrolled password
*/ */
TEST_F(GatekeeperHidlTest, VerifySuccess) { TEST_P(GatekeeperHidlTest, VerifySuccess) {
GatekeeperResponse enrollRsp; GatekeeperResponse enrollRsp;
GatekeeperResponse verifyRsp; GatekeeperResponse verifyRsp;
hidl_vec<uint8_t> password; hidl_vec<uint8_t> password;
@@ -258,7 +243,7 @@ TEST_F(GatekeeperHidlTest, VerifySuccess) {
* Ensure we can securely update password (keep the same * Ensure we can securely update password (keep the same
* secure user_id) if we prove we know old password * secure user_id) if we prove we know old password
*/ */
TEST_F(GatekeeperHidlTest, TrustedReenroll) { TEST_P(GatekeeperHidlTest, TrustedReenroll) {
GatekeeperResponse enrollRsp; GatekeeperResponse enrollRsp;
GatekeeperRequest reenrollReq; GatekeeperRequest reenrollReq;
GatekeeperResponse reenrollRsp; GatekeeperResponse reenrollRsp;
@@ -297,7 +282,7 @@ TEST_F(GatekeeperHidlTest, TrustedReenroll) {
* Ensure we can update password (and get new * Ensure we can update password (and get new
* secure user_id) if we don't know old password * secure user_id) if we don't know old password
*/ */
TEST_F(GatekeeperHidlTest, UntrustedReenroll) { TEST_P(GatekeeperHidlTest, UntrustedReenroll) {
GatekeeperResponse enrollRsp; GatekeeperResponse enrollRsp;
GatekeeperResponse reenrollRsp; GatekeeperResponse reenrollRsp;
GatekeeperResponse verifyRsp; GatekeeperResponse verifyRsp;
@@ -327,7 +312,7 @@ TEST_F(GatekeeperHidlTest, UntrustedReenroll) {
/** /**
* Ensure we dont get successful verify with invalid data * Ensure we dont get successful verify with invalid data
*/ */
TEST_F(GatekeeperHidlTest, VerifyNoData) { TEST_P(GatekeeperHidlTest, VerifyNoData) {
hidl_vec<uint8_t> password; hidl_vec<uint8_t> password;
hidl_vec<uint8_t> passwordHandle; hidl_vec<uint8_t> passwordHandle;
GatekeeperResponse verifyRsp; GatekeeperResponse verifyRsp;
@@ -341,7 +326,7 @@ TEST_F(GatekeeperHidlTest, VerifyNoData) {
/** /**
* Ensure we can not verify password after we enrolled it and then deleted user * Ensure we can not verify password after we enrolled it and then deleted user
*/ */
TEST_F(GatekeeperHidlTest, DeleteUserTest) { TEST_P(GatekeeperHidlTest, DeleteUserTest) {
hidl_vec<uint8_t> password; hidl_vec<uint8_t> password;
GatekeeperResponse enrollRsp; GatekeeperResponse enrollRsp;
GatekeeperResponse verifyRsp; GatekeeperResponse verifyRsp;
@@ -368,7 +353,7 @@ TEST_F(GatekeeperHidlTest, DeleteUserTest) {
/** /**
* Ensure we can not delete a user that does not exist * Ensure we can not delete a user that does not exist
*/ */
TEST_F(GatekeeperHidlTest, DeleteInvalidUserTest) { TEST_P(GatekeeperHidlTest, DeleteInvalidUserTest) {
hidl_vec<uint8_t> password; hidl_vec<uint8_t> password;
GatekeeperResponse enrollRsp; GatekeeperResponse enrollRsp;
GatekeeperResponse verifyRsp; GatekeeperResponse verifyRsp;
@@ -400,7 +385,7 @@ TEST_F(GatekeeperHidlTest, DeleteInvalidUserTest) {
* Ensure we can not verify passwords after we enrolled them and then deleted * Ensure we can not verify passwords after we enrolled them and then deleted
* all users * all users
*/ */
TEST_F(GatekeeperHidlTest, DeleteAllUsersTest) { TEST_P(GatekeeperHidlTest, DeleteAllUsersTest) {
struct UserData { struct UserData {
uint32_t userId; uint32_t userId;
hidl_vec<uint8_t> password; hidl_vec<uint8_t> password;
@@ -448,11 +433,7 @@ TEST_F(GatekeeperHidlTest, DeleteAllUsersTest) {
ALOGI("Testing deleteAllUsers done: rsp=%" PRIi32, delAllRsp.code); ALOGI("Testing deleteAllUsers done: rsp=%" PRIi32, delAllRsp.code);
} }
int main(int argc, char **argv) { INSTANTIATE_TEST_SUITE_P(
::testing::AddGlobalTestEnvironment(GatekeeperHidlEnvironment::Instance()); PerInstance, GatekeeperHidlTest,
::testing::InitGoogleTest(&argc, argv); testing::ValuesIn(android::hardware::getAllHalInstanceNames(IGatekeeper::descriptor)),
GatekeeperHidlEnvironment::Instance()->init(&argc, argv); android::hardware::PrintInstanceNameToString);
int status = RUN_ALL_TESTS();
ALOGI("Test result = %d", status);
return status;
}