apache / apache/devlake

[Bug][GitHub Copilot] GitHub Copilot connector validation fails when using Enterprise Slug without Organization

Offen Anfängerfreundlich
#8,991 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Stale type/bug
Vorherrschende Sprache
Go
Sterne
3.1k
Forks
808
Ø Merge
1 T. 18 Std.
Gemergte PRs (30 T.)
50

Beschreibung

### Search before asking

- [x] I had searched in the [issues](https://github.com/apache/incubator-devlake/issues?q=is%3Aissue) and found no similar issues.

### What happened

### Actual Behavior

When trying to create a GitHub Copilot connector, the connection test always fails even though the Enterprise Slug is provided.

The connection test fails with a 400 error (either enterprise or organization is required) but organization slug is specified into connection wizard

### Stack Trace
```
attached stack trace -- stack trace: | github.com/apache/incubator-devlake/plugins/gh-copilot/api.validateConnection | /app/plugins/gh-copilot/api/connection.go:97 | github.com/apache/incubator-devlake/plugins/gh-copilot/api.TestConnection | /app/plugins/gh-copilot/api/test_connection.go:39 | github.com/apache/incubator-devlake/server/api.registerPluginEndpoints.handlePluginCall.func1 | /app/server/api/router.go:149 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/apache/incubator-devlake/server/api.CreateApiServer.CSRFProtect.(*Service).CSRFProtect.func3 | /app/server/api/auth/middleware.go:140 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/apache/incubator-devlake/server/api.CreateApiServer.RequireAuth.(*Service).RequireAuth.func2 | /app/server/api/auth/middleware.go:104 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/apache/incubator-devlake/server/api.OAuth2ProxyAuthentication.func1 | /app/server/api/middlewares.go:114 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/apache/incubator-devlake/server/api.CreateApiServer.OIDCAuthentication.(*Service).OIDCAuthentication.func1 | /app/server/api/auth/middleware.go:61 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/apache/incubator-devlake/server/api.RequirePushAuthentication.func1 | /app/server/api/middlewares.go:157 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/apache/incubator-devlake/server/api.RestAuthentication.func1 | /app/server/api/middlewares.go:135 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1 | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/gin-gonic/gin.LoggerWithConfig.func1 | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240 | github.com/gin-gonic/gin.(*Context).Next | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620 | github.com/gin-gonic/gin.(*Engine).ServeHTTP | /go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576 | net/http.serverHandler.ServeHTTP | /usr/local/go/src/net/http/server.go:3311 | net/http.(*conn).serve | /usr/local/go/src/net/http/server.go:2073 | runtime.goexit | /usr/local/go/src/runtime/asm_amd64.s:1771 Wraps: (2) either enterprise or organization is required (400) Error types: (1) *withstack.withStack (2) *errutil.leafError
```

### What do you expect to happen

The connector should successfully validate the connection when a valid Enterprise Slug is provided, even if no Organization is configured.

### How to reproduce

- Open the GitHub Copilot connector configuration page.
- Enter a valid Enterprise Slug taht contains hyphens
- Leave the Organization field empty.
- Generate and provide a Personal Access Token (classic).
- Test the connection.

### Anything else

### I also tested the following scenarios:

- Using a Personal Access Token (classic) with all available permissions.
- Filling the Organization field with the same value as the Enterprise Slug.
- Creating new tokens and retrying the connection.

All attempts result in the same error.

Error Message
Plain Texteither enterprise or organization is required (400)

### Question / Clarification

Could this issue be related to the format of the Enterprise Slug?

In our case, the Enterprise Slug contains hyphens, for example:

```
my-company
```

### Version

v1.0.3-beta14@50f664e

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne bei plugins/gh-copilot/api/connection.go:97 und verfolge den Validierungsaufruf aus plugins/gh-copilot/api/test_connection.go:39. Reproduziere den Connector-Test mit einem Enterprise Slug mit Bindestrich und ohne Organization und verifiziere anschließend, dass eine gültige Konfiguration, die nur Enterprise enthält, ohne den 400-Fehler erfolgreich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
github, go
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Aktiv
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
72/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.