mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: ErrOrgNameTaken error at org insert instead of SQL error (#69325)
* Add ErrOrgNameTaken check to org insert * Add tests for ErrOrgNameTaken
This commit is contained in:
parent
a482795a96
commit
81551a4cb4
@ -74,26 +74,32 @@ func (ss *sqlStore) Get(ctx context.Context, orgID int64) (*org.Org, error) {
|
|||||||
return &orga, nil
|
return &orga, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ss *sqlStore) Insert(ctx context.Context, org *org.Org) (int64, error) {
|
func (ss *sqlStore) Insert(ctx context.Context, orga *org.Org) (int64, error) {
|
||||||
var orgID int64
|
var orgID int64
|
||||||
var err error
|
var err error
|
||||||
err = ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
err = ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
||||||
if _, err = sess.Insert(org); err != nil {
|
if isNameTaken, err := isOrgNameTaken(orga.Name, orga.ID, sess); err != nil {
|
||||||
|
return err
|
||||||
|
} else if isNameTaken {
|
||||||
|
return org.ErrOrgNameTaken
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err = sess.Insert(orga); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
orgID = org.ID
|
orgID = orga.ID
|
||||||
|
|
||||||
if org.ID != 0 {
|
if orga.ID != 0 {
|
||||||
// it sets the setval in the sequence
|
// it sets the setval in the sequence
|
||||||
if err := ss.dialect.PostInsertId("org", sess.Session); err != nil {
|
if err := ss.dialect.PostInsertId("org", sess.Session); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sess.PublishAfterCommit(&events.OrgCreated{
|
sess.PublishAfterCommit(&events.OrgCreated{
|
||||||
Timestamp: org.Created,
|
Timestamp: orga.Created,
|
||||||
Id: org.ID,
|
Id: orga.ID,
|
||||||
Name: org.Name,
|
Name: orga.Name,
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -48,6 +48,16 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("insert with org name taken", func(t *testing.T) {
|
||||||
|
_, err := orgStore.Insert(context.Background(), &org.Org{
|
||||||
|
Version: 1,
|
||||||
|
Name: "test1",
|
||||||
|
Created: time.Now(),
|
||||||
|
Updated: time.Now(),
|
||||||
|
})
|
||||||
|
require.Error(t, err, org.ErrOrgNameTaken)
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("org inserted with next available org ID", func(t *testing.T) {
|
t.Run("org inserted with next available org ID", func(t *testing.T) {
|
||||||
orgID, err := orgStore.Insert(context.Background(), &org.Org{
|
orgID, err := orgStore.Insert(context.Background(), &org.Org{
|
||||||
ID: 55,
|
ID: 55,
|
||||||
@ -61,6 +71,14 @@ func TestIntegrationOrgDataAccess(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("update with org name taken", func(t *testing.T) {
|
||||||
|
err := orgStore.Update(context.Background(), &org.UpdateOrgCommand{
|
||||||
|
OrgId: 55,
|
||||||
|
Name: "test1",
|
||||||
|
})
|
||||||
|
require.Error(t, err, org.ErrOrgNameTaken)
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("delete by user", func(t *testing.T) {
|
t.Run("delete by user", func(t *testing.T) {
|
||||||
err := orgStore.DeleteUserFromAll(context.Background(), 1)
|
err := orgStore.DeleteUserFromAll(context.Background(), 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
Loading…
Reference in New Issue
Block a user