transactions_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package sqlstore
  2. import (
  3. "context"
  4. "errors"
  5. "testing"
  6. "github.com/grafana/grafana/pkg/models"
  7. . "github.com/smartystreets/goconvey/convey"
  8. )
  9. var ProvokedError = errors.New("testing error.")
  10. func TestTransaction(t *testing.T) {
  11. ss := InitTestDB(t)
  12. Convey("InTransaction asdf asdf", t, func() {
  13. cmd := &models.AddApiKeyCommand{Key: "secret-key", Name: "key", OrgId: 1}
  14. err := AddApiKey(cmd)
  15. So(err, ShouldBeNil)
  16. deleteApiKeyCmd := &models.DeleteApiKeyCommand{Id: cmd.Result.Id, OrgId: 1}
  17. Convey("can update key", func() {
  18. err := ss.InTransaction(context.Background(), func(ctx context.Context) error {
  19. return DeleteApiKeyCtx(ctx, deleteApiKeyCmd)
  20. })
  21. So(err, ShouldBeNil)
  22. query := &models.GetApiKeyByIdQuery{ApiKeyId: cmd.Result.Id}
  23. err = GetApiKeyById(query)
  24. So(err, ShouldEqual, models.ErrInvalidApiKey)
  25. })
  26. Convey("won't update if one handler fails", func() {
  27. err := ss.InTransaction(context.Background(), func(ctx context.Context) error {
  28. err := DeleteApiKeyCtx(ctx, deleteApiKeyCmd)
  29. if err != nil {
  30. return err
  31. }
  32. return ProvokedError
  33. })
  34. So(err, ShouldEqual, ProvokedError)
  35. query := &models.GetApiKeyByIdQuery{ApiKeyId: cmd.Result.Id}
  36. err = GetApiKeyById(query)
  37. So(err, ShouldBeNil)
  38. So(query.Result.Id, ShouldEqual, cmd.Result.Id)
  39. })
  40. })
  41. }