1313// limitations under the License.
1414
1515#include " google/cloud/internal/credentials_impl.h"
16+ #include " google/cloud/internal/populate_common_options.h"
1617#include " google/cloud/testing_util/credentials.h"
1718#include < gmock/gmock.h>
1819
@@ -24,6 +25,7 @@ namespace {
2425
2526using ::google::cloud::testing_util::TestCredentialsVisitor;
2627using ::testing::ElementsAre;
28+ using ::testing::Eq;
2729using ::testing::IsEmpty;
2830using ::testing::IsNull;
2931
@@ -122,6 +124,42 @@ TEST(Credentials, ApiKeyCredentials) {
122124 EXPECT_EQ (" api-key" , visitor.api_key );
123125}
124126
127+ TEST (PopulateAuthOptions, EmptyOptions) {
128+ auto result_options = PopulateAuthOptions (Options{});
129+
130+ EXPECT_THAT (result_options.get <ScopesOption>(),
131+ ElementsAre (" https://www.googleapis.com/auth/cloud-platform" ));
132+ EXPECT_THAT (result_options.get <AccessTokenLifetimeOption>(),
133+ Eq (std::chrono::hours (1 )));
134+ EXPECT_THAT (result_options.get <LoggingComponentsOption>(),
135+ Eq (DefaultTracingComponents ()));
136+ }
137+
138+ TEST (PopulateAuthOptions, ExistingNonIntersectingOptions) {
139+ auto options = Options{}.set <EndpointOption>(" my-endpoint" );
140+ auto result_options = PopulateAuthOptions (options);
141+
142+ EXPECT_THAT (result_options.get <EndpointOption>(), Eq (" my-endpoint" ));
143+ EXPECT_THAT (result_options.get <ScopesOption>(),
144+ ElementsAre (" https://www.googleapis.com/auth/cloud-platform" ));
145+ EXPECT_THAT (result_options.get <AccessTokenLifetimeOption>(),
146+ Eq (std::chrono::hours (1 )));
147+ EXPECT_THAT (result_options.get <LoggingComponentsOption>(),
148+ Eq (DefaultTracingComponents ()));
149+ }
150+
151+ TEST (PopulateAuthOptions, ExistingIntersectingOptions) {
152+ auto options = Options{}
153+ .set <ScopesOption>({" my-scope" })
154+ .set <LoggingComponentsOption>({" my-logging-component" });
155+ auto result_options = PopulateAuthOptions (options);
156+ EXPECT_THAT (result_options.get <ScopesOption>(), ElementsAre (" my-scope" ));
157+ EXPECT_THAT (result_options.get <AccessTokenLifetimeOption>(),
158+ Eq (std::chrono::hours (1 )));
159+ EXPECT_THAT (result_options.get <LoggingComponentsOption>(),
160+ ElementsAre (" my-logging-component" ));
161+ }
162+
125163} // namespace
126164} // namespace internal
127165GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
0 commit comments