From 164c2489296f4db57db5e65c8edd0e145f440ae1 Mon Sep 17 00:00:00 2001 From: Windz Date: Mon, 16 Oct 2023 13:40:01 +0900 Subject: [PATCH] upgrade go.mod & change docker hub user (#26) * fix Signed-off-by: wfan * fix pr Signed-off-by: wfan * fix function pointer check Signed-off-by: wfan * change docker hub user Signed-off-by: wfan * add comment Signed-off-by: wfan * fix Signed-off-by: wfan * 1.20 Signed-off-by: wfan * push nightly Signed-off-by: wfan * revert push Signed-off-by: wfan * latest Signed-off-by: wfan --------- Signed-off-by: wfan --- .github/pull_request_template.md | 6 +- .github/workflows/docker-build-publish.yaml | 27 ++--- .github/workflows/github-releases.yaml | 1 + CONTRIBUTING.md | 2 +- Dockerfile | 2 +- Makefile | 2 +- README.md | 14 +-- go.mod | 88 ++++++++-------- go.mod.default | 2 +- go.sum | 110 ++++++++++---------- router/debug_routes_test.go | 15 ++- 11 files changed, 136 insertions(+), 133 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index d8eedf2..cd7bd34 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -33,6 +33,6 @@ _description_with_details_and_reasoning_ - [ ] Passed all pipeline checking ## Checklist for maintainer -- [ ] Use `Squash and merge` -- [ ] Double-confirm the merge message has prefix `[skip ci]`/`[ci skip]`/`[no ci]`/`[skip actions]`/`[actions skip]` -- [ ] Delete the branch after merge +- Use `Squash and merge` +- Double-confirm the merge message has prefix `[skip ci]`/`[ci skip]`/`[no ci]`/`[skip actions]`/`[actions skip]` +- Delete the branch after merge diff --git a/.github/workflows/docker-build-publish.yaml b/.github/workflows/docker-build-publish.yaml index e038f10..41a7555 100644 --- a/.github/workflows/docker-build-publish.yaml +++ b/.github/workflows/docker-build-publish.yaml @@ -26,7 +26,7 @@ on: env: DOCKER_BUILDX_PLATFORM: linux/amd64 DOCKER_REGISTRY_OWNER: athenz - GOLANG_VERSION: ^1.19 + DOCKER_REGISTRY_USER: abvaidya jobs: build: @@ -84,23 +84,9 @@ jobs: id: setup-go # You may pin to the exact commit or the version. # uses: https://github.com/actions/setup-go/tags - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: - go-version: ${{ env.GOLANG_VERSION }} - - # This action allows caching dependencies and build outputs to improve workflow execution time. - # https://github.com/actions/cache - - - name: Cache Go Modules - id: cache-go - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- + go-version: "stable" # A GitHub Action for golang tests - @@ -180,7 +166,7 @@ jobs: # Server address of Docker registry. If not set then will default to Docker Hub registry: ${{ env.DOCKER_REGISTRY_URL }} # optional # Username used to log against the Docker registry - username: ${{ env.DOCKER_REGISTRY_OWNER }} # optional + username: ${{ env.DOCKER_REGISTRY_USER }} # optional # Password or personal access token used to log against the Docker registry password: ${{ env.DOCKER_REGISTRY_TOKEN }} # optional # Log out from the Docker registry at the end of a job @@ -211,12 +197,15 @@ jobs: id: build_and_push # You may pin to the exact commit or the version. # uses: https://github.com/docker/build-push-action/tags - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . push: ${{ github.event_name != 'pull_request' }} load: ${{ github.event_name == 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} + # push: true + # load: false + # tags: ${{ env.DOCKER_REGISTRY_URL }}/${{ env.DOCKER_REGISTRY_OWNER }}/${{ env.DOCKER_REGISTRY_IMAGE }}:nightly labels: ${{ steps.meta.outputs.labels }} platforms: ${{ env.DOCKER_BUILDX_PLATFORM }} build-args: | diff --git a/.github/workflows/github-releases.yaml b/.github/workflows/github-releases.yaml index 1ac0a8c..d95c949 100644 --- a/.github/workflows/github-releases.yaml +++ b/.github/workflows/github-releases.yaml @@ -15,3 +15,4 @@ jobs: - uses: ncipollo/release-action@v1 with: generateReleaseNotes: true + skipIfReleaseExists: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 103dfa1..5ae636b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,7 @@ make test ## Dependency management -The Authorization Proxy project uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies on external packages. This requires a working Go environment with version 1.19 or greater installed. +The Authorization Proxy project uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies on external packages. This requires a working Go environment with version 1.20 or greater installed. To add or update a new dependency, use the `go get` command: diff --git a/Dockerfile b/Dockerfile index f2730da..15f4e8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.19-alpine AS base +FROM golang:1.20-alpine AS base RUN set -eux \ && apk --no-cache add ca-certificates \ diff --git a/Makefile b/Makefile index 6c2c7b3..30bd2d9 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ # sleep 3 deps: - rm ./go.sum + rm -f ./go.sum cp ./go.mod.default ./go.mod GO111MODULE=on go mod tidy diff --git a/README.md b/README.md index be96b2e..9dbbc36 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,12 @@ - [What is Authorization Proxy](#what-is-authorization-proxy) - [Use case](#use-case) - - [Authorization and Authorization request](#authorization-and-authorization-request) - - [Athenz authorizer](#athenz-authorizer) - - [Authorization success](#authorization-success) - - [Authorization failed](#authorization-failed) - - [Mapping rules](#mapping-rules) - - [HTTP request headers](#http-request-headers) + - [Authorization and Authorization request](#authorization-and-authorization-request) + - [Athenz authorizer](#athenz-authorizer) + - [Authorization success](#authorization-success) + - [Authorization failed](#authorization-failed) + - [Mapping rules](#mapping-rules) + - [HTTP request headers](#http-request-headers) - [Features to Debug](#features-to-debug) - [Configuration](#configuration) - [Contributor License Agreement](#contributor-license-agreement) @@ -35,7 +35,7 @@ Client request can be authenticated and authorized by: 1. Role token in the HTTP/HTTPS request header 1. Role certificate on mTLS -Requires go 1.19 or later. +Requires go 1.20 or later. ## Use case diff --git a/go.mod b/go.mod index 2d42f0d..dab6817 100644 --- a/go.mod +++ b/go.mod @@ -1,67 +1,67 @@ module github.com/AthenZ/authorization-proxy/v4 -go 1.19 +go 1.20 replace ( - cloud.google.com/go => cloud.google.com/go v0.110.0 + cloud.google.com/go => cloud.google.com/go v0.110.8 github.com/golang/mock => github.com/golang/mock v1.6.0 - github.com/golang/protobuf => github.com/golang/protobuf v1.5.2 - github.com/google/go-cmp => github.com/google/go-cmp v0.5.9 - github.com/google/pprof => github.com/google/pprof v0.0.0-20230222194610-99052d3372e7 + github.com/golang/protobuf => github.com/golang/protobuf v1.5.3 + github.com/google/go-cmp => github.com/google/go-cmp v0.6.0 + github.com/google/pprof => github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 github.com/mwitkow/grpc-proxy => github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76 - golang.org/x/crypto => golang.org/x/crypto v0.6.0 - golang.org/x/exp => golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 - golang.org/x/image => golang.org/x/image v0.5.0 + golang.org/x/crypto => golang.org/x/crypto v0.14.0 + golang.org/x/exp => golang.org/x/exp v0.0.0-20231006140011-7918f672742d + golang.org/x/image => golang.org/x/image v0.13.0 golang.org/x/lint => golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 - golang.org/x/mobile => golang.org/x/mobile v0.0.0-20221110043201-43a038452099 - golang.org/x/mod => golang.org/x/mod v0.8.0 - golang.org/x/net => golang.org/x/net v0.7.0 - golang.org/x/oauth2 => golang.org/x/oauth2 v0.5.0 - golang.org/x/sync => golang.org/x/sync v0.1.0 - golang.org/x/sys => golang.org/x/sys v0.5.0 - golang.org/x/term => golang.org/x/term v0.5.0 - golang.org/x/text => golang.org/x/text v0.7.0 + golang.org/x/mobile => golang.org/x/mobile v0.0.0-20231006135142-2b44d11868fe + golang.org/x/mod => golang.org/x/mod v0.13.0 + golang.org/x/net => golang.org/x/net v0.17.0 + golang.org/x/oauth2 => golang.org/x/oauth2 v0.13.0 + golang.org/x/sync => golang.org/x/sync v0.4.0 + golang.org/x/sys => golang.org/x/sys v0.13.0 + golang.org/x/term => golang.org/x/term v0.13.0 + golang.org/x/text => golang.org/x/text v0.13.0 golang.org/x/time => golang.org/x/time v0.3.0 - golang.org/x/tools => golang.org/x/tools v0.6.0 - golang.org/x/xerrors => golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 - google.golang.org/api => google.golang.org/api v0.110.0 - google.golang.org/appengine => google.golang.org/appengine v1.6.7 - google.golang.org/genproto => google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 - google.golang.org/grpc => google.golang.org/grpc v1.53.0 - google.golang.org/protobuf => google.golang.org/protobuf v1.28.1 + golang.org/x/tools => golang.org/x/tools v0.14.0 + golang.org/x/xerrors => golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 + google.golang.org/api => google.golang.org/api v0.147.0 + google.golang.org/appengine => google.golang.org/appengine v1.6.8 + google.golang.org/genproto => google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a + google.golang.org/grpc => google.golang.org/grpc v1.58.3 + google.golang.org/protobuf => google.golang.org/protobuf v1.31.0 ) require ( - github.com/AthenZ/athenz-authorizer/v5 v5.5.1 - github.com/kpango/glg v1.6.13 + github.com/AthenZ/athenz-authorizer/v5 v5.5.2 + github.com/kpango/glg v1.6.15 github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76 github.com/pkg/errors v0.9.1 - golang.org/x/sync v0.1.0 - google.golang.org/grpc v1.53.0 - google.golang.org/protobuf v1.28.1 + golang.org/x/sync v0.4.0 + google.golang.org/grpc v1.58.2 + google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - github.com/AthenZ/athenz v1.11.14 // indirect + github.com/AthenZ/athenz v1.11.43 // indirect github.com/ardielle/ardielle-go v1.5.2 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d // indirect - github.com/goccy/go-json v0.9.11 // indirect - github.com/golang-jwt/jwt/v4 v4.4.2 // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/klauspost/cpuid/v2 v2.0.9 // indirect - github.com/kpango/fastime v1.1.4 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/kpango/fastime v1.1.9 // indirect github.com/kpango/gache v1.2.8 // indirect github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect - github.com/lestrrat-go/blackmagic v1.0.0 // indirect + github.com/lestrrat-go/blackmagic v1.0.2 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect - github.com/lestrrat-go/iter v1.0.1 // indirect - github.com/lestrrat-go/jwx v1.2.25 // indirect - github.com/lestrrat-go/option v1.0.0 // indirect + github.com/lestrrat-go/iter v1.0.2 // indirect + github.com/lestrrat-go/jwx v1.2.26 // indirect + github.com/lestrrat-go/option v1.0.1 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect - golang.org/x/crypto v0.1.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a // indirect ) diff --git a/go.mod.default b/go.mod.default index d08138f..4cc0598 100644 --- a/go.mod.default +++ b/go.mod.default @@ -1,6 +1,6 @@ module github.com/AthenZ/authorization-proxy/v4 -go 1.19 +go 1.20 replace ( cloud.google.com/go => cloud.google.com/go latest diff --git a/go.sum b/go.sum index 1e86dba..a108d14 100644 --- a/go.sum +++ b/go.sum @@ -1,44 +1,46 @@ -github.com/AthenZ/athenz v1.11.14 h1:B8UufvrUm1DjVJci1bWKxHNrGa1y6qTlM1IPL/7FaUs= -github.com/AthenZ/athenz v1.11.14/go.mod h1:EQzE5ZMu7HN+bLk4apc04aHBRN9ftFgunwjoWhr/nyQ= -github.com/AthenZ/athenz-authorizer/v5 v5.5.1 h1:okVP8IVuYnQaJG8CfSOwDbyTKyVRBhL0ldZ5XZBpMNg= -github.com/AthenZ/athenz-authorizer/v5 v5.5.1/go.mod h1:Y4AYjbSeqaK6KdOjfGDbk1yvlVJ4Fm37+3ujnthE/1M= +github.com/AthenZ/athenz v1.11.43 h1:mRJBQEsAJN+gtLim6vlfI36NFZiXJxQLGIlyGIxfN10= +github.com/AthenZ/athenz v1.11.43/go.mod h1:pLEsKJPEGGPtsp1YTisfS5tpFXqGC+EreaUDJwP/A8k= +github.com/AthenZ/athenz-authorizer/v5 v5.5.2 h1:Wbmv1AKk+9Z1UejEPDCxm4Vxy1a9H3QwaGyh/TI7Lhw= +github.com/AthenZ/athenz-authorizer/v5 v5.5.2/go.mod h1:WXL+x349690VcELKsQh0srR30OoV68RYLRrVZ/T5qeU= github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/dimfeld/httptreemux v5.0.1+incompatible h1:Qj3gVcDNoOthBAqftuD596rm4wg/adLLz5xh5CmpiCA= -github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/kpango/fastime v1.1.4 h1:pus9JgJBg/8Jie3ozayA4yNIV67BUPhbq0wMZY3CtYo= -github.com/kpango/fastime v1.1.4/go.mod h1:tTNDbIo5qL6D7g5vh2YbkyUbOVP2kD/we3rSjN22PMY= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/kpango/fastime v1.1.9 h1:xVQHcqyPt5M69DyFH7g1EPRns1YQNap9d5eLhl/Jy84= +github.com/kpango/fastime v1.1.9/go.mod h1:vyD7FnUn08zxY4b/QFBZVG+9EWMYsNl+QF0uE46urD4= github.com/kpango/gache v1.2.8 h1:+OjREOmuWO4qrJksDhzWJq80o9iwHiezdVmMR1jtCG0= github.com/kpango/gache v1.2.8/go.mod h1:UyBo0IoPFDSJypK2haDXeV6PwHEmBcXQA0BLuOYEvWg= -github.com/kpango/glg v1.6.13 h1:QMhxOm/Oo1k8qraMtH4SQOYIgB/SI2RW2Hvrn1kgAZw= -github.com/kpango/glg v1.6.13/go.mod h1:fwP/c6NJTXe0vd9L3He6myDnO33lFVfgQGtGmlMnyws= +github.com/kpango/glg v1.6.15 h1:nw0xSxpSyrDIWHeb3dvnE08PW+SCbK+aYFETT75IeLA= +github.com/kpango/glg v1.6.15/go.mod h1:cmsc7Yeu8AS3wHLmN7bhwENXOpxfq+QoqxCIk2FneRk= github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= -github.com/lestrrat-go/blackmagic v1.0.0 h1:XzdxDbuQTz0RZZEmdU7cnQxUtFUzgCSPq8RCz4BxIi4= -github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= +github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= +github.com/lestrrat-go/blackmagic v1.0.2 h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k= +github.com/lestrrat-go/blackmagic v1.0.2/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= -github.com/lestrrat-go/iter v1.0.1 h1:q8faalr2dY6o8bV45uwrxq12bRa1ezKrB6oM9FUgN4A= -github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= -github.com/lestrrat-go/jwx v1.2.25 h1:tAx93jN2SdPvFn08fHNAhqFJazn5mBBOB8Zli0g0otA= -github.com/lestrrat-go/jwx v1.2.25/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY= -github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= +github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= +github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= +github.com/lestrrat-go/jwx v1.2.26 h1:4iFo8FPRZGDYe1t19mQP0zTRqA7n8HnJ5lkIiDvJcB0= +github.com/lestrrat-go/jwx v1.2.26/go.mod h1:MaiCdGbn3/cckbOFSCluJlJMmp9dmZm5hDuIkx8ftpQ= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= +github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76 h1:0xuRacu/Zr+jX+KyLLPPktbwXqyOvnOPUQmMLzX1jxU= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -47,41 +49,43 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 h1:znp6mq/drrY+6khTAlJUDNFFcDGV2ENLYKpMq8SyCds= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a h1:a2MQQVoTo96JC9PMGtGBymLp7+/RzpFc2yX/9WfFg1c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/router/debug_routes_test.go b/router/debug_routes_test.go index 8c4db8e..b3483f4 100644 --- a/router/debug_routes_test.go +++ b/router/debug_routes_test.go @@ -7,6 +7,7 @@ import ( "net/http/pprof" "reflect" "testing" + "unsafe" "github.com/AthenZ/authorization-proxy/v4/config" "github.com/AthenZ/authorization-proxy/v4/service" @@ -46,7 +47,9 @@ func TestNewDebugRoutes(t *testing.T) { return errors.New("pattern not match") } // toHandler() should return a new function with different pointer - // if reflect.ValueOf(gotValue.HandlerFunc).Pointer() != reflect.ValueOf(wantValue.HandlerFunc).Pointer() { + // px := *(*unsafe.Pointer)(unsafe.Pointer(&gotValue.HandlerFunc)) + // py := *(*unsafe.Pointer)(unsafe.Pointer(&wantValue.HandlerFunc)) + // if px == py { // return errors.New(gotValue.Name + " handler not match") // } } @@ -156,7 +159,11 @@ func TestNewDebugRoutes(t *testing.T) { if gotValue.Pattern != wantValue.Pattern { return errors.New("pattern not match") } - if reflect.ValueOf(gotValue.HandlerFunc).Pointer() != reflect.ValueOf(wantValue.HandlerFunc).Pointer() { + + // compare function pointer of the handler + px := *(*unsafe.Pointer)(unsafe.Pointer(&gotValue.HandlerFunc)) + py := *(*unsafe.Pointer)(unsafe.Pointer(&wantValue.HandlerFunc)) + if px == py { return errors.New(gotValue.Name + " handler not match") } } @@ -195,7 +202,9 @@ func TestNewDebugRoutes(t *testing.T) { return errors.New("pattern not match") } // toHandler() should return a new function with different pointer - // if reflect.ValueOf(gotValue.HandlerFunc).Pointer() != reflect.ValueOf(wantValue.HandlerFunc).Pointer() { + // px := *(*unsafe.Pointer)(unsafe.Pointer(&gotValue.HandlerFunc)) + // py := *(*unsafe.Pointer)(unsafe.Pointer(&wantValue.HandlerFunc)) + // if px == py { // return errors.New(gotValue.Name + " handler not match") // } }