fake.go 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. /*
  2. Licensed under the Apache License, Version 2.0 (the "License");
  3. you may not use this file except in compliance with the License.
  4. You may obtain a copy of the License at
  5. http://www.apache.org/licenses/LICENSE-2.0
  6. Unless required by applicable law or agreed to in writing, software
  7. distributed under the License is distributed on an "AS IS" BASIS,
  8. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  9. See the License for the specific language governing permissions and
  10. limitations under the License.
  11. */
  12. package fake
  13. import (
  14. "context"
  15. "errors"
  16. "fmt"
  17. secretmanager "cloud.google.com/go/secretmanager/apiv1"
  18. "cloud.google.com/go/secretmanager/apiv1/secretmanagerpb"
  19. "github.com/google/go-cmp/cmp"
  20. "github.com/google/go-cmp/cmp/cmpopts"
  21. "github.com/googleapis/gax-go/v2"
  22. )
  23. type MockSMClient struct {
  24. accessSecretFn func(ctx context.Context, req *secretmanagerpb.AccessSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error)
  25. ListSecretsFn func(ctx context.Context, req *secretmanagerpb.ListSecretsRequest, opts ...gax.CallOption) *secretmanager.SecretIterator
  26. AddSecretFn func(ctx context.Context, req *secretmanagerpb.AddSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.SecretVersion, error)
  27. createSecretFn func(ctx context.Context, req *secretmanagerpb.CreateSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error)
  28. CreateSecretCalledWithN map[int]*secretmanagerpb.CreateSecretRequest
  29. createSecretCallN int
  30. updateSecretFn func(ctx context.Context, req *secretmanagerpb.UpdateSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error)
  31. closeFn func() error
  32. GetSecretFn func(ctx context.Context, req *secretmanagerpb.GetSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error)
  33. DeleteSecretFn func(ctx context.Context, req *secretmanagerpb.DeleteSecretRequest, opts ...gax.CallOption) error
  34. }
  35. type AccessSecretVersionMockReturn struct {
  36. Res *secretmanagerpb.AccessSecretVersionResponse
  37. Err error
  38. }
  39. type AddSecretVersionMockReturn struct {
  40. SecretVersion *secretmanagerpb.SecretVersion
  41. Err error
  42. }
  43. type SecretMockReturn struct {
  44. Secret *secretmanagerpb.Secret
  45. Err error
  46. }
  47. func (mc *MockSMClient) DeleteSecret(ctx context.Context, req *secretmanagerpb.DeleteSecretRequest, _ ...gax.CallOption) error {
  48. return mc.DeleteSecretFn(ctx, req)
  49. }
  50. func (mc *MockSMClient) NewDeleteSecretFn(err error) {
  51. mc.DeleteSecretFn = func(_ context.Context, _ *secretmanagerpb.DeleteSecretRequest, _ ...gax.CallOption) error {
  52. return err
  53. }
  54. }
  55. func (mc *MockSMClient) GetSecret(ctx context.Context, req *secretmanagerpb.GetSecretRequest, _ ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  56. return mc.GetSecretFn(ctx, req)
  57. }
  58. func (mc *MockSMClient) NewGetSecretFn(mock SecretMockReturn) {
  59. mc.GetSecretFn = func(_ context.Context, _ *secretmanagerpb.GetSecretRequest, _ ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  60. return mock.Secret, mock.Err
  61. }
  62. }
  63. func (mc *MockSMClient) AccessSecretVersion(ctx context.Context, req *secretmanagerpb.AccessSecretVersionRequest, _ ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
  64. return mc.accessSecretFn(ctx, req)
  65. }
  66. func (mc *MockSMClient) NewAccessSecretVersionFn(mock AccessSecretVersionMockReturn) {
  67. mc.accessSecretFn = func(_ context.Context, _ *secretmanagerpb.AccessSecretVersionRequest, _ ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
  68. return mock.Res, mock.Err
  69. }
  70. }
  71. func (mc *MockSMClient) ListSecrets(ctx context.Context, req *secretmanagerpb.ListSecretsRequest, _ ...gax.CallOption) *secretmanager.SecretIterator {
  72. return mc.ListSecretsFn(ctx, req)
  73. }
  74. func (mc *MockSMClient) Close() error {
  75. return mc.closeFn()
  76. }
  77. func (mc *MockSMClient) AddSecretVersion(ctx context.Context, req *secretmanagerpb.AddSecretVersionRequest, _ ...gax.CallOption) (*secretmanagerpb.SecretVersion, error) {
  78. return mc.AddSecretFn(ctx, req)
  79. }
  80. func (mc *MockSMClient) NewAddSecretVersionFn(mock AddSecretVersionMockReturn) {
  81. mc.AddSecretFn = func(_ context.Context, _ *secretmanagerpb.AddSecretVersionRequest, _ ...gax.CallOption) (*secretmanagerpb.SecretVersion, error) {
  82. return mock.SecretVersion, mock.Err
  83. }
  84. }
  85. func (mc *MockSMClient) CreateSecret(ctx context.Context, req *secretmanagerpb.CreateSecretRequest, _ ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  86. if mc.CreateSecretCalledWithN == nil {
  87. mc.CreateSecretCalledWithN = make(map[int]*secretmanagerpb.CreateSecretRequest)
  88. }
  89. mc.CreateSecretCalledWithN[mc.createSecretCallN] = req
  90. mc.createSecretCallN++
  91. return mc.createSecretFn(ctx, req)
  92. }
  93. func (mc *MockSMClient) NewCreateSecretFn(mock SecretMockReturn) {
  94. mc.createSecretFn = func(_ context.Context, _ *secretmanagerpb.CreateSecretRequest, _ ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  95. return mock.Secret, mock.Err
  96. }
  97. }
  98. func (mc *MockSMClient) NilClose() {
  99. mc.closeFn = func() error {
  100. return nil
  101. }
  102. }
  103. func (mc *MockSMClient) CreateSecretError() {
  104. mc.createSecretFn = func(ctx context.Context, req *secretmanagerpb.CreateSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  105. return nil, errors.New("something went wrong")
  106. }
  107. }
  108. func (mc *MockSMClient) CreateSecretGetError() {
  109. mc.createSecretFn = func(ctx context.Context, req *secretmanagerpb.CreateSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  110. mc.accessSecretFn = func(ctx context.Context, req *secretmanagerpb.AccessSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
  111. return nil, errors.New("no, this broke")
  112. }
  113. return nil, nil
  114. }
  115. }
  116. func (mc *MockSMClient) DefaultCreateSecret(wantedSecretID, wantedParent string) {
  117. mc.createSecretFn = func(ctx context.Context, req *secretmanagerpb.CreateSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  118. if req.SecretId != wantedSecretID {
  119. return nil, fmt.Errorf("create secret req wrong key: got %v want %v", req.SecretId, wantedSecretID)
  120. }
  121. if req.Parent != wantedParent {
  122. return nil, fmt.Errorf("create secret req wrong parent: got %v want %v", req.Parent, wantedParent)
  123. }
  124. return &secretmanagerpb.Secret{
  125. Name: fmt.Sprintf("%s/%s", req.Parent, req.SecretId),
  126. }, nil
  127. }
  128. }
  129. func (mc *MockSMClient) DefaultAddSecretVersion(wantedData, wantedParent, versionName string) {
  130. mc.AddSecretFn = func(ctx context.Context, req *secretmanagerpb.AddSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.SecretVersion, error) {
  131. if string(req.Payload.Data) != wantedData {
  132. return nil, fmt.Errorf("add version req wrong data got: %v want %v ", req.Payload.Data, wantedData)
  133. }
  134. if req.Parent != wantedParent {
  135. return nil, fmt.Errorf("add version req has wrong parent: got %v want %v", req.Parent, wantedParent)
  136. }
  137. return &secretmanagerpb.SecretVersion{
  138. Name: versionName,
  139. }, nil
  140. }
  141. }
  142. func (mc *MockSMClient) DefaultAccessSecretVersion(wantedVersionName string) {
  143. mc.accessSecretFn = func(ctx context.Context, req *secretmanagerpb.AccessSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
  144. if req.Name != wantedVersionName {
  145. return nil, fmt.Errorf("access req has wrong version name: got %v want %v", req.Name, wantedVersionName)
  146. }
  147. return &secretmanagerpb.AccessSecretVersionResponse{
  148. Name: req.Name,
  149. Payload: &secretmanagerpb.SecretPayload{Data: []byte("bar")},
  150. }, nil
  151. }
  152. }
  153. func (mc *MockSMClient) AccessSecretVersionWithError(err error) {
  154. mc.accessSecretFn = func(ctx context.Context, req *secretmanagerpb.AccessSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
  155. return nil, err
  156. }
  157. }
  158. func (mc *MockSMClient) UpdateSecret(ctx context.Context, req *secretmanagerpb.UpdateSecretRequest, _ ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  159. return mc.updateSecretFn(ctx, req)
  160. }
  161. func (mc *MockSMClient) NewUpdateSecretFn(mock SecretMockReturn) {
  162. mc.updateSecretFn = func(_ context.Context, _ *secretmanagerpb.UpdateSecretRequest, _ ...gax.CallOption) (*secretmanagerpb.Secret, error) {
  163. return mock.Secret, mock.Err
  164. }
  165. }
  166. func (mc *MockSMClient) WithValue(_ context.Context, req *secretmanagerpb.AccessSecretVersionRequest, val *secretmanagerpb.AccessSecretVersionResponse, err error) {
  167. if mc != nil {
  168. mc.accessSecretFn = func(paramCtx context.Context, paramReq *secretmanagerpb.AccessSecretVersionRequest, paramOpts ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
  169. // type secretmanagerpb.AccessSecretVersionRequest contains unexported fields
  170. // use cmpopts.IgnoreUnexported to ignore all the unexported fields in the cmp.
  171. if !cmp.Equal(paramReq, req, cmpopts.IgnoreUnexported(secretmanagerpb.AccessSecretVersionRequest{})) {
  172. return nil, fmt.Errorf("unexpected test argument")
  173. }
  174. return val, err
  175. }
  176. }
  177. }