Skip to content

Commit

Permalink
Fix erroneous lookup in github webhook handler.
Browse files Browse the repository at this point in the history
While adding tests I erroneously changed a lookup in a package event
json from ".package.package_version.container_metadata.tag.name" to
".package.package_version.tag_name", which turned out to be both (a)
the wrong thing to do and (b) causing an internal server error because
"tag_name" field is not available (anymore?) for package events.
  • Loading branch information
blkt committed May 22, 2024
1 parent e707a98 commit b75e0ad
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 15 deletions.
8 changes: 1 addition & 7 deletions internal/controlplane/handlers_githubwebhooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -712,13 +712,7 @@ func extractArtifactVersionFromPayload(ctx context.Context, payload map[string]a
if err != nil {
return nil, err
}
// Previous lookup was done at this path
// ".package.package_version.container_metadata.tag.name",
// which is unfortunately not have available under go-github,
// as field "container_metadata" is missing form its structs.
// I suggest using the following, although it's still to be
// verified whether that's the right one.
tag, err := util.JQReadFrom[string](ctx, ".package.package_version.tag_name", payload)
tag, err := util.JQReadFrom[string](ctx, ".package.package_version.container_metadata.tag.name", payload)
if err != nil {
return nil, err
}
Expand Down
56 changes: 48 additions & 8 deletions internal/controlplane/handlers_githubwebhooks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -507,16 +507,21 @@ func (s *UnitTestSuite) TestHandlGitHubWebHook() {
// https://docs.github.com/en/webhooks/webhook-events-and-payloads#package
event: "package",
// https://pkg.go.dev/github.com/google/go-github/[email protected]/github#PackageEvent
payload: &github.PackageEvent{
payload: &packageEvent{
Action: github.String("published"),
Package: &github.Package{
Package: &pkg{
Name: github.String("package-name"),
PackageType: github.String("package-type"),
// .package.package_version.container_metadata.tag.name
PackageVersion: &github.PackageVersion{
PackageVersion: &packageVersion{
ID: github.Int64(1),
Version: github.String("version"),
TagName: github.String("tagname"),
ContainerMedatata: &containerMetadata{
Tag: &tag{
Digest: github.String("digest"),
Name: github.String("tag"),
},
},
},
Owner: &github.User{
Login: github.String("login"),
Expand All @@ -540,15 +545,21 @@ func (s *UnitTestSuite) TestHandlGitHubWebHook() {
// https://docs.github.com/en/webhooks/webhook-events-and-payloads#package
event: "package",
// https://pkg.go.dev/github.com/google/go-github/[email protected]/github#PackageEvent
payload: &github.PackageEvent{
payload: &packageEvent{
Action: github.String("updated"),
Package: &github.Package{
Package: &pkg{
Name: github.String("package-name"),
PackageType: github.String("package-type"),
PackageVersion: &github.PackageVersion{
// .package.package_version.container_metadata.tag.name
PackageVersion: &packageVersion{
ID: github.Int64(1),
Version: github.String("version"),
TagName: github.String("tagname"),
ContainerMedatata: &containerMetadata{
Tag: &tag{
Digest: github.String("digest"),
Name: github.String("tag"),
},
},
},
Owner: &github.User{
Login: github.String("login"),
Expand Down Expand Up @@ -1955,6 +1966,35 @@ type garbage struct {
Garbage *string `json:"garbage,omitempty"`
}

type packageEvent struct {
Action *string `json:"action,omitempty"`
Repo *github.Repository `json:"repository,omitempty"`
Org *github.Organization `json:"org,omitempty"`
Package *pkg `json:"package,omitempty"`
}

type pkg struct {
Name *string `json:"name,omitempty"`
PackageType *string `json:"package_type,omitempty"`
PackageVersion *packageVersion `json:"package_version,omitempty"`
Owner *github.User `json:"owner,omitempty"`
}

type packageVersion struct {
ID *int64 `json:"id,omitempty"`
Version *string `json:"version,omitempty"`
ContainerMedatata *containerMetadata `json:"container_metadata,omitempty"`
}

type containerMetadata struct {
Tag *tag `json:"tag,omitempty"`
}

type tag struct {
Digest *string `json:"digest,omitempty"`
Name *string `json:"name,omitempty"`
}

type branchProtectionConfigurationEvent struct {
Action *string `json:"action,omitempty"`
Repo *github.Repository `json:"repo,omitempty"`
Expand Down

0 comments on commit b75e0ad

Please sign in to comment.