[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis page provides documentation for testing Cloud IAM applications using the Cloud IAM C++ client library, Google Test, and the Google Test Mocking Framework.\u003c/p\u003e\n"],["\u003cp\u003eThe latest available version for this documentation is 2.37.0-rc, with a range of versions dating back to 2.11.0 also accessible for review.\u003c/p\u003e\n"],["\u003cp\u003eThe document demonstrates how to mock a successful \u003ccode\u003eIAMClient::GetServiceAccount()\u003c/code\u003e call, including setting up expectations and creating an \u003ccode\u003eIAMClient\u003c/code\u003e object.\u003c/p\u003e\n"],["\u003cp\u003eA full code listing is provided, exemplifying how to implement and test the \u003ccode\u003eGetServiceAccount\u003c/code\u003e function using the mock connection.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation requires including specific headers for the Cloud IAM client, mocking classes, and the Google Mock framework, alongside the use of aliases for better readability and to save on typing.\u003c/p\u003e\n"]]],[],null,["Version 2.12.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/iam/latest/iam-mock)\n- [2.41.0](/cpp/docs/reference/iam/2.41.0/iam-mock)\n- [2.40.0](/cpp/docs/reference/iam/2.40.0/iam-mock)\n- [2.39.0](/cpp/docs/reference/iam/2.39.0/iam-mock)\n- [2.38.0](/cpp/docs/reference/iam/2.38.0/iam-mock)\n- [2.37.0](/cpp/docs/reference/iam/2.37.0/iam-mock)\n- [2.36.0](/cpp/docs/reference/iam/2.36.0/iam-mock)\n- [2.35.0](/cpp/docs/reference/iam/2.35.0/iam-mock)\n- [2.34.0](/cpp/docs/reference/iam/2.34.0/iam-mock)\n- [2.33.0](/cpp/docs/reference/iam/2.33.0/iam-mock)\n- [2.32.0](/cpp/docs/reference/iam/2.32.0/iam-mock)\n- [2.31.0](/cpp/docs/reference/iam/2.31.0/iam-mock)\n- [2.30.0](/cpp/docs/reference/iam/2.30.0/iam-mock)\n- [2.29.0](/cpp/docs/reference/iam/2.29.0/iam-mock)\n- [2.28.0](/cpp/docs/reference/iam/2.28.0/iam-mock)\n- [2.27.0](/cpp/docs/reference/iam/2.27.0/iam-mock)\n- [2.26.0](/cpp/docs/reference/iam/2.26.0/iam-mock)\n- [2.25.1](/cpp/docs/reference/iam/2.25.1/iam-mock)\n- [2.24.0](/cpp/docs/reference/iam/2.24.0/iam-mock)\n- [2.23.0](/cpp/docs/reference/iam/2.23.0/iam-mock)\n- [2.22.1](/cpp/docs/reference/iam/2.22.1/iam-mock)\n- [2.21.0](/cpp/docs/reference/iam/2.21.0/iam-mock)\n- [2.20.0](/cpp/docs/reference/iam/2.20.0/iam-mock)\n- [2.19.0](/cpp/docs/reference/iam/2.19.0/iam-mock)\n- [2.18.0](/cpp/docs/reference/iam/2.18.0/iam-mock)\n- [2.17.0](/cpp/docs/reference/iam/2.17.0/iam-mock)\n- [2.16.0](/cpp/docs/reference/iam/2.16.0/iam-mock)\n- [2.15.1](/cpp/docs/reference/iam/2.15.1/iam-mock)\n- [2.14.0](/cpp/docs/reference/iam/2.14.0/iam-mock)\n- [2.13.0](/cpp/docs/reference/iam/2.13.0/iam-mock)\n- [2.12.0](/cpp/docs/reference/iam/2.12.0/iam-mock)\n- [2.11.0](/cpp/docs/reference/iam/2.11.0/iam-mock) \n\nTesting your Cloud IAM application with googlemock\n==================================================\n\nThis document describes how to test your own Cloud IAM application using the Cloud IAM C++ client library, [Google Test](https://github.com/google/googletest) and the [Google Test Mocking Framework](https://github.com/google/googletest/tree/main/googlemock).\n\n#### Mocking a Successful IAMClient::GetServiceAccount() call\n\nFirst include the headers for the Cloud IAM Client, the mocking class, and the Google Mock framework: \n\n #include \"google/cloud/iam/admin/v1/iam_client.h\"\n #include \"google/cloud/iam/admin/v1/mocks/mock_iam_connection.h\"\n #include \u003cgmock/gmock.h\u003e\n\nThe example uses a number of aliases to save typing and improve readability: \n\n using ::google::cloud::iam_admin_v1_mocks::MockIAMConnection;\n namespace iam = ::google::cloud::iam_admin_v1;\n\nCreate a mocking object for [`google::cloud::iam_admin_v1::IAMConnection`](/cpp/docs/reference/iam/2.12.0/classgoogle_1_1cloud_1_1iam__admin__v1_1_1IAMConnection): \n\n auto mock = std::make_shared\u003cMockIAMConnection\u003e();\n\nIt is customary to first setup the expectations for your mock, and then write the rest of the code: \n\n EXPECT_CALL(*mock, GetServiceAccount)\n .WillOnce([&](google::iam::admin::v1::GetServiceAccountRequest const&\n request) {\n EXPECT_EQ(\"test-project-name\", request.name());\n google::iam::admin::v1::ServiceAccount service_account;\n service_account.set_unique_id(\"test-unique-id\");\n return google::cloud::StatusOr\u003cgoogle::iam::admin::v1::ServiceAccount\u003e(\n service_account);\n });\n\nWith the expectations in place, create a [`google::cloud::iam_admin_v1::IAMClient`](/cpp/docs/reference/iam/2.12.0/classgoogle_1_1cloud_1_1iam__admin__v1_1_1IAMClient) object: \n\n iam::IAMClient iam_client(mock);\n\nAnd then make calls on the client as usual: \n\n auto service_account = iam_client.GetServiceAccount(\"test-project-name\");\n\nAnd then verify the results meet your expectations: \n\n EXPECT_TRUE(service_account.ok());\n EXPECT_EQ(\"test-unique-id\", service_account-\u003eunique_id());\n\n#### Full Listing\n\nFinally we present the full code for this example: \n\n\n #include \"google/cloud/iam/admin/v1/iam_client.h\"\n #include \"google/cloud/iam/admin/v1/mocks/mock_iam_connection.h\"\n #include \u003cgmock/gmock.h\u003e\n\n namespace {\n\n using ::google::cloud::iam_admin_v1_mocks::MockIAMConnection;\n namespace iam = ::google::cloud::iam_admin_v1;\n\n TEST(MockGetServiceAccountExample, GetServiceAccount) {\n auto mock = std::make_shared\u003cMockIAMConnection\u003e();\n\n EXPECT_CALL(*mock, GetServiceAccount)\n .WillOnce([&](google::iam::admin::v1::GetServiceAccountRequest const&\n request) {\n EXPECT_EQ(\"test-project-name\", request.name());\n google::iam::admin::v1::ServiceAccount service_account;\n service_account.set_unique_id(\"test-unique-id\");\n return google::cloud::StatusOr\u003cgoogle::iam::admin::v1::ServiceAccount\u003e(\n service_account);\n });\n\n iam::IAMClient iam_client(mock);\n\n auto service_account = iam_client.GetServiceAccount(\"test-project-name\");\n\n EXPECT_TRUE(service_account.ok());\n EXPECT_EQ(\"test-unique-id\", service_account-\u003eunique_id());\n }\n\n } // namespace"]]