| // Copyright 2019 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package gcpqueue | |
| import ( | |
| "testing" | |
| taskspb "cloud.google.com/go/cloudtasks/apiv2/cloudtaskspb" | |
| "github.com/google/go-cmp/cmp" | |
| "golang.org/x/pkgsite/internal/config" | |
| "golang.org/x/pkgsite/internal/queue" | |
| "google.golang.org/protobuf/proto" | |
| "google.golang.org/protobuf/types/known/durationpb" | |
| ) | |
| func TestNewTaskID(t *testing.T) { | |
| for _, test := range []struct { | |
| modulePath, version string | |
| want string | |
| }{ | |
| {"m-1", "v2", "acc5-m-1_vv2"}, | |
| {"my_module", "v1.2.3", "0cb9-my__module_vv1_o2_o3"}, | |
| {"µπΩ/github.com", "v2.3.4-ß", "a49c-_00b5_03c0_03a9_-github_ocom_vv2_o3_o4-_00df"}, | |
| } { | |
| got := newTaskID(test.modulePath, test.version) | |
| if got != test.want { | |
| t.Errorf("%s@%s: got %s, want %s", test.modulePath, test.version, got, test.want) | |
| } | |
| } | |
| } | |
| func TestNewTaskRequest(t *testing.T) { | |
| cfg := config.Config{ | |
| ProjectID: "Project", | |
| LocationID: "us-central1", | |
| QueueURL: "http://1.2.3.4:8000", | |
| ServiceAccount: "sa", | |
| QueueAudience: "qa", | |
| } | |
| want := &taskspb.CreateTaskRequest{ | |
| Parent: "projects/Project/locations/us-central1/queues/queueID", | |
| Task: &taskspb.Task{ | |
| DispatchDeadline: durationpb.New(maxCloudTasksTimeout), | |
| MessageType: &taskspb.Task_HttpRequest{ | |
| HttpRequest: &taskspb.HttpRequest{ | |
| HttpMethod: taskspb.HttpMethod_POST, | |
| Url: "http://1.2.3.4:8000/fetch/mod/@v/v1.2.3", | |
| AuthorizationHeader: &taskspb.HttpRequest_OidcToken{ | |
| OidcToken: &taskspb.OidcToken{ | |
| ServiceAccountEmail: "sa", | |
| Audience: "qa", | |
| }, | |
| }, | |
| }, | |
| }, | |
| }, | |
| } | |
| gcp, err := newGCP(&cfg, nil, "queueID") | |
| if err != nil { | |
| t.Fatal(err) | |
| } | |
| opts := &queue.Options{ | |
| Suffix: "suf", | |
| } | |
| got := gcp.newTaskRequest("mod", "v1.2.3", opts) | |
| want.Task.Name = got.Task.Name | |
| if diff := cmp.Diff(want, got, cmp.Comparer(proto.Equal)); diff != "" { | |
| t.Errorf("mismatch (-want, +got):\n%s", diff) | |
| } | |
| want.Task.MessageType.(*taskspb.Task_HttpRequest).HttpRequest.Url += "?proxyfetch=off" | |
| opts.DisableProxyFetch = true | |
| got = gcp.newTaskRequest("mod", "v1.2.3", opts) | |
| want.Task.Name = got.Task.Name | |
| if diff := cmp.Diff(want, got, cmp.Comparer(proto.Equal)); diff != "" { | |
| t.Errorf("mismatch (-want, +got):\n%s", diff) | |
| } | |
| } |