Exemple #1
0
        public void Constructor_SetsCopyOfHandlersFromApiBuilder()
        {
            var        apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());
            ApiHandler handler    = _ => Task.FromResult <ApiResponse>(null);

            apiBuilder.AddHandler("GET /a", handler);
            var apiSimulator = new ApiSimulator(apiBuilder);

            apiBuilder.AddHandler("GET /b", handler);

            apiSimulator.Settings.Handlers["GET /a"].ShouldBeSameAs(handler);
            apiSimulator.Settings.Handlers["GET /b"].ShouldBeNull();
        }
Exemple #2
0
        public void AddHandler2_Throws_WhenApiResponseNull()
        {
            var    apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());
            Action action     = () => apiBuilder.AddHandler("GET /x", (ApiResponse)null);

            action.ShouldThrow <ArgumentNullException>().ParamName.ShouldBe("response");
        }
Exemple #3
0
        public void AddHandler2_Throws_WhenActionNull()
        {
            var    apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());
            Action action     = () => apiBuilder.AddHandler(null, ApiResponse.Ok());

            action.ShouldThrow <ArgumentNullException>().ParamName.ShouldBe("action");
        }
Exemple #4
0
        public void AddHandler1_Throws_WhenHandlerNull()
        {
            var    apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());
            Action action     = () => apiBuilder.AddHandler("GET /x", (Func <HttpContext, ApiResponse>)null);

            action.ShouldThrow <ArgumentNullException>().ParamName.ShouldBe("handler");
        }
Exemple #5
0
        public void AddHandler_UpCasesHttpVerbInAction_WhenActionValid()
        {
            var apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());

            ApiBuilder self = apiBuilder.AddHandler("Get /", _ => null);

            self.Handlers["GET /"].ShouldNotBeNull();
            self.ShouldBeSameAs(apiBuilder);
        }
Exemple #6
0
        public async Task AddHandler2_AddsHandler()
        {
            var apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());

            apiBuilder.AddHandler("GET /z", new ApiResponse(303));

            ApiResponse response = await apiBuilder.Handlers["GET /z"](new DefaultHttpContext());

            response.StatusCode.ShouldBe(303);
        }
Exemple #7
0
        public void AddHandler_AddsHandler_WhenActionValid(string validAction)
        {
            var        apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());
            ApiHandler handler    = _ => null;

            ApiBuilder self = apiBuilder.AddHandler(validAction, handler);

            apiBuilder.Handlers.Single().ShouldBe(handler);
            apiBuilder.Handlers[validAction].ShouldBe(handler);
            self.ShouldBeSameAs(apiBuilder);
        }
Exemple #8
0
        public void AddHandler_Throws_WhenActionInvalid(string invalidAction)
        {
            var apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());

            Action action = () => apiBuilder.AddHandler(invalidAction, _ => null);

            ArgumentException exception = action.ShouldThrow <ArgumentException>();

            exception.ParamName.ShouldBe("action");
            exception.Message.ShouldStartWith(SR.Format(SR.ApiRouteInvalidAction, invalidAction));
        }
Exemple #9
0
        public async Task AddHandler3_AddsHandler()
        {
            var apiBuilder = new ApiBuilder(Substitute.For <ISimulation>());
            var context    = new DefaultHttpContext();

            context.Request.Method = "TO";
            context.Request.Path   = "/z/784";

            apiBuilder.AddHandler <int>("TO /z/{id}", (value, _) => ApiResponse.Ok($"Value={value}"));

            ApiResponse response = await apiBuilder.Handlers["TO /z/{id}"](context);

            response.StatusCode.ShouldBe(200);
            ((Body <string>)response.Body).Content.ShouldBe("Value=784");
        }
Exemple #10
0
        public void AddHandlerT_AddsHandler_WhenActionValid()
        {
            var apiBuilder  = new ApiBuilder(Substitute.For <ISimulation>());
            var apiResponse = new ApiResponse(401);
            var httpContext = new DefaultHttpContext();

            httpContext.Request.Method = "PUT";
            httpContext.Request.Path   = "/data/32";
            ApiHandler <int> handler = (_, __) => Task.FromResult(apiResponse);

            ApiBuilder self = apiBuilder.AddHandler("PUT /data/{id}", handler);

            apiBuilder.Handlers.Single()(httpContext).Result.ShouldBeSameAs(apiResponse);
            apiBuilder.Handlers["PUT /data/{id}"].ShouldNotBeNull();
            self.ShouldBeSameAs(apiBuilder);
        }