Atlas › Test

invalid_link

Exact test identity: go.temporal.io/server/common/nexus/nexusrpc/TestAddLinksToHeader/invalid_link

Package
go.temporal.io/server/common/nexus/nexusrpc
Suite / test hierarchy
TestAddLinksToHeader/invalid_link
Test
invalid_link
Introduced at
api.go ×1 Frontier kind: Joint frontier
Covered ranges
8
Covered lines
16
Covered files
1

Covered source

Expand a file to inspect source; the > gutter marks covered lines.

go.temporal.io/server/common/nexus/nexusrpc/api.go 16 covered LOC · 8 ranges

Open complete file

77 }
78
79 > func addLinksToHTTPHeader(links []nexus.Link, httpHeader http.Header) error { api.go
80 > for _, link := range links {
81 > encodedLink, err := encodeLink(link) api.go
82 > if err != nil {
83 > return err api.go
84 > }
85 httpHeader.Add(headerLink, encodedLink)
86 }
140 // decodeLink encodes the link to Nexus-Link header value.
141 // It follows the same format of HTTP Link header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Link
142 > func encodeLink(link nexus.Link) (string, error) { api.go
143 > if err := validateLinkURL(link.URL); err != nil {
144 > return "", fmt.Errorf("failed to encode link: %w", err) api.go
145 > }
146 if err := validateLinkType(link.Type); err != nil {
147 return "", fmt.Errorf("failed to encode link: %w", err)
229 }
230
231 > func validateLinkURL(value *url.URL) error { api.go
232 > if value == nil || value.String() == "" {
233 return errors.New("url is empty")
234 }
235 > _, err := url.ParseQuery(value.RawQuery) api.go
236 > if err != nil {
237 > return fmt.Errorf("url query not percent-encoded: %s", value) api.go
238 > }
239 return nil
240 }