// Code generated by mockery; DO NOT EDIT.
// github.com/vektra/mockery
// template: testify

package azure

import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas"
	mock "github.com/stretchr/testify/mock"
)

// newMockSasSigner creates a new instance of mockSasSigner. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func newMockSasSigner(t interface {
	mock.TestingT
	Cleanup(func())
}) *mockSasSigner {
	mock := &mockSasSigner{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}

// mockSasSigner is an autogenerated mock type for the sasSigner type
type mockSasSigner struct {
	mock.Mock
}

type mockSasSigner_Expecter struct {
	mock *mock.Mock
}

func (_m *mockSasSigner) EXPECT() *mockSasSigner_Expecter {
	return &mockSasSigner_Expecter{mock: &_m.Mock}
}

// Prepare provides a mock function for the type mockSasSigner
func (_mock *mockSasSigner) Prepare(ctx context.Context, o *signedURLOptions) error {
	ret := _mock.Called(ctx, o)

	if len(ret) == 0 {
		panic("no return value specified for Prepare")
	}

	var r0 error
	if returnFunc, ok := ret.Get(0).(func(context.Context, *signedURLOptions) error); ok {
		r0 = returnFunc(ctx, o)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}

// mockSasSigner_Prepare_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Prepare'
type mockSasSigner_Prepare_Call struct {
	*mock.Call
}

// Prepare is a helper method to define mock.On call
//   - ctx context.Context
//   - o *signedURLOptions
func (_e *mockSasSigner_Expecter) Prepare(ctx interface{}, o interface{}) *mockSasSigner_Prepare_Call {
	return &mockSasSigner_Prepare_Call{Call: _e.mock.On("Prepare", ctx, o)}
}

func (_c *mockSasSigner_Prepare_Call) Run(run func(ctx context.Context, o *signedURLOptions)) *mockSasSigner_Prepare_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 context.Context
		if args[0] != nil {
			arg0 = args[0].(context.Context)
		}
		var arg1 *signedURLOptions
		if args[1] != nil {
			arg1 = args[1].(*signedURLOptions)
		}
		run(
			arg0,
			arg1,
		)
	})
	return _c
}

func (_c *mockSasSigner_Prepare_Call) Return(err error) *mockSasSigner_Prepare_Call {
	_c.Call.Return(err)
	return _c
}

func (_c *mockSasSigner_Prepare_Call) RunAndReturn(run func(ctx context.Context, o *signedURLOptions) error) *mockSasSigner_Prepare_Call {
	_c.Call.Return(run)
	return _c
}

// ServiceURL provides a mock function for the type mockSasSigner
func (_mock *mockSasSigner) ServiceURL() string {
	ret := _mock.Called()

	if len(ret) == 0 {
		panic("no return value specified for ServiceURL")
	}

	var r0 string
	if returnFunc, ok := ret.Get(0).(func() string); ok {
		r0 = returnFunc()
	} else {
		r0 = ret.Get(0).(string)
	}
	return r0
}

// mockSasSigner_ServiceURL_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ServiceURL'
type mockSasSigner_ServiceURL_Call struct {
	*mock.Call
}

// ServiceURL is a helper method to define mock.On call
func (_e *mockSasSigner_Expecter) ServiceURL() *mockSasSigner_ServiceURL_Call {
	return &mockSasSigner_ServiceURL_Call{Call: _e.mock.On("ServiceURL")}
}

func (_c *mockSasSigner_ServiceURL_Call) Run(run func()) *mockSasSigner_ServiceURL_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *mockSasSigner_ServiceURL_Call) Return(s string) *mockSasSigner_ServiceURL_Call {
	_c.Call.Return(s)
	return _c
}

func (_c *mockSasSigner_ServiceURL_Call) RunAndReturn(run func() string) *mockSasSigner_ServiceURL_Call {
	_c.Call.Return(run)
	return _c
}

