Example #1
0
    /// <inheritdoc />
    public async Task <FullStubModel> GenerateStubBasedOnRequestAsync(
        string requestCorrelationId,
        bool doNotCreateStub)
    {
        _logger.LogDebug($"Creating stub based on request with corr.ID '{requestCorrelationId}'.");
        var requestResult = await _stubContext.GetRequestResultAsync(requestCorrelationId);

        if (requestResult == null)
        {
            throw new NotFoundException(nameof(RequestResultModel), requestCorrelationId);
        }

        var request = _mapper.Map <HttpRequestModel>(requestResult.RequestParameters);
        var stub    = new StubModel
        {
            Conditions = await _httpRequestToConditionsService.ConvertToConditionsAsync(request),
            Response   =
            {
                Text = "OK!"
            }
        };

        // Generate an ID based on the created stub.
        var contents = JsonConvert.SerializeObject(stub);

        stub.EnsureStubId();

        FullStubModel result;

        if (doNotCreateStub)
        {
            result = new FullStubModel {
                Stub = stub, Metadata = new StubMetadataModel()
            };
        }
        else
        {
            await _stubContext.DeleteStubAsync(stub.Id);

            result = await _stubContext.AddStubAsync(stub);
        }

        _logger.LogInformation($"Stub with ID '{stub.Id}' generated!");

        return(result);
    }
    /// <inheritdoc />
    public async Task <FullStubModel> GetStubAsync(string stubId)
    {
        FullStubModel result = null;

        foreach (var source in _stubSources)
        {
            var stub = await source.GetStubAsync(stubId);

            if (stub != null)
            {
                result = new FullStubModel
                {
                    Stub = stub, Metadata = new StubMetadataModel {
                        ReadOnly = source is not IWritableStubSource
                    }
                };
                break;
            }
        }

        return(result);
    }