public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestMessage req, TraceWriter log) { try { log.Info("C# HTTP trigger function processed a request."); var data = await RequestDecoder.Decode <SessionCreatePostModel>(req); try { var jwt = Jwt.Decode(data.password); if (jwt.subject != data.username) { throw new Exception("Username/JWT-subject mismatch"); } } catch { throw new HttpResponseException(req.CreateErrorResponse(HttpStatusCode.Forbidden, "Forbidden")); } var response = new SessionResponseModel { id = Guid.NewGuid().ToString("N"), username = data.username }; return(req.CreateResponse(HttpStatusCode.OK, response)); } catch (HttpResponseException error) { return(error.Response); } }
public void TestDecodeRequest() { object result = null; var mockDecoder = new Mock <IDecoder <IByteBuffer> >(); mockDecoder.Setup(i => i.DecodeRequest(It.IsAny <IByteBuffer>())) .Returns <IByteBuffer>(i => { i.ReadBytes(1); i.MarkReaderIndex(); return(new Request()); }); var context = new Mock <IChannelHandlerContext>(); context.Setup(i => i.FireChannelRead(It.IsAny <object>())) .Callback <object>(i => result = i); var reqDecoder = new RequestDecoder(mockDecoder.Object); reqDecoder.ChannelRead(context.Object, Unpooled.WrappedBuffer(new byte[] { 3 })); Assert.NotNull(result); Assert.IsType <Request>(result); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestMessage req, TraceWriter log) { try { log.Info("C# HTTP trigger function processed a request."); var data = await RequestDecoder.Decode <TokenCreatePostModel>(req); var response = new TokenResponseModel { id = data.email, name = GetName(data.email), iconURL = Gravatar.GetImageUrl(data.email), password = new Jwt(data.email).Encode() }; return(req.CreateResponse(HttpStatusCode.OK, response)); } catch (HttpResponseException error) { return(error.Response); } }