Release v4.0.0
has been tagged.
This release contains breaking changes.
Minimum Go version required to use go-vcr
is set to 1.22
.
The import path for recorder
and cassette
packages has changed and now they
reside in:
gopkg.in/dnaeon/go-vcr.v4/pkg/cassette
gopkg.in/dnaeon/go-vcr.v4/pkg/recorder
Only version 2
of the cassette format is now supported.
The recorder.Options
struct has been removed. Instead of it, we can now use
functional options to configure the recorder.
The following recorder.Option
functions may be used to configure the recorder.
recorder.WithCassette
- sets the name of the cassetterecorder.WithMode
- sets the mode of the recorderrecorder.WithRealTransport
- sets the underlying transport used bygo-vcr
.recorder.WithBlockUnsafeMethods
- blocks unsafe methods, if set totrue
.recorder.WithSkipRequestLatency
- simulates request/response latency, if set totrue
.recorder.WithPassthrough
- configures passthrough handlersrecorder.WithHook
- configures recorder hooksrecorder.WithMatcher
- configures the matcher to be usedrecorder.WithReplayableInteractions
- allows interactions to be replayed multiple times, if set totrue
.
The cassette.OnRequestReplayFunc
type has been removed. Instead of it, users
should use a recorder.BeforeResponseReplayHook
.
The cassette.DefaultMatcher
is now stricter. See #98 and #99 for more details.
Added support for blocking Unsafe HTTP Methods. The definition of Safe Methods comes from RFC 9110, section 9.2.1. See #100 for more details.
Added support for server-side recording and replaying. See #101 for more details.
Release v3.2.0
has been tagged.
Added helper method Interaction.WasReplayed()
and a new hook kind, which will
execute hooks when the recorder is about to be stopped - OnRecorderStopHook
.
See #91 and #92 for more details.
Release v3.1.2
has been tagged.
New field called DiscardOnSave
has been added to the
cassette.Interaction
type, which allows for a hook to set it to
true
, and as a result to discard the interaction from saving it on
disk.
See #80 for more details.
Release v3.1.1
has been tagged.
Cassettes with no recorded interactions will be saved on disk. Previous behaviour was to skip saving the cassette at all.
See PR #79 for more details.
Release v3.1.0
has been tagged.
**NOTE**: This version contains breaking API change.
Summary of changes since previous release.
- The
recorder.FilterFunc
has been removed. It is now replaced byrecorder.HookFunc
type. - The
Recorder.AddFilter()
andRecorder.AddPreSaveFilter()
methods have been removed. They are now replaced by theRecorder.AddHook()
method. - Added different kinds of hooks supported by the recorder -
AfterCaptureHook
,BeforeSaveHook
andBeforeResponseReplayHook
.
Release v3.0.1
has been tagged.
Minor updates, adding two new utility methods to the recorder, which can be used to inspect the state of the recorder and the cassette.
IsRecording()
IsNewCassette()
See issue #76
go-vcr v3
has been released and tagged as v3.0.0
.
**NOTE**: This release is not backwards-compatible with previous
versions of the cassettes. If you are upgrading to v3
you should
re-create your test cassettes.
A summary of changes for this release:
- API has been refactored and cleaned up
- Custom recorder options are now specified as
recorder.Options
- The recorder modes which are now supported are
ModeRecordOnly
,ModeRecordOnce
,ModeReplayOnly
,ModeReplayWithNewEpisodes
andModePassthrough
. Please refer to the API documentation for more details on their use cases - In order to create recorders with custom options you should use the
recorder.NewWithOptions
function from now on - The default mode of the recorder is now
ModeRecordOnce
ModeDisabled
has been removed and is now replaced byModePassthrough
- Cassette format has been changed and the supported version of the
cassette from now on is
v2
. - Additional fields have been added to the cassette to allow developers to create more complex matchers based on the existing fields
- Each interaction in the cassette now has a unique integer id, specifying the position of the interaction in the cassette. See issue #22
- Utility method on the recorder can now return a pre-configured HTTP
client with the recorder’s transport -
GetDefaultClient()
- CI/CD pipeline has been transferred to Github actions
- Closed out some long standing issues
- Extended and refactored test cases
- etc
v2.3.0
has been released.
- Cleaned up
v2
package structure - Switched from
gopkg.in/yaml.v2
togopkg.in/yaml.v3
- Package import path for
go-vcr
has changed fromgithub.com/dnaeon/go-vcr
togopkg.in/dnaeon/go-vcr.v2
. See #73 v2
ofgo-vcr
resides in thev2
branch, which is now the default- Fixed a regression where the default mode of the recorder has been changed. See issue #72
v2.1.0
has been released.
Switch to gopkg.in/yaml.v3
.
See issues #70 and #71
go-vcr
has been tagged v2.0.1
.
This release contains a breaking change. When upgrading to v2.0.0
make sure that you re-create your cassettes.
A new flag of the recorder.Recorder
(SkipRequestLatency
) is
supported which allows to skip latency simulation during replay.
See #63 for more details.
Version v1.0.0
. has been released
Initial version of go-vcr
.