Remove path_and_query specifier from BlindSignHttpInterface. DoRequest will now specify which BlindSignAuth RPC it's doing and the interface implementor must use the correct URL.

PiperOrigin-RevId: 555481040
diff --git a/quiche/blind_sign_auth/blind_sign_auth.cc b/quiche/blind_sign_auth/blind_sign_auth.cc
index b13005f..f998154 100644
--- a/quiche/blind_sign_auth/blind_sign_auth.cc
+++ b/quiche/blind_sign_auth/blind_sign_auth.cc
@@ -48,13 +48,12 @@
       privacy::ppn::GetInitialDataRequest_LocationGranularity_CITY_GEOS);
 
   // Call GetInitialData on the HttpFetcher.
-  std::string path_and_query = "/v1/getInitialData";
   std::string body = request.SerializeAsString();
   BlindSignHttpCallback initial_data_callback =
       absl::bind_front(&BlindSignAuth::GetInitialDataCallback, this,
                        oauth_token, num_tokens, std::move(callback));
-  http_fetcher_->DoRequest(path_and_query, oauth_token, body,
-                           std::move(initial_data_callback));
+  http_fetcher_->DoRequest(BlindSignHttpRequestType::kGetInitialData,
+                           oauth_token, body, std::move(initial_data_callback));
 }
 
 void BlindSignAuth::GetInitialDataCallback(
@@ -165,8 +164,8 @@
       &BlindSignAuth::AuthAndSignCallback, this, public_metadata_info,
       public_metadata_expiry_time.value(), *at_sign_request,
       *std::move(bssa_client), std::move(callback));
-  http_fetcher_->DoRequest("/v1/authWithHeaderCreds", oauth_token.data(),
-                           sign_request.SerializeAsString(),
+  http_fetcher_->DoRequest(BlindSignHttpRequestType::kAuthAndSign,
+                           oauth_token.data(), sign_request.SerializeAsString(),
                            std::move(auth_and_sign_callback));
 }
 
diff --git a/quiche/blind_sign_auth/blind_sign_auth_test.cc b/quiche/blind_sign_auth/blind_sign_auth_test.cc
index 6128750..edd8626 100644
--- a/quiche/blind_sign_auth/blind_sign_auth_test.cc
+++ b/quiche/blind_sign_auth/blind_sign_auth_test.cc
@@ -18,10 +18,12 @@
 #include "absl/status/statusor.h"
 #include "absl/strings/escaping.h"
 #include "absl/strings/string_view.h"
+#include "absl/time/time.h"
 #include "quiche/blind_sign_auth/anonymous_tokens/cpp/testing/proto_utils.h"
 #include "quiche/blind_sign_auth/anonymous_tokens/cpp/testing/utils.h"
 #include "quiche/blind_sign_auth/anonymous_tokens/proto/anonymous_tokens.pb.h"
 #include "openssl/base.h"
+#include "quiche/blind_sign_auth/blind_sign_http_interface.h"
 #include "quiche/blind_sign_auth/blind_sign_http_response.h"
 #include "quiche/blind_sign_auth/test_tools/mock_blind_sign_http_interface.h"
 #include "quiche/common/platform/api/quiche_mutex.h"
@@ -66,18 +68,10 @@
         public_key;
 
     // Create public metadata info.
-    std::string public_metadata_str = R"pb(
-      public_metadata {
-        exit_location { country: "US" }
-        service_type: "chromeipblinding"
-        expiration { seconds: 3600 }
-      }
-      validation_version: 1
-    )pb";
     privacy::ppn::PublicMetadata::Location location;
     location.set_country("US");
     quiche::protobuf::Timestamp expiration;
-    expiration.set_seconds(3600);
+    expiration.set_seconds(absl::ToUnixSeconds(absl::Now() + absl::Hours(1)));
     privacy::ppn::PublicMetadata public_metadata;
     *public_metadata.mutable_exit_location() = location;
     public_metadata.set_service_type("chromeipblinding");
@@ -168,16 +162,17 @@
 
     EXPECT_CALL(
         mock_http_interface_,
-        DoRequest(Eq("/v1/getInitialData"), Eq(oauth_token_),
-                  Eq(expected_get_initial_data_request_.SerializeAsString()),
-                  _))
+        DoRequest(
+            Eq(BlindSignHttpRequestType::kGetInitialData), Eq(oauth_token_),
+            Eq(expected_get_initial_data_request_.SerializeAsString()), _))
         .Times(1)
         .WillOnce([=](auto&&, auto&&, auto&&, auto get_initial_data_cb) {
           std::move(get_initial_data_cb)(fake_public_key_response);
         });
 
