@@ -3233,6 +3233,14 @@ class UnstoppableDomainsUnitTest : public JsonRpcServiceUnitTest {
3233
3233
polygon_endpoint_handler_->AddEthCallHandler(
3234
3234
polygon_getmany_call_handler_.get());
3235
3235
3236
+ base_endpoint_handler_ = std::make_unique<JsonRpcEndpointHandler>(
3237
+ NetworkManager::GetUnstoppableDomainsRpcUrl(
3238
+ mojom::kBaseMainnetChainId));
3239
+ base_getmany_call_handler_ = std::make_unique<UDGetManyCallHandler>(
3240
+ EthAddress::FromHex(GetUnstoppableDomainsProxyReaderContractAddress(
3241
+ mojom::kBaseMainnetChainId)));
3242
+ base_endpoint_handler_->AddEthCallHandler(base_getmany_call_handler_.get());
3243
+
3236
3244
url_loader_factory_.SetInterceptor(base::BindRepeating(
3237
3245
&UnstoppableDomainsUnitTest::HandleRequest, base::Unretained(this)));
3238
3246
}
@@ -3245,6 +3253,10 @@ class UnstoppableDomainsUnitTest : public JsonRpcServiceUnitTest {
3245
3253
static constexpr char k0x3a2f3fAddr[] =
3246
3254
"0x3a2f3f7aab82d69036763cfd3f755975f84496e6";
3247
3255
3256
+ // Base: test.bald -> 0x1111111111111111111111111111111111111111
3257
+ static constexpr char k0x111111Addr[] =
3258
+ "0x1111111111111111111111111111111111111111";
3259
+
3248
3260
void SetEthResponse(const std::string& domain, const std::string& response) {
3249
3261
eth_mainnet_getmany_call_handler_->Reset();
3250
3262
eth_mainnet_getmany_call_handler_->AddItem(domain, "crypto.ETH.address",
@@ -3272,6 +3284,18 @@ class UnstoppableDomainsUnitTest : public JsonRpcServiceUnitTest {
3272
3284
polygon_getmany_call_handler_->Reset();
3273
3285
polygon_getmany_call_handler_->SetRawResponse("timeout");
3274
3286
}
3287
+ void SetBaseResponse(const std::string& domain, const std::string& response) {
3288
+ base_getmany_call_handler_->Reset();
3289
+ base_getmany_call_handler_->AddItem(domain, "crypto.ETH.address", response);
3290
+ }
3291
+ void SetBaseRawResponse(const std::string& response) {
3292
+ base_getmany_call_handler_->Reset();
3293
+ base_getmany_call_handler_->SetRawResponse(response);
3294
+ }
3295
+ void SetBaseTimeoutResponse() {
3296
+ base_getmany_call_handler_->Reset();
3297
+ base_getmany_call_handler_->SetRawResponse("timeout");
3298
+ }
3275
3299
3276
3300
std::string DnsIpfsResponse() const {
3277
3301
return MakeJsonRpcStringArrayResponse(
@@ -3299,9 +3323,11 @@ class UnstoppableDomainsUnitTest : public JsonRpcServiceUnitTest {
3299
3323
protected:
3300
3324
std::unique_ptr<JsonRpcEndpointHandler> eth_mainnet_endpoint_handler_;
3301
3325
std::unique_ptr<JsonRpcEndpointHandler> polygon_endpoint_handler_;
3326
+ std::unique_ptr<JsonRpcEndpointHandler> base_endpoint_handler_;
3302
3327
3303
3328
std::unique_ptr<UDGetManyCallHandler> eth_mainnet_getmany_call_handler_;
3304
3329
std::unique_ptr<UDGetManyCallHandler> polygon_getmany_call_handler_;
3330
+ std::unique_ptr<UDGetManyCallHandler> base_getmany_call_handler_;
3305
3331
3306
3332
void HandleRequest(const network::ResourceRequest& request) {
3307
3333
url_loader_factory_.ClearResponses();
@@ -3320,6 +3346,13 @@ class UnstoppableDomainsUnitTest : public JsonRpcServiceUnitTest {
3320
3346
} else {
3321
3347
url_loader_factory_.AddResponse(request.url.spec(), *response);
3322
3348
}
3349
+ } else if ((response = base_endpoint_handler_->HandleRequest(request))) {
3350
+ if (response == "timeout") {
3351
+ url_loader_factory_.AddResponse(request.url.spec(), "",
3352
+ net::HTTP_REQUEST_TIMEOUT);
3353
+ } else {
3354
+ url_loader_factory_.AddResponse(request.url.spec(), *response);
3355
+ }
3323
3356
} else {
3324
3357
url_loader_factory_.AddResponse(request.url.spec(), "",
3325
3358
net::HTTP_INTERNAL_SERVER_ERROR);
@@ -3389,6 +3422,25 @@ TEST_F(UnstoppableDomainsUnitTest, GetWalletAddr_PolygonResult) {
3389
3422
task_environment_.RunUntilIdle();
3390
3423
}
3391
3424
3425
+ TEST_F(UnstoppableDomainsUnitTest, GetWalletAddr_BaseResult) {
3426
+ base::MockCallback<GetWalletAddrCallback> callback;
3427
+ EXPECT_CALL(callback, Run(k0x111111Addr, mojom::ProviderError::kSuccess, ""));
3428
+ SetEthResponse("javajobs.crypto", "");
3429
+ SetPolygonResponse("javajobs.crypto", "");
3430
+ SetBaseResponse("javajobs.crypto", k0x111111Addr);
3431
+ json_rpc_service_->UnstoppableDomainsGetWalletAddr(
3432
+ "javajobs.crypto", MakeToken(), callback.Get());
3433
+ WaitAndVerify(&callback);
3434
+
3435
+ EXPECT_CALL(callback, Run(k0x111111Addr, mojom::ProviderError::kSuccess, ""));
3436
+ SetEthResponse("javajobs.crypto", k0x8aaD44Addr);
3437
+ SetPolygonResponse("javajobs.crypto", "");
3438
+ SetBaseResponse("javajobs.crypto", k0x111111Addr);
3439
+ json_rpc_service_->UnstoppableDomainsGetWalletAddr(
3440
+ "javajobs.crypto", MakeToken(), callback.Get());
3441
+ WaitAndVerify(&callback);
3442
+ }
3443
+
3392
3444
TEST_F(UnstoppableDomainsUnitTest, GetWalletAddr_FallbackToEthMainnet) {
3393
3445
base::MockCallback<GetWalletAddrCallback> callback;
3394
3446
EXPECT_CALL(callback, Run(k0x8aaD44Addr, mojom::ProviderError::kSuccess, ""));
@@ -3571,6 +3623,36 @@ TEST_F(UnstoppableDomainsUnitTest, ResolveDns_PolygonResult) {
3571
3623
WaitAndVerify(&callback);
3572
3624
}
3573
3625
3626
+ TEST_F(UnstoppableDomainsUnitTest, ResolveDns_BaseResult) {
3627
+ base::MockCallback<ResolveDnsCallback> callback;
3628
+ EXPECT_CALL(callback, Run(std::optional<GURL>("https://brave.com"),
3629
+ mojom::ProviderError::kSuccess, ""));
3630
+ SetEthTimeoutResponse();
3631
+ SetPolygonRawResponse(DnsEmptyResponse());
3632
+ SetBaseRawResponse(DnsBraveResponse());
3633
+ json_rpc_service_->UnstoppableDomainsResolveDns("brave.crypto",
3634
+ callback.Get());
3635
+ WaitAndVerify(&callback);
3636
+
3637
+ EXPECT_CALL(callback, Run(std::optional<GURL>("https://brave.com"),
3638
+ mojom::ProviderError::kSuccess, ""));
3639
+ SetEthRawResponse(DnsIpfsResponse());
3640
+ SetPolygonRawResponse(DnsEmptyResponse());
3641
+ SetBaseRawResponse(DnsBraveResponse());
3642
+ json_rpc_service_->UnstoppableDomainsResolveDns("brave.crypto",
3643
+ callback.Get());
3644
+ WaitAndVerify(&callback);
3645
+
3646
+ EXPECT_CALL(callback, Run(std::optional<GURL>("https://brave.com"),
3647
+ mojom::ProviderError::kSuccess, ""));
3648
+ SetEthRawResponse(DnsEmptyResponse());
3649
+ SetPolygonRawResponse(DnsEmptyResponse());
3650
+ SetBaseRawResponse(DnsBraveResponse());
3651
+ json_rpc_service_->UnstoppableDomainsResolveDns("brave.crypto",
3652
+ callback.Get());
3653
+ WaitAndVerify(&callback);
3654
+ }
3655
+
3574
3656
TEST_F(UnstoppableDomainsUnitTest, ResolveDns_FallbackToEthMainnet) {
3575
3657
base::MockCallback<ResolveDnsCallback> callback;
3576
3658
EXPECT_CALL(
0 commit comments