2021-11-07 03:04:08 +03:00
|
|
|
package linkedin
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2022-09-11 15:32:23 -03:00
|
|
|
"io"
|
2021-11-07 03:04:08 +03:00
|
|
|
"net/http"
|
|
|
|
"net/http/httptest"
|
|
|
|
"testing"
|
|
|
|
|
2024-05-26 15:02:57 -03:00
|
|
|
"github.com/goreleaser/goreleaser/v2/internal/testctx"
|
2021-11-06 22:24:15 -03:00
|
|
|
"github.com/stretchr/testify/require"
|
2021-11-07 03:04:08 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestCreateLinkedInClient(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
2021-11-06 22:24:15 -03:00
|
|
|
cfg oauthClientConfig
|
2021-11-07 03:04:08 +03:00
|
|
|
wantErr error
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
"non-empty context and access token",
|
2021-11-06 22:24:15 -03:00
|
|
|
oauthClientConfig{
|
2023-03-02 00:01:11 -03:00
|
|
|
Context: testctx.New(),
|
2021-11-07 03:04:08 +03:00
|
|
|
AccessToken: "foo",
|
|
|
|
},
|
|
|
|
nil,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"empty context",
|
2021-11-06 22:24:15 -03:00
|
|
|
oauthClientConfig{
|
2021-11-07 03:04:08 +03:00
|
|
|
Context: nil,
|
|
|
|
AccessToken: "foo",
|
|
|
|
},
|
|
|
|
fmt.Errorf("context is nil"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"empty access token",
|
2021-11-06 22:24:15 -03:00
|
|
|
oauthClientConfig{
|
2023-03-02 00:01:11 -03:00
|
|
|
Context: testctx.New(),
|
2021-11-07 03:04:08 +03:00
|
|
|
AccessToken: "",
|
|
|
|
},
|
|
|
|
fmt.Errorf("empty access token"),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
2021-11-06 22:24:15 -03:00
|
|
|
_, err := createLinkedInClient(tt.cfg)
|
|
|
|
if tt.wantErr != nil {
|
|
|
|
require.EqualError(t, err, tt.wantErr.Error())
|
|
|
|
} else {
|
|
|
|
require.NoError(t, err)
|
2021-11-07 03:04:08 +03:00
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestClient_Share(t *testing.T) {
|
chore: fix all existing lint issues (#4637)
The PR fixes lint issues, pins `golangci-lint` to `v1.56.2`, disables
`only-new-issues`, and enables `fail-on-issues` in the lint workflow.
After this, all new lint issues will fail CI.
The full log of fixed lint issues:
```sh
❯ golangci-lint run
cmd/docs.go:24:14: unused-parameter: parameter 'cmd' seems to be unused, consider removing or renaming it as _ (revive)
RunE: func(cmd *cobra.Command, args []string) error {
^
cmd/man.go:26:14: unused-parameter: parameter 'cmd' seems to be unused, consider removing or renaming it as _ (revive)
RunE: func(cmd *cobra.Command, args []string) error {
^
cmd/healthcheck.go:36:14: unused-parameter: parameter 'cmd' seems to be unused, consider removing or renaming it as _ (revive)
RunE: func(cmd *cobra.Command, args []string) error {
^
cmd/build.go:72:33: unused-parameter: parameter 'cmd' seems to be unused, consider removing or renaming it as _ (revive)
RunE: timedRunE("build", func(cmd *cobra.Command, args []string) error {
^
cmd/schema.go:29:14: unused-parameter: parameter 'cmd' seems to be unused, consider removing or renaming it as _ (revive)
RunE: func(cmd *cobra.Command, args []string) error {
^
internal/pipe/nix/nix_test.go:547:5: error-is-as: second argument to require.ErrorAs should not be *error (testifylint)
require.ErrorAs(t, err, &tt.expectDefaultErrorIs)
^
internal/pipe/nix/nix_test.go:556:5: error-is-as: second argument to require.ErrorAs should not be *error (testifylint)
require.ErrorAs(t, err, &tt.expectRunErrorIs)
^
internal/pipe/nix/nix_test.go:567:5: error-is-as: second argument to require.ErrorAs should not be *error (testifylint)
require.ErrorAs(t, err, &tt.expectPublishErrorIs)
^
internal/pipe/winget/winget_test.go:709:5: error-is-as: second argument to require.ErrorAs should not be *error (testifylint)
require.ErrorAs(t, err, &tt.expectPublishErrorIs)
^
internal/pipe/winget/winget_test.go:728:5: error-is-as: second argument to require.ErrorAs should not be *error (testifylint)
require.ErrorAs(t, err, &tt.expectPublishErrorIs)
^
internal/pipe/docker/docker_test.go:56:29: unused-parameter: parameter 'use' seems to be unused, consider removing or renaming it as _ (revive)
return func(t *testing.T, use string) {
^
internal/gio/safe_test.go:23:4: go-require: require must only be used in the goroutine running the test function (testifylint)
require.Equal(t, 1, s)
^
internal/gio/safe_test.go:24:4: go-require: require must only be used in the goroutine running the test function (testifylint)
require.NoError(t, err)
^
internal/pipe/gomod/gomod_proxy_test.go:126:3: useless-assert: asserting of the same variable (testifylint)
require.Equal(t, ctx.ModulePath, ctx.ModulePath)
^
internal/pipe/gomod/gomod_proxy_test.go:152:3: useless-assert: asserting of the same variable (testifylint)
require.Equal(t, ctx.ModulePath, ctx.ModulePath)
^
internal/pipe/gomod/gomod_proxy_test.go:178:3: useless-assert: asserting of the same variable (testifylint)
require.Equal(t, ctx.ModulePath, ctx.ModulePath)
^
internal/pipe/gomod/gomod_proxy_test.go:239:3: useless-assert: asserting of the same variable (testifylint)
require.Equal(t, ctx.ModulePath, ctx.ModulePath)
^
internal/artifact/artifact_test.go:638:46: unused-parameter: parameter 'a' seems to be unused, consider removing or renaming it as _ (revive)
require.EqualError(t, artifacts.Visit(func(a *Artifact) error {
^
internal/pipe/milestone/milestone.go:79: File is not `gofumpt`-ed (gofumpt)
internal/http/http_test.go:217:19: unused-parameter: parameter 'k' seems to be unused, consider removing or renaming it as _ (revive)
assetOpen = func(k string, a *artifact.Artifact) (*asset, error) {
^
internal/middleware/logging/logging_test.go:12:37: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.NoError(t, Log("foo", func(ctx *context.Context) error {
^
internal/middleware/logging/logging_test.go:16:40: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.NoError(t, PadLog("foo", func(ctx *context.Context) error {
^
internal/pipe/chocolatey/chocolatey_test.go:277:15: unused-parameter: parameter 'cmd' seems to be unused, consider removing or renaming it as _ (revive)
exec: func(cmd string, args ...string) ([]byte, error) {
^
internal/client/gitlab.go:325: File is not `gofumpt`-ed (gofumpt)
internal/pipe/linkedin/client_test.go:58:77: unused-parameter: parameter 'req' seems to be unused, consider removing or renaming it as _ (revive)
server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
^
internal/middleware/errhandler/error_test.go:15:34: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.NoError(t, Handle(func(ctx *context.Context) error {
^
internal/middleware/errhandler/error_test.go:21:34: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.NoError(t, Handle(func(ctx *context.Context) error {
^
internal/middleware/errhandler/error_test.go:27:32: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.Error(t, Handle(func(ctx *context.Context) error {
^
internal/middleware/errhandler/error_test.go:36:37: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.NoError(t, memo.Wrap(func(ctx *context.Context) error {
^
internal/middleware/errhandler/error_test.go:42:37: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.NoError(t, memo.Wrap(func(ctx *context.Context) error {
^
internal/middleware/errhandler/error_test.go:48:37: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
require.NoError(t, memo.Wrap(func(ctx *context.Context) error {
^
internal/pipe/ko/ko.go:175:29: unused-parameter: parameter 'ctx' seems to be unused, consider removing or renaming it as _ (revive)
build.WithBaseImages(func(ctx stdctx.Context, s string) (name.Reference, build.Result, error) {
^
```
2024-02-19 13:49:39 +02:00
|
|
|
server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, _ *http.Request) {
|
2022-09-11 15:32:23 -03:00
|
|
|
_, _ = io.WriteString(rw, `
|
2021-11-07 03:04:08 +03:00
|
|
|
{
|
2023-11-18 09:51:42 -03:00
|
|
|
"sub": "foo",
|
2021-11-07 03:04:08 +03:00
|
|
|
"activity": "123456789"
|
|
|
|
}
|
2022-09-11 15:32:23 -03:00
|
|
|
`)
|
2021-11-07 03:04:08 +03:00
|
|
|
}))
|
|
|
|
defer server.Close()
|
|
|
|
|
2021-11-06 22:24:15 -03:00
|
|
|
c, err := createLinkedInClient(oauthClientConfig{
|
2023-03-02 00:01:11 -03:00
|
|
|
Context: testctx.New(),
|
2021-11-07 03:04:08 +03:00
|
|
|
AccessToken: "foo",
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("could not create client: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
c.baseURL = server.URL
|
|
|
|
|
|
|
|
link, err := c.Share("test")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("could not share: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
wantLink := "https://www.linkedin.com/feed/update/123456789"
|
2021-11-06 22:24:15 -03:00
|
|
|
require.Equal(t, wantLink, link)
|
2021-11-07 03:04:08 +03:00
|
|
|
}
|
2023-11-18 09:51:42 -03:00
|
|
|
|
|
|
|
func TestClientLegacyProfile_Share(t *testing.T) {
|
|
|
|
server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
|
|
|
|
if req.URL.Path == "/v2/userinfo" {
|
|
|
|
rw.WriteHeader(http.StatusForbidden)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
// this is the response from /v2/me (legacy as a fallback)
|
|
|
|
_, _ = io.WriteString(rw, `
|
|
|
|
{
|
|
|
|
"id": "foo",
|
|
|
|
"activity": "123456789"
|
|
|
|
}
|
|
|
|
`)
|
|
|
|
}))
|
|
|
|
defer server.Close()
|
|
|
|
|
|
|
|
c, err := createLinkedInClient(oauthClientConfig{
|
|
|
|
Context: testctx.New(),
|
|
|
|
AccessToken: "foo",
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("could not create client: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
c.baseURL = server.URL
|
|
|
|
|
|
|
|
link, err := c.Share("test")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("could not share: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
wantLink := "https://www.linkedin.com/feed/update/123456789"
|
|
|
|
require.Equal(t, wantLink, link)
|
|
|
|
}
|