diff --git a/core/src/main/java/google/registry/reporting/billing/PublishInvoicesAction.java b/core/src/main/java/google/registry/reporting/billing/PublishInvoicesAction.java index b12e30bd9..27b16e658 100644 --- a/core/src/main/java/google/registry/reporting/billing/PublishInvoicesAction.java +++ b/core/src/main/java/google/registry/reporting/billing/PublishInvoicesAction.java @@ -23,16 +23,17 @@ import static javax.servlet.http.HttpServletResponse.SC_OK; import com.google.api.services.dataflow.Dataflow; import com.google.api.services.dataflow.model.Job; -import com.google.appengine.api.taskqueue.QueueFactory; -import com.google.appengine.api.taskqueue.TaskOptions; +import com.google.common.collect.ImmutableMultimap; import com.google.common.flogger.FluentLogger; import com.google.common.net.MediaType; import google.registry.config.RegistryConfig.Config; import google.registry.reporting.ReportingModule; import google.registry.request.Action; +import google.registry.request.Action.Service; import google.registry.request.Parameter; import google.registry.request.Response; import google.registry.request.auth.Auth; +import google.registry.util.CloudTasksUtils; import java.io.IOException; import javax.inject.Inject; import org.joda.time.YearMonth; @@ -65,6 +66,7 @@ public class PublishInvoicesAction implements Runnable { private final Dataflow dataflow; private final Response response; private final YearMonth yearMonth; + private final CloudTasksUtils cloudTasksUtils; @Inject PublishInvoicesAction( @@ -74,7 +76,8 @@ public class PublishInvoicesAction implements Runnable { BillingEmailUtils emailUtils, Dataflow dataflow, Response response, - YearMonth yearMonth) { + YearMonth yearMonth, + CloudTasksUtils cloudTasksUtils) { this.projectId = projectId; this.jobRegion = jobRegion; this.jobId = jobId; @@ -82,6 +85,7 @@ public class PublishInvoicesAction implements Runnable { this.dataflow = dataflow; this.response = response; this.yearMonth = yearMonth; + this.cloudTasksUtils = cloudTasksUtils; } static final String PATH = "/_dr/task/publishInvoices"; @@ -119,10 +123,11 @@ public class PublishInvoicesAction implements Runnable { } private void enqueueCopyDetailReportsTask() { - TaskOptions copyDetailTask = - TaskOptions.Builder.withUrl(CopyDetailReportsAction.PATH) - .method(TaskOptions.Method.POST) - .param(PARAM_YEAR_MONTH, yearMonth.toString()); - QueueFactory.getQueue(BillingModule.CRON_QUEUE).add(copyDetailTask); + cloudTasksUtils.enqueue( + BillingModule.CRON_QUEUE, + CloudTasksUtils.createPostTask( + CopyDetailReportsAction.PATH, + Service.BACKEND.toString(), + ImmutableMultimap.of(PARAM_YEAR_MONTH, yearMonth.toString()))); } } diff --git a/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java b/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java index b8c38e922..8ae7b8f3d 100644 --- a/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java +++ b/core/src/test/java/google/registry/reporting/billing/PublishInvoicesActionTest.java @@ -15,7 +15,6 @@ package google.registry.reporting.billing; import static com.google.common.truth.Truth.assertThat; -import static google.registry.testing.TaskQueueHelper.assertTasksEnqueued; import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR; import static javax.servlet.http.HttpServletResponse.SC_NOT_MODIFIED; import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT; @@ -30,10 +29,13 @@ import com.google.api.services.dataflow.Dataflow.Projects.Locations; import com.google.api.services.dataflow.Dataflow.Projects.Locations.Jobs; import com.google.api.services.dataflow.Dataflow.Projects.Locations.Jobs.Get; import com.google.api.services.dataflow.model.Job; +import com.google.cloud.tasks.v2.HttpMethod; import com.google.common.net.MediaType; import google.registry.testing.AppEngineExtension; +import google.registry.testing.CloudTasksHelper; +import google.registry.testing.CloudTasksHelper.TaskMatcher; import google.registry.testing.FakeResponse; -import google.registry.testing.TaskQueueHelper.TaskMatcher; +import google.registry.util.CloudTasksUtils; import java.io.IOException; import org.joda.time.YearMonth; import org.junit.jupiter.api.BeforeEach; @@ -51,6 +53,8 @@ class PublishInvoicesActionTest { private final Job expectedJob = new Job(); private final BillingEmailUtils emailUtils = mock(BillingEmailUtils.class); private final FakeResponse response = new FakeResponse(); + private final CloudTasksHelper cloudTasksHelper = new CloudTasksHelper(); + private final CloudTasksUtils cloudTasksUtils = cloudTasksHelper.getTestCloudTasksUtils(); private PublishInvoicesAction uploadAction; @RegisterExtension @@ -72,7 +76,8 @@ class PublishInvoicesActionTest { emailUtils, dataflow, response, - new YearMonth(2017, 10)); + new YearMonth(2017, 10), + cloudTasksUtils); } @Test @@ -84,9 +89,9 @@ class PublishInvoicesActionTest { TaskMatcher matcher = new TaskMatcher() .url("/_dr/task/copyDetailReports") - .method("POST") + .method(HttpMethod.POST) .param("yearMonth", "2017-10"); - assertTasksEnqueued("retryable-cron-tasks", matcher); + cloudTasksHelper.assertTasksEnqueued("retryable-cron-tasks", matcher); } @Test