예제 #1
0
        // private readonly HttpClient _httpClient = new HttpClient();
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            var client   = new MountebankClient();
            var imposter = client.CreateHttpImposter(8070);
            var usdcoin  = new Coin {
                Key = "usd", Rate = 22.22m
            };

            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, usdcoin).OnPathAndMethodEqual($"/rate/{usdcoin.Key}", Method.Get);

            var rubcoin = new Coin {
                Key = "rub", Rate = 5.22m
            };

            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, rubcoin).OnPathAndMethodEqual($"/rate/{rubcoin.Key}", Method.Get);

            var eurcoin = new Coin {
                Key = "eur", Rate = 25.22m
            };

            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, eurcoin).OnPathAndMethodEqual($"/rate/{eurcoin.Key}", Method.Get);

            imposter.AddStub().ReturnsStatus(HttpStatusCode.BadRequest);

            client.Submit(imposter);

            await GetRequest("usd");
            await GetRequest("rub");
            await GetRequest("eur");
            await GetRequest("yuan");

            client.DeleteAllImposters();
        }
예제 #2
0
        public void MakeTranslateApi()
        {
            var mounteBankClient = new MountebankClient(Environment.GetEnvironmentVariable("MOUNTEBANK_HOST"));
            var uri = new Uri(Environment.GetEnvironmentVariable("TRANSLATE_API_HOST"));
            var translateApiPort = uri.Port;
            var imposter         = mounteBankClient.CreateHttpImposter(translateApiPort);

            var transelationResponse = new
            {
                success = new
                {
                    total = 1
                },
                contents = new
                {
                    translated  = "Its nature is to store up electricity. Forests\\nwhere aeries of pikachu liveth art dangerous, \\nsince the trees art so oft did strike by lightning.",
                    text        = "Its nature is to store up electricity. Forests\\nwhere nests of Pikachu live are dangerous,\\nsince the trees are so often struck by lightning.",
                    translation = "shakespeare"
                }
            };

            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, transelationResponse)
            .OnPathAndMethodEqual("/translate/shakespeare.json", Method.Post);

            mounteBankClient.Submit(imposter);
        }
예제 #3
0
        private static async Task Main()
        {
            var client   = new MountebankClient();
            var imposter = client.CreateHttpImposter(7777);
            var usd      = new TestObj {
                Key = "usd", Rate = 36.96
            };
            var euro = new TestObj {
                Key = "eur", Rate = 44.88
            };
            var yen = new TestObj {
                Key = "yen", Rate = 1.36
            };

            imposter.AddStub().ReturnsJson(OK, usd)
            .OnPathAndMethodEqual($"/rate/{usd.Key}", Method.Get);
            imposter.AddStub().ReturnsJson(OK, euro)
            .OnPathAndMethodEqual($"/rate/{euro.Key}", Method.Get);
            imposter.AddStub().ReturnsJson(OK, yen)
            .OnPathAndMethodEqual($"/rate/{yen.Key}", Method.Get);

            imposter.AddStub().ReturnsStatus(BadRequest);

            client.Submit(imposter);
            await Request("usd");
            await Request("eur");
            await Request("yen");
            await Request("rub");

            client.DeleteAllImposters();
        }
예제 #4
0
 public static HttpImposter CreateOrReplaceHttpImposter(this MountebankClient client,
                                                        int port,
                                                        string name         = null,
                                                        bool recordRequests = false)
 {
     client.DeleteImposter(port);
     return(client.CreateHttpImposter(port, name, recordRequests));
 }
예제 #5
0
        public async Task CreateBankServiceImposterAsync(string responseBody)
        {
            await TearDownBankService();

            var imposter = _mountebankClient.CreateHttpImposter(this.BankServiceUri.Port, "Bank Service Imposter");

            imposter.AddStub().OnPathAndMethodEqual("/payments", Method.Post)
            .ReturnsBody(HttpStatusCode.OK, responseBody);
            await Task.Run(() => _mountebankClient.Submit(imposter));
        }
예제 #6
0
        public void MakePokemonApi(string pokemonName)
        {
            var mounteBankClient = new MountebankClient(Environment.GetEnvironmentVariable("MOUNTEBANK_HOST"));
            var uri                   = new Uri(Environment.GetEnvironmentVariable("POKEMON_API_HOST"));
            var pokemonApiPort        = uri.Port;
            var imposter              = mounteBankClient.CreateHttpImposter(pokemonApiPort);
            var pokemonDetailResponse = GeneratePokemonSpeciesDetailsResponseBody();

            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, pokemonDetailResponse).OnPathEquals($"/api/v2/pokemon-species/{pokemonName}");

            mounteBankClient.Submit(imposter);
        }
        public MountebankTests()
        {
            _httpClient = new HttpClient {
                BaseAddress = _localhostUri
            };

            _mountebankClient = new MountebankClient();

            _mountebankClient.DeleteAllImposters();

            _imposter = _mountebankClient.CreateHttpImposter(_port);
        }
예제 #8
0
        public void Setup()
        {
            var       client = new MountebankClient();
            const int port   = 8080;

            client.DeleteImposter(port);

            var imposter = client.CreateHttpImposter(port);

            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, 72.4).OnPathAndMethodEqual($"/rate/usd", Method.Get);
            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, 89.9).OnPathAndMethodEqual($"/rate/eur", Method.Get);
            imposter.AddStub().ReturnsJson(HttpStatusCode.OK, 1).OnPathAndMethodEqual($"/rate/rub", Method.Get);
            imposter.AddStub().ReturnsStatus(HttpStatusCode.BadRequest);

            client.Submit(imposter);
        }
        public static void AddRecordedCommand(VirtSqlRpcModel model)
        {
            _recordedCommands.AddOrUpdate(model.StoredProcName, s => new List <VirtSqlRpcModel> {
                model
            }, (s, list) =>
            {
                list.Add(model);
                return(list);
            });

            var mountebankClient = new MountebankClient();

            mountebankClient.DeleteImposter(1234);

            var imposter = mountebankClient.CreateHttpImposter(1234, "test");

            foreach (var virtRecordedCommand in _recordedCommands)
            {
                var stub = imposter.AddStub();

                var predicateFields = new HttpPredicateFields
                {
                    Path = virtRecordedCommand.Key,
                };

                var containsPredicate = new ContainsPredicate <HttpPredicateFields>(predicateFields);

                foreach (var response in virtRecordedCommand.Value)
                {
                    stub
                    .On(containsPredicate)
                    .ReturnsJson(HttpStatusCode.OK, response);
                }
            }

            mountebankClient.Submit(imposter);
        }
예제 #10
0
 private void CreateImposter()
 {
     _imposter = _client.CreateHttpImposter(ImposterPort);
     _client.Submit(_imposter);
 }