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(); }
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"); }
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"); }
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"); }
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); }
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); }
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); }
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)); }
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"); }
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); }