// Sign provides a mock function for the type mockSasSigner
func (_mock *mockSasSigner) Sign(values sas.BlobSignatureValues) (sas.QueryParameters, error) {
	ret := _mock.Called(values)

	if len(ret) == 0 {
		panic("no return value specified for Sign")
	}

	var r0 sas.QueryParameters
	var r1 error
	if returnFunc, ok := ret.Get(0).(func(sas.BlobSignatureValues) (sas.QueryParameters, error)); ok {
		return returnFunc(values)
	}
	if returnFunc, ok := ret.Get(0).(func(sas.BlobSignatureValues) sas.QueryParameters); ok {
		r0 = returnFunc(values)
	} else {
		r0 = ret.Get(0).(sas.QueryParameters)
	}
	if returnFunc, ok := ret.Get(1).(func(sas.BlobSignatureValues) error); ok {
		r1 = returnFunc(values)
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// mockSasSigner_Sign_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Sign'
type mockSasSigner_Sign_Call struct {
	*mock.Call
}

// Sign is a helper method to define mock.On call
//   - values sas.BlobSignatureValues
func (_e *mockSasSigner_Expecter) Sign(values interface{}) *mockSasSigner_Sign_Call {
	return &mockSasSigner_Sign_Call{Call: _e.mock.On("Sign", values)}
}

func (_c *mockSasSigner_Sign_Call) Run(run func(values sas.BlobSignatureValues)) *mockSasSigner_Sign_Call {
	_c.Call.Run(func(args mock.Arguments) {
		var arg0 sas.BlobSignatureValues
		if args[0] != nil {
			arg0 = args[0].(sas.BlobSignatureValues)
		}
		run(
			arg0,
		)
	})
	return _c
}

func (_c *mockSasSigner_Sign_Call) Return(queryParameters sas.QueryParameters, err error) *mockSasSigner_Sign_Call {
	_c.Call.Return(queryParameters, err)
	return _c
}

func (_c *mockSasSigner_Sign_Call) RunAndReturn(run func(values sas.BlobSignatureValues) (sas.QueryParameters, error)) *mockSasSigner_Sign_Call {
	_c.Call.Return(run)
	return _c
}

// newMockCredentialsResolver creates a new instance of mockCredentialsResolver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func newMockCredentialsResolver(t interface {
	mock.TestingT
	Cleanup(func())
}) *mockCredentialsResolver {
	mock := &mockCredentialsResolver{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}

// mockCredentialsResolver is an autogenerated mock type for the credentialsResolver type
type mockCredentialsResolver struct {
	mock.Mock
}

type mockCredentialsResolver_Expecter struct {
	mock *mock.Mock
}

func (_m *mockCredentialsResolver) EXPECT() *mockCredentialsResolver_Expecter {
	return &mockCredentialsResolver_Expecter{mock: &_m.Mock}
}

// Resolve provides a mock function for the type mockCredentialsResolver
func (_mock *mockCredentialsResolver) Resolve() error {
	ret := _mock.Called()

	if len(ret) == 0 {
		panic("no return value specified for Resolve")
	}

	var r0 error
	if returnFunc, ok := ret.Get(0).(func() error); ok {
		r0 = returnFunc()
	} else {
		r0 = ret.Error(0)
	}
	return r0
}

// mockCredentialsResolver_Resolve_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Resolve'
type mockCredentialsResolver_Resolve_Call struct {
	*mock.Call
}

// Resolve is a helper method to define mock.On call
func (_e *mockCredentialsResolver_Expecter) Resolve() *mockCredentialsResolver_Resolve_Call {
	return &mockCredentialsResolver_Resolve_Call{Call: _e.mock.On("Resolve")}
}

func (_c *mockCredentialsResolver_Resolve_Call) Run(run func()) *mockCredentialsResolver_Resolve_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *mockCredentialsResolver_Resolve_Call) Return(err error) *mockCredentialsResolver_Resolve_Call {
	_c.Call.Return(err)
	return _c
}

func (_c *mockCredentialsResolver_Resolve_Call) RunAndReturn(run func() error) *mockCredentialsResolver_Resolve_Call {
	_c.Call.Return(run)
	return _c
}

// Signer provides a mock function for the type mockCredentialsResolver
func (_mock *mockCredentialsResolver) Signer() (sasSigner, error) {
	ret := _mock.Called()

	if len(ret) == 0 {
		panic("no return value specified for Signer")
	}

	var r0 sasSigner
	var r1 error
	if returnFunc, ok := ret.Get(0).(func() (sasSigner, error)); ok {
		return returnFunc()
	}
	if returnFunc, ok := ret.Get(0).(func() sasSigner); ok {
		r0 = returnFunc()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(sasSigner)
		}
	}
	if returnFunc, ok := ret.Get(1).(func() error); ok {
		r1 = returnFunc()
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}

// mockCredentialsResolver_Signer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Signer'
type mockCredentialsResolver_Signer_Call struct {
	*mock.Call
}

// Signer is a helper method to define mock.On call
func (_e *mockCredentialsResolver_Expecter) Signer() *mockCredentialsResolver_Signer_Call {
	return &mockCredentialsResolver_Signer_Call{Call: _e.mock.On("Signer")}
}

func (_c *mockCredentialsResolver_Signer_Call) Run(run func()) *mockCredentialsResolver_Signer_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *mockCredentialsResolver_Signer_Call) Return(sasSignerMoqParam sasSigner, err error) *mockCredentialsResolver_Signer_Call {
	_c.Call.Return(sasSignerMoqParam, err)
	return _c
}

func (_c *mockCredentialsResolver_Signer_Call) RunAndReturn(run func() (sasSigner, error)) *mockCredentialsResolver_Signer_Call {
	_c.Call.Return(run)
	return _c
}
