misc improvements to graphqlbackend (#63943)

- skip graphqlbackend tests that use the DB when using `go test -short`
- fix race condition in (settingsResolver).Author
- fix OrgMembers.GetByOrgIDAndUserID mocks: The actual function returns
a non-nil error (`database.ErrOrgMemberNotFound` type) when the user is
not an org member. Our mocks should do the same for correctness.

## Test plan

CI
This commit is contained in:
Quinn Slack 2024-07-19 02:44:14 -07:00 committed by GitHub
parent 9491958e78
commit 0e958d19d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 39 additions and 19 deletions

View File

@ -35,7 +35,7 @@ func (r *defaultSettingsResolver) LatestSettings(_ context.Context) (*settingsRe
Subject: api.SettingsSubject{Default: true},
Contents: `{"experimentalFeatures": {}}`,
}
return &settingsResolver{r.db, &settingsSubjectResolver{defaultSettings: r}, settings, nil}, nil
return &settingsResolver{db: r.db, subject: &settingsSubjectResolver{defaultSettings: r}, settings: settings}, nil
}
func (r *defaultSettingsResolver) SettingsURL() *string { return nil }

View File

@ -253,7 +253,7 @@ func (o *OrgResolver) LatestSettings(ctx context.Context) (*settingsResolver, er
return nil, nil
}
return &settingsResolver{o.db, &settingsSubjectResolver{org: o}, settings, nil}, nil
return &settingsResolver{db: o.db, subject: &settingsSubjectResolver{org: o}, settings: settings}, nil
}
func (o *OrgResolver) SettingsCascade() *settingsCascade {

View File

@ -31,7 +31,7 @@ func TestOrganization(t *testing.T) {
users.GetByCurrentAuthUserFunc.SetDefaultReturn(&types.User{ID: 1}, nil)
orgMembers := dbmocks.NewMockOrgMemberStore()
orgMembers.GetByOrgIDAndUserIDFunc.SetDefaultReturn(nil, nil)
orgMembers.GetByOrgIDAndUserIDFunc.SetDefaultReturn(nil, &database.ErrOrgMemberNotFound{})
orgs := dbmocks.NewMockOrgStore()
mockedOrg := types.Org{ID: 1, Name: "acme"}

View File

@ -21,6 +21,10 @@ import (
)
func TestPreviewRepositoryComparisonResolver(t *testing.T) {
if testing.Short() {
t.Skip()
}
logger := logtest.Scoped(t)
ctx := context.Background()
db := database.NewDB(logger, nil)

View File

@ -61,6 +61,10 @@ func TestRepositoryComparisonNoMergeBase(t *testing.T) {
}
func TestRepositoryComparisonRootCommit(t *testing.T) {
if testing.Short() {
t.Skip()
}
logger := logtest.Scoped(t)
ctx := context.Background()
db := database.NewDB(logger, nil)
@ -94,6 +98,10 @@ func TestRepositoryComparisonRootCommit(t *testing.T) {
}
func TestRepositoryComparison(t *testing.T) {
if testing.Short() {
t.Skip()
}
logger := logtest.Scoped(t)
ctx := context.Background()
db := database.NewDB(logger, nil)

View File

@ -20,6 +20,10 @@ import (
)
func TestRetrievingAndDeduplicatingIndexedRefs(t *testing.T) {
if testing.Short() {
t.Skip()
}
logger := logtest.Scoped(t)
db := database.NewDB(logger, nil)
defaultBranchRef := "refs/heads/main"

View File

@ -4,6 +4,7 @@ import (
"context"
"os"
"strconv"
"sync"
"github.com/sourcegraph/sourcegraph/internal/api"
"github.com/sourcegraph/sourcegraph/internal/database"
@ -17,7 +18,10 @@ type settingsResolver struct {
db database.DB
subject *settingsSubjectResolver
settings *api.Settings
user *types.User
authorUserOnce sync.Once
authorUser *types.User
authorUserErr error
}
func (o *settingsResolver) ID() int32 {
@ -45,14 +49,14 @@ func (o *settingsResolver) Author(ctx context.Context) (*UserResolver, error) {
if o.settings.AuthorUserID == nil {
return nil, nil
}
if o.user == nil {
var err error
o.user, err = o.db.Users().GetByID(ctx, *o.settings.AuthorUserID)
if err != nil {
return nil, err
}
o.authorUserOnce.Do(func() {
o.authorUser, o.authorUserErr = o.db.Users().GetByID(ctx, *o.settings.AuthorUserID)
})
if o.authorUserErr != nil {
return nil, o.authorUserErr
}
return NewUserResolver(ctx, o.db, o.user), nil
return NewUserResolver(ctx, o.db, o.authorUser), nil
}
var globalSettingsAllowEdits, _ = strconv.ParseBool(env.Get("GLOBAL_SETTINGS_ALLOW_EDITS", "false", "When GLOBAL_SETTINGS_FILE is in use, allow edits in the application to be made which will be overwritten on next process restart"))

View File

@ -156,7 +156,7 @@ func (r *siteResolver) LatestSettings(ctx context.Context) (*settingsResolver, e
if settings == nil {
return nil, nil
}
return &settingsResolver{r.db, &settingsSubjectResolver{site: r}, settings, nil}, nil
return &settingsResolver{db: r.db, subject: &settingsSubjectResolver{site: r}, settings: settings}, nil
}
func (r *siteResolver) SettingsCascade() *settingsCascade {

View File

@ -307,7 +307,7 @@ func TestDeleteOrganization_OnPremise(t *testing.T) {
users.GetByCurrentAuthUserFunc.SetDefaultReturn(&types.User{ID: 1}, nil)
orgMembers := dbmocks.NewMockOrgMemberStore()
orgMembers.GetByOrgIDAndUserIDFunc.SetDefaultReturn(nil, nil)
orgMembers.GetByOrgIDAndUserIDFunc.SetDefaultReturn(nil, &database.ErrOrgMemberNotFound{})
orgs := dbmocks.NewMockOrgStore()

View File

@ -393,7 +393,7 @@ func (r *UserResolver) LatestSettings(ctx context.Context) (*settingsResolver, e
if settings == nil {
return nil, nil
}
return &settingsResolver{r.db, &settingsSubjectResolver{user: r}, settings, nil}, nil
return &settingsResolver{db: r.db, subject: &settingsSubjectResolver{user: r}, settings: settings}, nil
}
func (r *UserResolver) SettingsCascade() *settingsCascade {

View File

@ -103,7 +103,7 @@ func TestPrompts(t *testing.T) {
orgID := int32(2)
om := dbmocks.NewMockOrgMemberStore()
om.GetByOrgIDAndUserIDFunc.SetDefaultHook(func(ctx context.Context, oid, uid int32) (*types.OrgMembership, error) {
return nil, nil
return nil, &database.ErrOrgMemberNotFound{}
})
ss := dbmocks.NewMockPromptStore()
@ -551,7 +551,7 @@ func TestPromptPermissions(t *testing.T) {
if orgID == userID {
return &types.OrgMembership{}, nil
}
return nil, nil
return nil, &database.ErrOrgMemberNotFound{}
})
db := dbmocks.NewMockDB()

View File

@ -104,7 +104,7 @@ func TestSavedSearches(t *testing.T) {
orgID := int32(2)
om := dbmocks.NewMockOrgMemberStore()
om.GetByOrgIDAndUserIDFunc.SetDefaultHook(func(ctx context.Context, oid, uid int32) (*types.OrgMembership, error) {
return nil, nil
return nil, &database.ErrOrgMemberNotFound{}
})
ss := dbmocks.NewMockSavedSearchStore()
@ -582,7 +582,7 @@ func TestSavedSearchPermissions(t *testing.T) {
if orgID == userID {
return &types.OrgMembership{}, nil
}
return nil, nil
return nil, &database.ErrOrgMemberNotFound{}
})
db := dbmocks.NewMockDB()

View File

@ -45,7 +45,7 @@ func TestEnsureActorHasNamespaceWriteAccess(t *testing.T) {
// Is a member.
return &types.OrgMembership{}, nil
}
return nil, nil
return nil, &database.ErrOrgMemberNotFound{}
})
db.OrgMembersFunc.SetDefaultReturn(om)