Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ddad94ab authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

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

parents b68a055c 79aada20
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -19,5 +19,5 @@ cc_test {
    defaults: ["VtsHalTargetTestDefaults"],
    srcs: ["VtsHalGatekeeperV1_0TargetTest.cpp"],
    static_libs: ["android.hardware.gatekeeper@1.0"],
    test_suites: ["general-tests"],
    test_suites: ["general-tests", "vts-core"],
}
+18 −37
Original line number Diff line number Diff line
@@ -24,7 +24,10 @@
#include <inttypes.h>
#include <unistd.h>

#include <gtest/gtest.h>
#include <hardware/hw_auth_token.h>
#include <hidl/GtestPrinter.h>
#include <hidl/ServiceManagement.h>

#include <android/log.h>
#include <android/hardware/gatekeeper/1.0/IGatekeeper.h>
@@ -32,9 +35,6 @@

#include <log/log.h>

#include <VtsHalHidlTargetTestBase.h>
#include <VtsHalHidlTargetTestEnvBase.h>

using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec;
using ::android::hardware::gatekeeper::V1_0::IGatekeeper;
@@ -78,22 +78,8 @@ static const hw_auth_token_t *toAuthToken(GatekeeperResponse &rsp) {
  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.
class GatekeeperHidlTest : public ::testing::VtsHalHidlTargetTestBase {
class GatekeeperHidlTest : public ::testing::TestWithParam<std::string> {
 protected:
  void setUid(uint32_t uid) { uid_ = uid; }

@@ -204,8 +190,7 @@ class GatekeeperHidlTest : public ::testing::VtsHalHidlTargetTestBase {
  GatekeeperHidlTest() : uid_(0) {}
  virtual void SetUp() override {
    GatekeeperResponse rsp;
    gatekeeper_ = ::testing::VtsHalHidlTargetTestBase::getService<IGatekeeper>(
        GatekeeperHidlEnvironment::Instance()->getServiceName<IGatekeeper>());
    gatekeeper_ = IGatekeeper::getService(GetParam());
    ASSERT_NE(nullptr, gatekeeper_.get());
    doDeleteAllUsers(rsp);
  }
@@ -219,7 +204,7 @@ class GatekeeperHidlTest : public ::testing::VtsHalHidlTargetTestBase {
/**
 * Ensure we can enroll new password
 */
TEST_F(GatekeeperHidlTest, EnrollSuccess) {
TEST_P(GatekeeperHidlTest, EnrollSuccess) {
  hidl_vec<uint8_t> password;
  GatekeeperResponse rsp;
  ALOGI("Testing Enroll (expected success)");
@@ -231,7 +216,7 @@ TEST_F(GatekeeperHidlTest, EnrollSuccess) {
/**
 * Ensure we can not enroll empty password
 */
TEST_F(GatekeeperHidlTest, EnrollNoPassword) {
TEST_P(GatekeeperHidlTest, EnrollNoPassword) {
  hidl_vec<uint8_t> password;
  GatekeeperResponse rsp;
  ALOGI("Testing Enroll (expected failure)");
@@ -242,7 +227,7 @@ TEST_F(GatekeeperHidlTest, EnrollNoPassword) {
/**
 * Ensure we can successfully verify previously enrolled password
 */
TEST_F(GatekeeperHidlTest, VerifySuccess) {
TEST_P(GatekeeperHidlTest, VerifySuccess) {
  GatekeeperResponse enrollRsp;
  GatekeeperResponse verifyRsp;
  hidl_vec<uint8_t> password;
@@ -258,7 +243,7 @@ TEST_F(GatekeeperHidlTest, VerifySuccess) {
 * Ensure we can securely update password (keep the same
 * secure user_id) if we prove we know old password
 */
TEST_F(GatekeeperHidlTest, TrustedReenroll) {
TEST_P(GatekeeperHidlTest, TrustedReenroll) {
  GatekeeperResponse enrollRsp;
  GatekeeperRequest reenrollReq;
  GatekeeperResponse reenrollRsp;
@@ -297,7 +282,7 @@ TEST_F(GatekeeperHidlTest, TrustedReenroll) {
 * Ensure we can update password (and get new
 * secure user_id) if we don't know old password
 */
TEST_F(GatekeeperHidlTest, UntrustedReenroll) {
TEST_P(GatekeeperHidlTest, UntrustedReenroll) {
  GatekeeperResponse enrollRsp;
  GatekeeperResponse reenrollRsp;
  GatekeeperResponse verifyRsp;
@@ -327,7 +312,7 @@ TEST_F(GatekeeperHidlTest, UntrustedReenroll) {
/**
 * 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> passwordHandle;
  GatekeeperResponse verifyRsp;
@@ -341,7 +326,7 @@ TEST_F(GatekeeperHidlTest, VerifyNoData) {
/**
 * 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;
  GatekeeperResponse enrollRsp;
  GatekeeperResponse verifyRsp;
@@ -368,7 +353,7 @@ TEST_F(GatekeeperHidlTest, DeleteUserTest) {
/**
 * Ensure we can not delete a user that does not exist
 */
TEST_F(GatekeeperHidlTest, DeleteInvalidUserTest) {
TEST_P(GatekeeperHidlTest, DeleteInvalidUserTest) {
  hidl_vec<uint8_t> password;
  GatekeeperResponse enrollRsp;
  GatekeeperResponse verifyRsp;
@@ -400,7 +385,7 @@ TEST_F(GatekeeperHidlTest, DeleteInvalidUserTest) {
 * Ensure we can not verify passwords after we enrolled them and then deleted
 * all users
 */
TEST_F(GatekeeperHidlTest, DeleteAllUsersTest) {
TEST_P(GatekeeperHidlTest, DeleteAllUsersTest) {
  struct UserData {
    uint32_t userId;
    hidl_vec<uint8_t> password;
@@ -448,11 +433,7 @@ TEST_F(GatekeeperHidlTest, DeleteAllUsersTest) {
  ALOGI("Testing deleteAllUsers done: rsp=%" PRIi32, delAllRsp.code);
}

int main(int argc, char **argv) {
  ::testing::AddGlobalTestEnvironment(GatekeeperHidlEnvironment::Instance());
  ::testing::InitGoogleTest(&argc, argv);
  GatekeeperHidlEnvironment::Instance()->init(&argc, argv);
  int status = RUN_ALL_TESTS();
  ALOGI("Test result = %d", status);
  return status;
}
INSTANTIATE_TEST_SUITE_P(
        PerInstance, GatekeeperHidlTest,
        testing::ValuesIn(android::hardware::getAllHalInstanceNames(IGatekeeper::descriptor)),
        android::hardware::PrintInstanceNameToString);