go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/cipd/appengine/impl/accesslog/interceptor_test.go (about) 1 // Copyright 2021 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package accesslog 16 17 import ( 18 "strings" 19 "testing" 20 21 "google.golang.org/protobuf/proto" 22 23 cipdpb "go.chromium.org/luci/cipd/api/cipd/v1" 24 "go.chromium.org/luci/cipd/common" 25 ) 26 27 func TestFields(t *testing.T) { 28 t.Parallel() 29 30 obj := &cipdpb.ObjectRef{ 31 HashAlgo: cipdpb.HashAlgo_SHA256, 32 HexDigest: strings.Repeat("a", 64), 33 } 34 iid := common.ObjectRefToInstanceID(obj) 35 pfx := "some/prefix" 36 pkg := "some/package" 37 38 tags := []*cipdpb.Tag{ 39 {Key: "k1", Value: "v1"}, 40 {Key: "k2", Value: "v2"}, 41 } 42 tagsStr := []string{"k1:v1", "k2:v2"} 43 44 ref := "some-ref" 45 46 md := []*cipdpb.InstanceMetadata{ 47 {Key: "mk1", Value: []byte("zzz")}, 48 {Key: "mk2", Value: []byte("zzz")}, 49 } 50 mdStr := []string{"mk1", "mk2"} 51 52 cases := []struct { 53 req any 54 exp *cipdpb.AccessLogEntry 55 }{ 56 { 57 &cipdpb.GetObjectURLRequest{Object: obj}, 58 &cipdpb.AccessLogEntry{Instance: iid}, 59 }, 60 { 61 &cipdpb.BeginUploadRequest{Object: obj}, 62 &cipdpb.AccessLogEntry{Instance: iid}, 63 }, 64 { 65 &cipdpb.PrefixRequest{Prefix: pfx}, 66 &cipdpb.AccessLogEntry{Package: pfx}, 67 }, 68 { 69 &cipdpb.PrefixMetadata{Prefix: pfx}, 70 &cipdpb.AccessLogEntry{Package: pfx}, 71 }, 72 { 73 &cipdpb.ListPrefixRequest{Prefix: pfx}, 74 &cipdpb.AccessLogEntry{Package: pfx}, 75 }, 76 { 77 &cipdpb.PackageRequest{Package: pkg}, 78 &cipdpb.AccessLogEntry{Package: pkg}, 79 }, 80 { 81 &cipdpb.Instance{Package: pkg, Instance: obj}, 82 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid}, 83 }, 84 { 85 &cipdpb.ListInstancesRequest{Package: pkg}, 86 &cipdpb.AccessLogEntry{Package: pkg}, 87 }, 88 { 89 &cipdpb.SearchInstancesRequest{Package: pkg, Tags: tags}, 90 &cipdpb.AccessLogEntry{Package: pkg, Tags: tagsStr}, 91 }, 92 { 93 &cipdpb.Ref{Package: pkg, Instance: obj, Name: ref}, 94 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid, Version: ref}, 95 }, 96 { 97 &cipdpb.DeleteRefRequest{Package: pkg, Name: ref}, 98 &cipdpb.AccessLogEntry{Package: pkg, Version: ref}, 99 }, 100 { 101 &cipdpb.ListRefsRequest{Package: pkg}, 102 &cipdpb.AccessLogEntry{Package: pkg}, 103 }, 104 { 105 &cipdpb.AttachTagsRequest{Package: pkg, Instance: obj, Tags: tags}, 106 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid, Tags: tagsStr}, 107 }, 108 { 109 &cipdpb.DetachTagsRequest{Package: pkg, Instance: obj, Tags: tags}, 110 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid, Tags: tagsStr}, 111 }, 112 { 113 &cipdpb.AttachMetadataRequest{Package: pkg, Instance: obj, Metadata: md}, 114 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid, Metadata: mdStr}, 115 }, 116 { 117 &cipdpb.DetachMetadataRequest{Package: pkg, Instance: obj, Metadata: md}, 118 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid, Metadata: mdStr}, 119 }, 120 { 121 &cipdpb.ListMetadataRequest{Package: pkg, Instance: obj, Keys: mdStr}, 122 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid, Metadata: mdStr}, 123 }, 124 { 125 &cipdpb.ResolveVersionRequest{Package: pkg, Version: ref}, 126 &cipdpb.AccessLogEntry{Package: pkg, Version: ref}, 127 }, 128 { 129 &cipdpb.GetInstanceURLRequest{Package: pkg, Instance: obj}, 130 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid}, 131 }, 132 { 133 &cipdpb.DescribeInstanceRequest{ 134 Package: pkg, 135 Instance: obj, 136 DescribeRefs: true, 137 DescribeTags: true, 138 DescribeProcessors: true, 139 DescribeMetadata: true, 140 }, 141 &cipdpb.AccessLogEntry{ 142 Package: pkg, 143 Instance: iid, 144 Flags: []string{"refs", "tags", "processors", "metadata"}, 145 }, 146 }, 147 { 148 &cipdpb.DescribeClientRequest{Package: pkg, Instance: obj}, 149 &cipdpb.AccessLogEntry{Package: pkg, Instance: iid}, 150 }, 151 } 152 153 for _, c := range cases { 154 got := &cipdpb.AccessLogEntry{} 155 extractFieldsFromRequest(got, c.req) 156 if !proto.Equal(got, c.exp) { 157 t.Errorf("%s: %s != %s", c.req, got, c.exp) 158 } 159 } 160 }