Example #1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy(name: "DefaultPolicy",
                                  builder =>
                {
                    builder.AllowAnyHeader()
                    .AllowAnyMethod()
                    .AllowAnyOrigin()
                    .WithExposedHeaders("*");
                });
            });

            services.AddControllers(options =>
            {
                options.InputFormatters.Add(new EmptyBodyFormatter());
            });
            services.AddControllersWithViews();
            services.AddRazorPages();

            var singletonRecordingHandler = new RecordingHandler(
                TargetLocation,
                store: DefaultStore,
                storeResolver: Resolver
                );

            services.AddSingleton <RecordingHandler>(singletonRecordingHandler);
        }
Example #2
0
        public async Task Reset()
        {
            await DebugLogger.LogRequestDetailsAsync(_logger, Request);

            var recordingId = RecordingHandler.GetHeader(Request, "x-recording-id", allowNulls: true);

            _recordingHandler.SetDefaultExtensions(recordingId);
        }
Example #3
0
        public void Stop()
        {
            string id = RecordingHandler.GetHeader(Request, "x-recording-id");

            bool.TryParse(RecordingHandler.GetHeader(Request, "x-purge-inmemory-recording", true), out var shouldPurgeRecording);

            _recordingHandler.StopPlayback(id, purgeMemoryStore: shouldPurgeRecording);
        }
Example #4
0
        public async Task SetRecordingOptions([FromBody()] IDictionary <string, object> options = null)
        {
            await DebugLogger.LogRequestDetailsAsync(_logger, Request);

            var recordingId = RecordingHandler.GetHeader(Request, "x-recording-id", allowNulls: true);

            _recordingHandler.SetRecordingOptions(options, recordingId);
        }
Example #5
0
        public async Task AddTransform()
        {
            await DebugLogger.LogRequestDetailsAsync(_logger, Request);

            var tName       = RecordingHandler.GetHeader(Request, "x-abstraction-identifier");
            var recordingId = RecordingHandler.GetHeader(Request, "x-recording-id", allowNulls: true);

            ResponseTransform t = (ResponseTransform)GetTransform(tName, await HttpRequestInteractions.GetBody(Request));

            if (recordingId != null)
            {
                _recordingHandler.AddTransformToRecording(recordingId, t);
            }
            else
            {
                _recordingHandler.Transforms.Add(t);
            }
        }
Example #6
0
        public async Task SetMatcher()
        {
            await DebugLogger.LogRequestDetailsAsync(_logger, Request);

            var mName       = RecordingHandler.GetHeader(Request, "x-abstraction-identifier");
            var recordingId = RecordingHandler.GetHeader(Request, "x-recording-id", allowNulls: true);

            RecordMatcher m = (RecordMatcher)GetMatcher(mName, await HttpRequestInteractions.GetBody(Request));

            if (recordingId != null)
            {
                _recordingHandler.SetMatcherForRecording(recordingId, m);
            }
            else
            {
                _recordingHandler.Matcher = m;
            }
        }
Example #7
0
        public void Stop([FromBody()] IDictionary <string, string> variables = null)
        {
            string          id   = RecordingHandler.GetHeader(Request, "x-recording-id");
            bool            save = true;
            EntryRecordMode mode = RecordingHandler.GetRecordMode(Request);

            if (mode != EntryRecordMode.Record && mode != EntryRecordMode.DontRecord)
            {
                throw new HttpException(HttpStatusCode.BadRequest, "When stopping a recording and providing a \"x-recording-skip\" value, only value \"request-response\" is accepted.");
            }

            if (mode == EntryRecordMode.DontRecord)
            {
                save = false;
            }

            _recordingHandler.StopRecording(id, variables: variables, saveRecording: save);
        }
Example #8
0
        public async Task AddSanitizer()
        {
            await DebugLogger.LogRequestDetailsAsync(_logger, Request);

            var sName       = RecordingHandler.GetHeader(Request, "x-abstraction-identifier");
            var recordingId = RecordingHandler.GetHeader(Request, "x-recording-id", allowNulls: true);

            RecordedTestSanitizer s = (RecordedTestSanitizer)GetSanitizer(sName, await HttpRequestInteractions.GetBody(Request));

            if (recordingId != null)
            {
                _recordingHandler.AddSanitizerToRecording(recordingId, s);
            }
            else
            {
                _recordingHandler.Sanitizers.Add(s);
            }
        }
Example #9
0
        public async Task Start()
        {
            string file = await HttpRequestInteractions.GetBodyKey(Request, "x-recording-file", true);

            string recordingId = RecordingHandler.GetHeader(Request, "x-recording-id", true);

            if (String.IsNullOrEmpty(file) && !String.IsNullOrEmpty(recordingId))
            {
                await _recordingHandler.StartPlaybackAsync(recordingId, Response, RecordingType.InMemory);
            }
            else if (!String.IsNullOrEmpty(file))
            {
                await _recordingHandler.StartPlaybackAsync(file, Response, RecordingType.FilePersisted);
            }
            else
            {
                throw new HttpException(HttpStatusCode.BadRequest, "At least one of either JSON body key 'x-recording-file' or header 'x-recording-id' must be populated when starting playback.");
            }
        }
Example #10
0
 public Record(RecordingHandler recordingHandler) => _recordingHandler = recordingHandler;
Example #11
0
 public Info(RecordingHandler recordingHandler) => _recordingHandler = recordingHandler;
Example #12
0
 public Admin(RecordingHandler recordingHandler) => _recordingHandler = recordingHandler;
Example #13
0
 public Playback(RecordingHandler recordingHandler) => _recordingHandler = recordingHandler;
Example #14
0
        public async Task HandleRequest()
        {
            string id = RecordingHandler.GetHeader(Request, "x-recording-id");

            await _recordingHandler.HandleRecordRequestAsync(id, Request, Response);
        }
Example #15
0
 public Record(RecordingHandler recordingHandler, ILoggerFactory loggerFactory)
 {
     _recordingHandler = recordingHandler;
     _logger           = loggerFactory.CreateLogger <Record>();
 }
Example #16
0
 public Admin(RecordingHandler recordingHandler, ILoggerFactory loggingFactory)
 {
     _recordingHandler = recordingHandler;
     _logger           = loggingFactory.CreateLogger <Admin>();
 }
Example #17
0
 public Playback(RecordingHandler recordingHandler, ILoggerFactory loggerFactory)
 {
     _recordingHandler = recordingHandler;
     _logger           = loggerFactory.CreateLogger <Playback>();
 }