package recording
import "github.com/Azure/azure-sdk-for-go/sdk/internal/recording"
Index ¶
- Constants
- func AddBodyKeySanitizer(jsonPath, value, regex string, options *RecordingOptions) error
- func AddBodyRegexSanitizer(value, regex string, options *RecordingOptions) error
- func AddContinuationSanitizer(key, method string, resetAfterFirst bool, options *RecordingOptions) error
- func AddGeneralRegexSanitizer(value, regex string, options *RecordingOptions) error
- func AddHeaderRegexSanitizer(key, value, regex string, options *RecordingOptions) error
- func AddOAuthResponseSanitizer(options *RecordingOptions) error
- func AddRemoveHeaderSanitizer(headersForRemoval []string, options *RecordingOptions) error
- func AddURISanitizer(value, regex string, options *RecordingOptions) error
- func AddURISubscriptionIDSanitizer(value string, options *RecordingOptions) error
- func DefaultStringSanitizer(s *string)
- func GenerateAlphaNumericID(t *testing.T, prefix string, length int, lowercaseOnly bool) (string, error)
- func GetEnvVariable(varName string, recordedValue string) string
- func GetHTTPClient(t *testing.T) (*http.Client, error)
- func GetRecordMode() string
- func GetRecordingId(t *testing.T) string
- func GetVariables(t *testing.T) map[string]interface{}
- func IsLiveOnly(t *testing.T) bool
- func LiveOnly(t *testing.T)
- func RemoveRegisteredSanitizers(sanitizerIDs []string, options *RecordingOptions) error
- func ResetProxy(options *RecordingOptions) error
- func SetBodilessMatcher(t *testing.T, options *MatcherOptions) error
- func SetDefaultMatcher(t *testing.T, options *SetDefaultMatcherOptions) error
- func Sleep(duration time.Duration)
- func Start(t *testing.T, pathToRecordings string, options *RecordingOptions) error
- func Stop(t *testing.T, options *RecordingOptions) error
- func StopTestProxy(proxyInstance *TestProxyInstance) error
- type Failer
- type Logger
- type MatcherOptions
- type Name
- type RecordMode
- type Recording
- func NewRecording(c TestContext, mode RecordMode) (*Recording, error)
- func (r *Recording) Do(req *http.Request) (*http.Response, error)
- func (r *Recording) GenerateAlphaNumericID(prefix string, length int, lowercaseOnly bool) (string, error)
- func (r *Recording) GetEnvVar(name string, variableType VariableType) (string, error)
- func (r *Recording) GetOptionalEnvVar(name string, defaultValue string, variableType VariableType) string
- func (r *Recording) Now() time.Time
- func (r *Recording) Stop() error
- func (r *Recording) UUID() uuid.UUID
- type RecordingHTTPClient
- func NewRecordingHTTPClient(t *testing.T, options *RecordingOptions) (*RecordingHTTPClient, error)
- func (c RecordingHTTPClient) Do(req *http.Request) (*http.Response, error)
- type RecordingOptions
- type RequestMatcher
- func (m *RequestMatcher) SetBodyMatcher(matcher StringMatcher)
- func (m *RequestMatcher) SetMethodMatcher(matcher StringMatcher)
- func (m *RequestMatcher) SetURLMatcher(matcher StringMatcher)
- type Sanitizer
- func (s *Sanitizer) AddBodysanitizer(sanitizer StringSanitizer)
- func (s *Sanitizer) AddSanitizedHeaders(headers ...string)
- func (s *Sanitizer) AddUrlSanitizer(sanitizer StringSanitizer)
- type SetDefaultMatcherOptions
- type StringMatcher
- type StringSanitizer
- type TestContext
- type TestProxyInstance
- type VariableType
Examples ¶
- AddBodyKeySanitizer
- AddBodyRegexSanitizer
- AddContinuationSanitizer
- AddGeneralRegexSanitizer
- AddHeaderRegexSanitizer
- AddOAuthResponseSanitizer
- AddRemoveHeaderSanitizer
- AddURISanitizer
- AddURISubscriptionIDSanitizer
- ResetProxy
- Start
- Start (Second)
- Stop
Constants ¶
const ( RecordingMode = "record" PlaybackMode = "playback" LiveMode = "live" IDHeader = "x-recording-id" ModeHeader = "x-recording-mode" UpstreamURIHeader = "x-recording-upstream-base-uri" )
const (
ModeEnvironmentVariableName = "AZURE_TEST_MODE"
)
const SanitizedBase64Value string = "Kg=="
SanitizedBase64Value is the default placeholder value to be used for sanitized base-64 encoded strings.
const SanitizedValue string = "Sanitized"
SanitizedValue is the default placeholder value to be used for sanitized strings.
Functions ¶
func AddBodyKeySanitizer ¶
func AddBodyKeySanitizer(jsonPath, value, regex string, options *RecordingOptions) error
AddBodyKeySanitizer adds a sanitizer for JSON Bodies. jsonPath is the path to the key, value is the value to replace with, and regex is the string to match in the body. If your regex includes a group options.GroupForReplace specifies which group to replace
func AddBodyRegexSanitizer ¶
func AddBodyRegexSanitizer(value, regex string, options *RecordingOptions) error
AddBodyRegexSanitizer offers regex replace within a returned JSON body. value is the substitution value, regex can be a simple regex or a substitution operation if options.GroupForReplace is set.
func AddContinuationSanitizer ¶
func AddContinuationSanitizer(key, method string, resetAfterFirst bool, options *RecordingOptions) error
AddContinuationSanitizer is used to anonymize private keys in response/request pairs. key: the name of the header whos value will be replaced from response -> next request method: the method by which the value of the targeted key will be replaced. Defaults to GUID replacement resetAfterFirt: Do we need multiple pairs replaced? Or do we want to replace each value with the same value.
func AddGeneralRegexSanitizer ¶
func AddGeneralRegexSanitizer(value, regex string, options *RecordingOptions) error
AddGeneralRegexSanitizer adds a general regex across request/response Body, Headers, and URI. value is the substitution value, regex can be defined as a simple regex replace or a substition operation if options.GroupForReplace specifies which group to replace.
func AddHeaderRegexSanitizer ¶
func AddHeaderRegexSanitizer(key, value, regex string, options *RecordingOptions) error
AddHeaderRegexSanitizer can be used to replace a key with a specific value: set regex to "" OR can be used to do a simple regex replace operation by setting key, value, and regex. OR To do a substitution operation if options.GroupForReplace is set. key is the name of the header to operate against. value is the substitution or whole new header value. regex can be defined as a simple regex replace or a substitution operation if options.GroupForReplace is set.
func AddOAuthResponseSanitizer ¶
func AddOAuthResponseSanitizer(options *RecordingOptions) error
AddOAuthResponseSanitizer cleans all request/response pairs taht match an oauth regex in their URI
func AddRemoveHeaderSanitizer ¶
func AddRemoveHeaderSanitizer(headersForRemoval []string, options *RecordingOptions) error
AddRemoveHeaderSanitizer removes a list of headers from request/responses.
func AddURISanitizer ¶
func AddURISanitizer(value, regex string, options *RecordingOptions) error
AddURISanitizer sanitizes URIs via regex. value is the substition value, regex is either a simple regex or a substitution operation if options.GroupForReplace is defined.
func AddURISubscriptionIDSanitizer ¶
func AddURISubscriptionIDSanitizer(value string, options *RecordingOptions) error
AddURISubscriptionIDSanitizer replaces real subscriptionIDs within a URI with a default or configured fake value. To use the default value set value to "", otherwise value specifies the replacement value.
func DefaultStringSanitizer ¶
func DefaultStringSanitizer(s *string)
Deprecated: the local sanitizer API that uses this function is no longer supported.
func GenerateAlphaNumericID ¶
func GenerateAlphaNumericID(t *testing.T, prefix string, length int, lowercaseOnly bool) (string, error)
GenerateAlphaNumericID will generate a recorded random alpha numeric id. When live mode or the recording has a randomSeed already set, the value will be generated from that seed, else a new random seed will be used.
func GetEnvVariable ¶
GetEnvVariable looks up an environment variable and if it is not found, returns the recordedValue
func GetHTTPClient ¶
func GetRecordMode ¶
func GetRecordMode() string
func GetRecordingId ¶
func GetVariables ¶
GetVariables returns access to the variables stored by the test proxy for a specific test
func IsLiveOnly ¶
func LiveOnly ¶
func RemoveRegisteredSanitizers ¶
func RemoveRegisteredSanitizers(sanitizerIDs []string, options *RecordingOptions) error
RemoveRegisteredSanitizers selectively disables sanitizers that are enabled by default such as "AZSDK1001"
func ResetProxy ¶
func ResetProxy(options *RecordingOptions) error
ResetProxy restores the proxy's default sanitizers, matchers, and transforms
func SetBodilessMatcher ¶
func SetBodilessMatcher(t *testing.T, options *MatcherOptions) error
SetBodilessMatcher adjusts the "match" operation to exclude the body when matching a request to a recording's entries. Pass in `nil` for `t` if you want the bodiless matcher to apply everywhere
func SetDefaultMatcher ¶
func SetDefaultMatcher(t *testing.T, options *SetDefaultMatcherOptions) error
SetDefaultMatcher adjusts the "match" operation to exclude the body when matching a request to a recording's entries. Pass in `nil` for `t` if you want the bodiless matcher to apply everywhere
func Sleep ¶
Sleep during a test for `duration` seconds. This method will only execute when AZURE_RECORD_MODE = "record", if a test is running in playback this will be a noop.
func Start ¶
func Start(t *testing.T, pathToRecordings string, options *RecordingOptions) error
Example¶
Code:play
package main import ( "testing" "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" ) func main() { err := recording.Start(&testing.T{}, "path/to/sdk/testdata", nil) if err != nil { panic(err) } }
Example (Second)¶
Code:play
package main import ( "testing" "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" ) func main() { func(t *testing.T) { err := recording.Start(t, "sdk/internal/recording/testdata", nil) if err != nil { panic(err) } defer func() { err := recording.Stop(t, nil) if err != nil { panic(err) } }() // Add single test recordings here if necessary accountURL := recording.GetEnvVariable("TABLES_ACCOUNT_URL", "https://fakeurl.tables.core.windows.net") err = recording.AddURISanitizer(accountURL, "https://fakeurl.tables.core.windows.net", nil) if err != nil { panic(err) } // Test functionality // Reset Sanitizers IF only for a single session err = recording.ResetProxy(nil) if err != nil { panic(err) } }(&testing.T{}) }
func Stop ¶
func Stop(t *testing.T, options *RecordingOptions) error
Stop tells the test proxy to stop accepting requests for a given test
func StopTestProxy ¶
func StopTestProxy(proxyInstance *TestProxyInstance) error
NOTE: The process will be killed if the user hits ctrl-c mid-way through tests, as go will kill child processes when the main process does not exit cleanly. No os.Interrupt handlers need to be added after starting the proxy server in tests.
Types ¶
type Failer ¶
type Failer func(string)
Deprecated: only deprecated methods use this type.
type Logger ¶
type Logger func(string)
Deprecated: only deprecated methods use this type.
type MatcherOptions ¶
type MatcherOptions struct { RecordingOptions }
Optional parameters for the SetBodilessMatcher operation
type Name ¶
type Name func() string
Deprecated: only deprecated methods use this type.
type RecordMode ¶
type RecordMode string
const ( Record RecordMode = "record" Playback RecordMode = "playback" Live RecordMode = "live" )
type Recording ¶
type Recording struct { SessionName string RecordingFile string VariablesFile string Mode RecordMode Sanitizer *Sanitizer Matcher *RequestMatcher }
Deprecated: the local recording API that uses this type is no longer supported. Call Start and Stop to make recordings via the test proxy instead.
func NewRecording ¶
func NewRecording(c TestContext, mode RecordMode) (*Recording, error)
NewRecording initializes a new Recording instance
func (*Recording) Do ¶
Do satisfies the azcore.Transport interface so that Recording can be used as the transport for recorded requests
func (*Recording) GenerateAlphaNumericID ¶
func (r *Recording) GenerateAlphaNumericID(prefix string, length int, lowercaseOnly bool) (string, error)
GenerateAlphaNumericID will generate a recorded random alpha numeric id if the recording has a randomSeed already set, the value will be generated from that seed, else a new random seed will be used
func (*Recording) GetEnvVar ¶
func (r *Recording) GetEnvVar(name string, variableType VariableType) (string, error)
GetEnvVar returns a recorded environment variable. If the variable is not found we return an error. variableType determines how the recorded variable will be saved.
func (*Recording) GetOptionalEnvVar ¶
func (r *Recording) GetOptionalEnvVar(name string, defaultValue string, variableType VariableType) string
GetOptionalEnvVar returns a recorded environment variable with a fallback default value. default Value configures the fallback value to be returned if the environment variable is not set. variableType determines how the recorded variable will be saved.
func (*Recording) Now ¶
func (*Recording) Stop ¶
Stop stops the recording and saves them, including any captured variables, to disk
func (*Recording) UUID ¶
type RecordingHTTPClient ¶
type RecordingHTTPClient struct {
// contains filtered or unexported fields
}
func NewRecordingHTTPClient ¶
func NewRecordingHTTPClient(t *testing.T, options *RecordingOptions) (*RecordingHTTPClient, error)
NewRecordingHTTPClient returns a type that implements `azcore.Transporter`. This will automatically route tests on the `Do` call.
func (RecordingHTTPClient) Do ¶
type RecordingOptions ¶
type RecordingOptions struct { UseHTTPS bool // ProxyPort is the port the test proxy is listening on. Defaults to the port used by [StartTestProxy]. ProxyPort int GroupForReplace string Variables map[string]interface{} TestInstance *testing.T // contains filtered or unexported fields }
func (RecordingOptions) ReplaceAuthority ¶
type RequestMatcher ¶
type RequestMatcher struct { // IgnoredHeaders is a map acting as a hash set of the header names that will be ignored for matching. // Modifying the keys in the map will affect how headers are matched for recordings. IgnoredHeaders map[string]struct{} }
Deprecated: the local recording API that uses this type is no longer supported. Call SetDefaultMatcher to configure the test proxy's matcher instead.
func (*RequestMatcher) SetBodyMatcher ¶
func (m *RequestMatcher) SetBodyMatcher(matcher StringMatcher)
SetBodyMatcher replaces the default matching behavior with a custom StringMatcher that compares the string value of the request body payload with the string value of the recorded body payload.
func (*RequestMatcher) SetMethodMatcher ¶
func (m *RequestMatcher) SetMethodMatcher(matcher StringMatcher)
SetMethodMatcher replaces the default matching behavior with a custom StringMatcher that compares the string value of the request method with the string value of the recorded method
func (*RequestMatcher) SetURLMatcher ¶
func (m *RequestMatcher) SetURLMatcher(matcher StringMatcher)
SetURLMatcher replaces the default matching behavior with a custom StringMatcher that compares the string value of the request URL with the string value of the recorded URL
type Sanitizer ¶
type Sanitizer struct{}
Deprecated: the local recording API that uses this type is no longer supported. Use Start and Stop to make recordings with the test proxy instead, and configure its sanitizers with functions such as AddBodyKeySanitizer and AddRemoveHeaderSanitizer.
func (*Sanitizer) AddBodysanitizer ¶
func (s *Sanitizer) AddBodysanitizer(sanitizer StringSanitizer)
AddBodysanitizer configures the supplied StringSanitizer to sanitize recording request and response bodies
func (*Sanitizer) AddSanitizedHeaders ¶
AddSanitizedHeaders adds the supplied header names to the list of headers to be sanitized on request and response recordings.
func (*Sanitizer) AddUrlSanitizer ¶
func (s *Sanitizer) AddUrlSanitizer(sanitizer StringSanitizer)
AddUriSanitizer configures the supplied StringSanitizer to sanitize recording request and response URLs
type SetDefaultMatcherOptions ¶
type SetDefaultMatcherOptions struct { RecordingOptions CompareBodies *bool ExcludedHeaders []string IgnoredHeaders []string IgnoreQueryOrdering *bool }
type StringMatcher ¶
Deprecated: only deprecated methods use this type.
type StringSanitizer ¶
type StringSanitizer func(*string)
StringSanitizer is a func that will modify the string pointed to by the parameter into a sanitized value.
Deprecated: the local sanitizer API that uses this type is no longer supported. Use test proxy sanitizer configuration functions such as AddBodyKeySanitizer and AddRemoveHeaderSanitizer instead.
type TestContext ¶
Deprecated: only deprecated methods use this type.
func NewTestContext ¶
func NewTestContext(failer Failer, logger Logger, name Name) TestContext
NewTestContext initializes a new TestContext
type TestProxyInstance ¶
type TestProxyInstance struct { Cmd *exec.Cmd Options *RecordingOptions }
func StartTestProxy ¶
func StartTestProxy(pathToRecordings string, options *RecordingOptions) (*TestProxyInstance, error)
type VariableType ¶
type VariableType string
Deprecated: only deprecated methods use this type. Call Start and Stop to make recordings.
const ( // NoSanitization indicates that the recorded value should not be sanitized. NoSanitization VariableType = "default" // Secret_String indicates that the recorded value should be replaced with a sanitized value. Secret_String VariableType = "secret_string" // Secret_Base64String indicates that the recorded value should be replaced with a sanitized valid base-64 string value. Secret_Base64String VariableType = "secret_base64String" )
Source Files ¶
doc.go matchers.go recording.go request_matcher.go sanitizer.go server.go testcontext.go
- Version
- v1.11.1 (latest)
- Published
- Apr 7, 2025
- Platform
- linux/amd64
- Imports
- 26 packages
- Last checked
- 1 day ago –
Tools for package owners.