A class that represents an the environment and configuration of a Stumps server.
Inheritance: IDisposable
Esempio n. 1
0
        private void UnwrapAndRegisterServer(ServerEntity entity)
        {
            var server = new StumpsServerInstance(_serverFactory, entity.ServerId, _dataAccess)
            {
                AutoStart                      = entity.AutoStart,
                ListeningPort                  = entity.Port,
                RemoteServerHostName           = entity.RemoteServerHostName,
                UseHttpsForIncomingConnections = entity.UseHttpsForIncomingConnections,
                UseSsl = entity.UseSsl
            };

            _serverInstances.AddOrUpdate(server.ServerId, server, (key, oldServer) => server);
        }
        public void StumpNameExists_WithExistantName_ReturnsTrue()
        {
            var contract = new StumpContract()
            {
                OriginalRequest = new RecordedRequest(Substitute.For<IStumpsHttpRequest>(), ContentDecoderHandling.DecodeNotRequired),
                OriginalResponse = new RecordedResponse(Substitute.For<IStumpsHttpResponse>(), ContentDecoderHandling.DecodeNotRequired),
                Response = new RecordedResponse(Substitute.For<IStumpsHttpResponse>(), ContentDecoderHandling.DecodeNotRequired),
                StumpCategory = "ABC",
                StumpId = "abc",
                StumpName = "StumpName"
            };

            var instance = new StumpsServerInstance(Substitute.For<IServerFactory>(), _serverId, _dal);
            instance.CreateStump(contract);
            Assert.IsTrue(instance.StumpNameExists(contract.StumpName));
        }
        public void StumpNameExists_WithExistantName_ReturnsTrue()
        {
            var contract = new StumpContract()
            {
                OriginalRequest  = new RecordedRequest(Substitute.For <IStumpsHttpRequest>(), ContentDecoderHandling.DecodeNotRequired),
                OriginalResponse = new RecordedResponse(Substitute.For <IStumpsHttpResponse>(), ContentDecoderHandling.DecodeNotRequired),
                Response         = new RecordedResponse(Substitute.For <IStumpsHttpResponse>(), ContentDecoderHandling.DecodeNotRequired),
                StumpCategory    = "ABC",
                StumpId          = "abc",
                StumpName        = "StumpName"
            };

            var instance = new StumpsServerInstance(Substitute.For <IServerFactory>(), _serverId, _dal);

            instance.CreateStump(contract);
            Assert.IsTrue(instance.StumpNameExists(contract.StumpName));
        }
Esempio n. 4
0
        /// <summary>
        ///     Returns a string value depending on the state of a <see cref="T:Stumps.Server.StumpsServerInstance"/>.
        /// </summary>
        /// <param name="serverInstance">The instance of the Stumps server.</param>
        /// <param name="running">The message to use if the proxy environment is running.</param>
        /// <param name="stopped">The message to use if the proxy environment is stopped.</param>
        /// <param name="recording">The message to use if the proxy environment is recording.</param>
        /// <returns>A <see cref="T:System.String"/> representing the state of the server.</returns>
        /// <exception cref="System.ArgumentNullException"><paramref name="serverInstance"/> is <c>null</c>.</exception>
        public static string StateValue(StumpsServerInstance serverInstance, string running, string stopped, string recording)
        {
            if (serverInstance == null)
            {
                throw new ArgumentNullException("serverInstance");
            }

            var value = stopped;

            if (serverInstance.IsRunning && serverInstance.RecordTraffic)
            {
                value = recording;
            }
            else if (serverInstance.IsRunning && !serverInstance.RecordTraffic)
            {
                value = running;
            }

            return value;
        }
Esempio n. 5
0
        private void UnwrapAndRegisterServer(ServerEntity entity)
        {
            var server = new StumpsServerInstance(_serverFactory, entity.ServerId, _dataAccess)
            {
                AutoStart = entity.AutoStart,
                ListeningPort = entity.Port,
                RemoteServerHostName = entity.RemoteServerHostName,
                UseHttpsForIncommingConnections = entity.UseHttpsForIncommingConnections,
                UseSsl = entity.UseSsl
            };

            _serverInstances.AddOrUpdate(server.ServerId, server, (key, oldServer) => server);
        }
