Skip to content

Commit de71bc1

Browse files
committed
Add test and callable reference internal for options
1 parent e9a0944 commit de71bc1

2 files changed

Lines changed: 62 additions & 2 deletions

File tree

functions/integration_test/src/integration_test.cc

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,4 +380,54 @@ TEST_F(FirebaseFunctionsTest, TestFunctionFromURL) {
380380
EXPECT_EQ(result.map()["operationResult"], 6);
381381
}
382382

383+
TEST_F(FirebaseFunctionsTest, TestFunctionWithLimitedUseAppCheckToken) {
384+
SignIn();
385+
386+
// addNumbers(5, 7) = 12
387+
firebase::Variant data(firebase::Variant::EmptyMap());
388+
data.map()["firstNumber"] = 5;
389+
data.map()["secondNumber"] = 7;
390+
391+
firebase::functions::HttpsCallableOptions options;
392+
options.limited_use_app_check_token = true;
393+
394+
LogDebug("Calling addNumbers with Limited Use App Check Token");
395+
firebase::functions::HttpsCallableReference ref =
396+
functions_->GetHttpsCallable("addNumbers", options);
397+
398+
firebase::Variant result =
399+
TestFunctionHelper("addNumbers", ref, &data, firebase::Variant::Null())
400+
.result()
401+
->data();
402+
EXPECT_TRUE(result.is_map());
403+
EXPECT_EQ(result.map()["operationResult"], 12);
404+
}
405+
406+
TEST_F(FirebaseFunctionsTest, TestFunctionFromURLWithLimitedUseAppCheckToken) {
407+
SignIn();
408+
409+
// addNumbers(4, 2) = 6
410+
firebase::Variant data(firebase::Variant::EmptyMap());
411+
data.map()["firstNumber"] = 4;
412+
data.map()["secondNumber"] = 2;
413+
414+
std::string proj = app_->options().project_id();
415+
std::string url =
416+
"https://us-central1-" + proj + ".cloudfunctions.net/addNumbers";
417+
418+
firebase::functions::HttpsCallableOptions options;
419+
options.limited_use_app_check_token = true;
420+
421+
LogDebug("Calling by URL %s with Limited Use App Check Token", url.c_str());
422+
firebase::functions::HttpsCallableReference ref =
423+
functions_->GetHttpsCallableFromURL(url.c_str(), options);
424+
425+
firebase::Variant result =
426+
TestFunctionHelper(url.c_str(), ref, &data, firebase::Variant::Null())
427+
.result()
428+
->data();
429+
EXPECT_TRUE(result.is_map());
430+
EXPECT_EQ(result.map()["operationResult"], 6);
431+
}
432+
383433
} // namespace firebase_testapp_automated

functions/src/desktop/functions_desktop.cc

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,24 @@ const char* FunctionsInternal::region() const { return region_.c_str(); }
3434

3535
HttpsCallableReferenceInternal* FunctionsInternal::GetHttpsCallable(
3636
const char* name) const {
37+
return GetHttpsCallable(name, HttpsCallableOptions());
38+
}
39+
40+
HttpsCallableReferenceInternal* FunctionsInternal::GetHttpsCallable(
41+
const char* name, const HttpsCallableOptions& options) const {
3742
return new HttpsCallableReferenceInternal(
38-
const_cast<FunctionsInternal*>(this), GetUrl(name).c_str());
43+
const_cast<FunctionsInternal*>(this), GetUrl(name).c_str(), options);
3944
}
4045

4146
HttpsCallableReferenceInternal* FunctionsInternal::GetHttpsCallableFromURL(
4247
const char* url) const {
48+
return GetHttpsCallableFromURL(url, HttpsCallableOptions());
49+
}
50+
51+
HttpsCallableReferenceInternal* FunctionsInternal::GetHttpsCallableFromURL(
52+
const char* url, const HttpsCallableOptions& options) const {
4353
return new HttpsCallableReferenceInternal(
44-
const_cast<FunctionsInternal*>(this), url);
54+
const_cast<FunctionsInternal*>(this), url, options);
4555
}
4656

4757
std::string FunctionsInternal::GetUrl(const std::string& name) const {

0 commit comments

Comments
 (0)