示例#1
0
        public async Task AddMockApiWithValidDataShouldReturnOk()
        {
            var mockApi = new MockApiResourceModel()
            {
                Name          = "AddTwoNumber",
                Body          = "function run(req, res) {return {sum: req.content.num1 + req.content.num2} }",
                RouteTemplate = "math/addition/{num1}/{num2}",
                Verb          = MockApiHttpVerb.Post
            };
            var response = await AddApi(mockApi);

            response.StatusCode.Should().Be(HttpStatusCode.OK);
        }
示例#2
0
        public async Task AddMockApiWithInvalidCharsInRouteTemplateShouldReturnBadRequest()
        {
            var mockApi = new MockApiResourceModel()
            {
                Name          = "".PadLeft(25, 'A'),
                RouteTemplate = "<script>alert 'hi'</script>",
                Body          = "function(){return \"a\";}",
                Verb          = MockApiHttpVerb.Post
            };
            var response = await AddApi(mockApi, HttpMethod.Post);

            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
示例#3
0
        public async Task AddMockApiWithIncorrectHttpVerbShouldReturnMethodNotAllowed()
        {
            var mockApi = new MockApiResourceModel()
            {
                Name          = "".PadLeft(25, 'A'),
                RouteTemplate = "".PadLeft(20, 'A'),
                Body          = "function run(req, res) {return req.num1+req.num2;}",
                Verb          = MockApiHttpVerb.Post
            };
            var response = await AddApi(mockApi, HttpMethod.Put);

            response.StatusCode.Should().Be(HttpStatusCode.MethodNotAllowed);
        }
示例#4
0
        public async Task AddMockApiWithBigBodyDefinitionShouldReturnBadRequest()
        {
            var mockApi = new MockApiResourceModel()
            {
                Name          = "".PadLeft(25, 'A'),
                RouteTemplate = "".PadLeft(20, 'A'),
                Body          = "function(){return sdaaaaaaaaasdaaaaaaaaaaaaaaaaaaaaaaaaaddsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +
                                "aaaaaaaaaaaaasdaaaaaaaaaaaaaaaaaaaaaasaddddddddddddddddddddsaaaaaaaaaaaaaaaaaaaadddddddddddddddddddddddaaaaa" +
                                "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasad2111111111111111ddddddddddddddddddddddddddddd1111111111111111aaaaa" +
                                "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa211111111111111dddddddddddddddddddddddddd1111111111111111111aaaaaa" +
                                "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa211111ddddddddddddddddddddddddddddddddddddd11111111111111111aaaaaaa" +
                                "sadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" +
                                "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddaaaaaaaa;}",
                Verb = MockApiHttpVerb.Post
            };
            var response = await AddApi(mockApi);

            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
        }
        protected override async Task <HttpResponseMessage> ExecuteInternal(HttpRequestMessage req)
        {
            // read and validate collection name
            var    routeData      = req.GetRouteData();
            string collectionName = string.Empty;

            if (routeData.Values != null && routeData.Values.ContainsKey("collectionName"))
            {
                collectionName = routeData.Values["collectionName"].ToString();
            }

            // read and validate mock api to be added
            var mockAPI = await req.Content.ReadAsAsync <MockApiResourceModel>();

            Validator.ValidateMockApiResource(mockAPI, languageBindingFactory);

            // add the mock api
            var response = await this.MockApiRepo.AddMockApiAsync(mockAPI.ToDomainModel(), collectionName);

            return(req.CreateResponse(HttpStatusCode.OK, MockApiResourceModel.FromDomainModel(response)));
        }