Esempio n. 6
0
        /// <summary>
        ///     Creates a Stump contract from an existing Stump.
        /// </summary>
        /// <param name="model">The <see cref="T:Stumps.Web.Models.StumpModel"/> used to create the contract.</param>
        /// <param name="server">The <see cref="T:Stumps.Server.StumpsServerInstance" /> that contains the Stump.</param>
        /// <returns>A <see cref="T:Stumps.Server.StumpContract" /> created from an existing Stump.</returns>
        private StumpContract CreateContractFromStump(StumpModel model, StumpsServerInstance server)
        {
            var originalContract = server.FindStump(model.StumpId);

            var contract = new StumpContract
            {
                OriginalRequest = new RecordedRequest(originalContract.OriginalRequest, ContentDecoderHandling.DecodeNotRequired),
                OriginalResponse = new RecordedResponse(originalContract.OriginalResponse, ContentDecoderHandling.DecodeNotRequired),
                Response = new RecordedResponse(originalContract.Response, ContentDecoderHandling.DecodeNotRequired),
                StumpId = model.StumpId,
                StumpName = model.Name,
                StumpCategory = "Uncategorized"
            };

            if (model.RequestUrlMatch)
            {
                contract.Rules.Add(new RuleContract(new UrlRule(model.RequestUrl)));
            }

            if (model.RequestHttpMethodMatch)
            {
                contract.Rules.Add(new RuleContract(new HttpMethodRule(model.RequestHttpMethod)));
            }

            foreach (var h in model.RequestHeaderMatch)
            {
                contract.Rules.Add(new RuleContract(new HeaderRule(h.Name, h.Value)));
            }

            switch (model.RequestBodyMatch)
            {
                case BodyMatch.ContainsText:
                    contract.Rules.Add(new RuleContract(new BodyContentRule(model.RequestBodyMatchValues)));
                    break;

                case BodyMatch.ExactMatch:
                    contract.Rules.Add(
                        new RuleContract(new BodyMatchRule(contract.OriginalRequest.BodyLength, contract.OriginalRequest.BodyMd5Hash)));
                    break;

                case BodyMatch.IsBlank:
                    contract.Rules.Add(new RuleContract(new BodyLengthRule(0, 0)));
                    break;

                case BodyMatch.IsNotBlank:
                    contract.Rules.Add(new RuleContract(new BodyLengthRule(1, int.MaxValue)));
                    break;

            }

            switch (model.ResponseBodySource)
            {

                case BodySource.Modified:
                    contract.Response.ClearBody();
                    contract.Response.AppendToBody(Encoding.UTF8.GetBytes(model.ResponseBodyModification));
                    break;

                case BodySource.EmptyBody:
                    contract.Response.ClearBody();
                    break;

                case BodySource.Origin:
                    contract.Response.ClearBody();
                    contract.Response.AppendToBody(originalContract.Response.GetBody());
                    break;

            }

            CopyHeaderModelToDictionary(model.ResponseHeaders, contract.Response.Headers);
            contract.Response.StatusCode = model.ResponseStatusCode;
            contract.Response.StatusDescription = model.ResponseStatusDescription;

            contract.Response.ExamineBody();

            return contract;
        }
 public void StumpNameExists_WithNonExistantName_ReturnsFalse()
 {
     var instance = new StumpsServerInstance(Substitute.For<IServerFactory>(), _serverId, _dal);
     Assert.IsFalse(instance.StumpNameExists("name"));
 }
        public void StumpNameExists_WithNonExistantName_ReturnsFalse()
        {
            var instance = new StumpsServerInstance(Substitute.For <IServerFactory>(), _serverId, _dal);

            Assert.IsFalse(instance.StumpNameExists("name"));
        }