-    EXPECT_CALL(mock_http_interface_, DoRequest(Eq("/v1/authWithHeaderCreds"),
-                                                Eq(oauth_token_), _, _))
+    EXPECT_CALL(mock_http_interface_,
+                DoRequest(Eq(BlindSignHttpRequestType::kAuthAndSign),
+                          Eq(oauth_token_), _, _))
         .Times(1)
         .WillOnce(Invoke([this](Unused, Unused, const std::string& body,
                                 BlindSignHttpCallback callback) {
@@ -204,7 +199,8 @@
 
 TEST_F(BlindSignAuthTest, TestGetTokensFailedNetworkError) {
   EXPECT_CALL(mock_http_interface_,
-              DoRequest(Eq("/v1/getInitialData"), Eq(oauth_token_), _, _))
+              DoRequest(Eq(BlindSignHttpRequestType::kGetInitialData),
+                        Eq(oauth_token_), _, _))
       .Times(1)
       .WillOnce([=](auto&&, auto&&, auto&&, auto get_initial_data_cb) {
         std::move(get_initial_data_cb)(
@@ -212,7 +208,7 @@
       });
 
   EXPECT_CALL(mock_http_interface_,
-              DoRequest(Eq("/v1/authWithHeaderCreds"), _, _, _))
+              DoRequest(Eq(BlindSignHttpRequestType::kAuthAndSign), _, _, _))
       .Times(0);
 
   int num_tokens = 1;
@@ -235,7 +231,7 @@
 
   EXPECT_CALL(
       mock_http_interface_,
-      DoRequest(Eq("/v1/getInitialData"), Eq(oauth_token_),
+      DoRequest(Eq(BlindSignHttpRequestType::kGetInitialData), Eq(oauth_token_),
                 Eq(expected_get_initial_data_request_.SerializeAsString()), _))
       .Times(1)
       .WillOnce([=](auto&&, auto&&, auto&&, auto get_initial_data_cb) {
@@ -243,7 +239,7 @@
       });
 
   EXPECT_CALL(mock_http_interface_,
-              DoRequest(Eq("/v1/authWithHeaderCreds"), _, _, _))
+              DoRequest(Eq(BlindSignHttpRequestType::kAuthAndSign), _, _, _))
       .Times(0);
 
   int num_tokens = 1;
@@ -265,16 +261,17 @@
 
     EXPECT_CALL(
         mock_http_interface_,
-        DoRequest(Eq("/v1/getInitialData"), Eq(oauth_token_),
-                  Eq(expected_get_initial_data_request_.SerializeAsString()),
-                  _))
+        DoRequest(
+            Eq(BlindSignHttpRequestType::kGetInitialData), Eq(oauth_token_),
+            Eq(expected_get_initial_data_request_.SerializeAsString()), _))
         .Times(1)
         .WillOnce([=](auto&&, auto&&, auto&&, auto get_initial_data_cb) {
           std::move(get_initial_data_cb)(fake_public_key_response);
         });
 
-    EXPECT_CALL(mock_http_interface_, DoRequest(Eq("/v1/authWithHeaderCreds"),
-                                                Eq(oauth_token_), _, _))
+    EXPECT_CALL(mock_http_interface_,
+                DoRequest(Eq(BlindSignHttpRequestType::kAuthAndSign),
+                          Eq(oauth_token_), _, _))
         .Times(1)
         .WillOnce(Invoke([this](Unused, Unused, const std::string& body,
                                 BlindSignHttpCallback callback) {
diff --git a/quiche/blind_sign_auth/blind_sign_http_interface.h b/quiche/blind_sign_auth/blind_sign_http_interface.h
index 09e92b2..294ae7f 100644
--- a/quiche/blind_sign_auth/blind_sign_http_interface.h
+++ b/quiche/blind_sign_auth/blind_sign_http_interface.h
@@ -17,9 +17,15 @@
 using BlindSignHttpCallback =
     quiche::SingleUseCallback<void(absl::StatusOr<BlindSignHttpResponse>)>;
 
+enum class BlindSignHttpRequestType {
+  kUnknown = 0,
+  kGetInitialData,
+  kAuthAndSign,
+};
+
 // Interface for async HTTP POST requests in BlindSignAuth.
-// Implementers must send a request to a signer hostname, using the request's
-// arguments, and call the provided callback when a request is complete.
+// Implementers must send a request to a signer server's URL
+// and call the provided callback when the request is complete.
 class QUICHE_EXPORT BlindSignHttpInterface {
  public:
   virtual ~BlindSignHttpInterface() = default;
@@ -32,7 +38,7 @@
   // "application/x-protobuf".
   // DoRequest is async. When the request completes, the implementer must call
   // the provided callback.
-  virtual void DoRequest(const std::string& path_and_query,
+  virtual void DoRequest(BlindSignHttpRequestType request_type,
                          const std::string& authorization_header,
                          const std::string& body,
                          BlindSignHttpCallback callback) = 0;
diff --git a/quiche/blind_sign_auth/test_tools/mock_blind_sign_http_interface.h b/quiche/blind_sign_auth/test_tools/mock_blind_sign_http_interface.h
index 1b4f729..6e86e58 100644
--- a/quiche/blind_sign_auth/test_tools/mock_blind_sign_http_interface.h
+++ b/quiche/blind_sign_auth/test_tools/mock_blind_sign_http_interface.h
@@ -17,7 +17,7 @@
     : public BlindSignHttpInterface {
  public:
   MOCK_METHOD(void, DoRequest,
-              (const std::string& path_and_query,
+              (BlindSignHttpRequestType request_type,
                const std::string& authorization_header, const std::string& body,
                BlindSignHttpCallback callback),
               (override));