Skip ms auth checks for gock client (#5163)

Disable sending requests to microsoft servers to get API tokens when
using the gock client. This is accomplished by passing in a mock that
always returns no error for auth requests.

**This PR does not go through and make existing tests using gock unit
tests instead of integration tests. That will need to be done
separately**

---

#### Does this PR need a docs update or release note?

- [ ]  Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [x]  No

#### Type of change

- [ ] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [x] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup

#### Issue(s)

* #5124

#### Test Plan

- [x] 💪 Manual
- [ ]  Unit test
- [ ] 💚 E2E
This commit is contained in:
ashmrtn 2024-01-29 18:41:53 -08:00 committed by GitHub
parent 45b021d58e
commit d2f1bbb5c7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,6 +1,8 @@
package graph
import (
"context"
"github.com/alcionai/clues"
"github.com/h2non/gock"
abstractions "github.com/microsoft/kiota-abstractions-go"
@ -10,6 +12,23 @@ import (
"github.com/alcionai/corso/src/pkg/count"
)
// authMock implements the
// github.com/microsoft.kiota-abstractions-go/authentication:AuthenticationProvider
// interface.
type authMock struct{}
// AuthenticateRequest is the function called prior to sending a graph API
// request. It ensures the client has the proper authentication to send the
// request. Returning nil allows us to skip the authentication that would
// normally happen.
func (a authMock) AuthenticateRequest(
context.Context,
*abstractions.RequestInformation,
map[string]any,
) error {
return nil
}
func NewGockService(
creds account.M365Config,
counter *count.Bus,
@ -35,11 +54,6 @@ func CreateGockAdapter(
counter *count.Bus,
opts ...Option,
) (abstractions.RequestAdapter, error) {
auth, err := GetAuth(tenant, client, secret)
if err != nil {
return nil, err
}
httpClient, cc := KiotaHTTPClient(counter, opts...)
// This makes sure that we are able to intercept any requests via
@ -47,7 +61,9 @@ func CreateGockAdapter(
gock.InterceptClient(httpClient)
ng, err := msgraphsdkgo.NewGraphRequestAdapterWithParseNodeFactoryAndSerializationWriterFactoryAndHttpClient(
auth,
// Use our own mock auth instance. This allows us to completely avoid having
// to make requests to microsoft servers during testing.
authMock{},
nil, nil,
httpClient)