public void OriginTest() { const string source = "CONNECT www.example.com:80 HTTP/1.1\r\n"; HttpRequestLine.TryParse(source, out var line); line.Source.Is(line.Source); line.GetOrigin().IsNot(line.GetOrigin()); }
public void BrokenRequestLineTest() { const string source = "hogeeeee\r\n"; var isSucceeded = HttpRequestLine.TryParse(source, out var line); isSucceeded.IsFalse(); line.Source.Is(source); line.ToString().Is(source); }
public void AsteriskFormTest() { const string source = "OPTIONS * HTTP/1.1\r\n"; HttpRequestLine.TryParse(source, out var line); line.Method.Is(HttpMethod.Options); line.HttpVersion.Is(HttpVersion.Version11); line.RequestTargetForm.Is(RequestTargetForm.AsteriskForm); line.RequestTarget.Is("*"); line.ToString().Is(source); }
public void AuthorityForm() { const string source = "CONNECT www.example.com:80 HTTP/1.1\r\n"; HttpRequestLine.TryParse(source, out var line); line.Method.Is(new HttpMethod("CONNECT")); line.HttpVersion.Is(HttpVersion.Version11); line.RequestTargetForm.Is(RequestTargetForm.AuthorityForm); line.RequestTarget.Is("www.example.com:80"); line.ToString().Is(source); }
public void AbsoluteFormTest() { const string source = "GET http://www.example.org/pub/WWW/TheProject.html HTTP/1.1\r\n"; HttpRequestLine.TryParse(source, out var line); line.Method.Is(HttpMethod.Get); line.HttpVersion.Is(HttpVersion.Version11); line.RequestTargetForm.Is(RequestTargetForm.AbsoluteForm); line.RequestTarget.Is("http://www.example.org/pub/WWW/TheProject.html"); line.ToString().Is(source); }
public void OriginFormTest() { const string source = "GET /where?q=now HTTP/1.1\r\n"; HttpRequestLine.TryParse(source, out var line); line.Method.Is(HttpMethod.Get); line.HttpVersion.Is(HttpVersion.Version11); line.RequestTargetForm.Is(RequestTargetForm.OriginForm); line.RequestTarget.Is("/where?q=now"); line.ToString().Is(source); }
/// <summary> /// スタートラインを解釈 /// </summary> /// <param name="startLine"></param> protected override void ParseStartLine(string startLine) { var isParseSucceeded = HttpRequestLine.TryParse(startLine, out var requestLine); this.RequestLine = requestLine; if (!isParseSucceeded) { Debug.WriteLine($"###start###{startLine}###end###"); throw new BadRequestException("Invalid Request Line", this.GetRequest()); } }
public void OriginTest() { const string lineSource = "GET / HTTP/1.1\r\n"; HttpRequestLine.TryParse(lineSource, out var line); var headers = HttpHeaders.Empty; headers.Host.Value = "example.com"; var request = new HttpRequest(line, headers, new byte[0], HttpHeaders.Empty); // Request 系は BadRequest への対処として Source プロパティを持つ request.Source.Is(request.Source); request.GetOrigin().IsNot(request.GetOrigin()); }
public void GetOriginTest() { const string lineSource = "GET / HTTP/1.1\r\n"; HttpRequestLine.TryParse(lineSource, out var line); HttpHeaders.TryParse("Host: example.com\r\n", out var headers); headers.Host.Value = "example2.com"; var request = new HttpRequest(line, headers, new byte[0], HttpHeaders.Empty); request.GetOrigin().ToString().Is( @"GET / HTTP/1.1 Host: example.com "); }
public void ChangeRequestTargetTest() { const string lineSource = "GET /hoge?fuga=piyo HTTP/1.1\r\n"; HttpRequestLine.TryParse(lineSource, out var line); HttpHeaders.TryParse("Host: example.com\r\n", out var headers); var request = new HttpRequest(line, headers, new byte[0], HttpHeaders.Empty); request.RequestTargetUri.ToString().Is("http://example.com/hoge?fuga=piyo"); request.RequestLine.RequestTargetForm.Is(RequestTargetForm.OriginForm); request.ChangeRequestTarget("http://absolute.example.com/hoge?fuga=piyo"); request.RequestTargetUri.ToString().Is("http://absolute.example.com/hoge?fuga=piyo"); request.RequestLine.RequestTargetForm.Is(RequestTargetForm.AbsoluteForm); }
public void HeadersAsByteTest() { const string lineSource = "GET / HTTP/1.1\r\n"; HttpRequestLine.TryParse(lineSource, out var line); var headers = HttpHeaders.Empty; headers.Host.Value = "example.com"; var request = new HttpRequest(line, headers, new byte[0], HttpHeaders.Empty); request.HeadersAsByte().Is(Encoding.ASCII.GetBytes( @"GET / HTTP/1.1 Host: example.com ")); }
public void CreateOptionsInstanceTest() { const string lineSource = "OPTIONS * HTTP/1.1\r\n"; HttpRequestLine.TryParse(lineSource, out var line); var headers = HttpHeaders.Empty; headers.Host.Value = "example.com"; var request = new HttpRequest(line, headers, new byte[0], HttpHeaders.Empty); request.ToString().Is( @"OPTIONS * HTTP/1.1 Host: example.com "); request.RequestTargetUri.ToString().Is("*"); request.RequestLine.RequestTargetForm.Is(RequestTargetForm.AsteriskForm); }
public void CreateConnectInstanceTest() { const string lineSource = "CONNECT authority.example.com:8443 HTTP/1.1\r\n"; HttpRequestLine.TryParse(lineSource, out var line); var headers = HttpHeaders.Empty; headers.Host.Value = "authority.example.com"; var request = new HttpRequest(line, headers, new byte[0], HttpHeaders.Empty); request.ToString().Is( @"CONNECT authority.example.com:8443 HTTP/1.1 Host: authority.example.com "); request.RequestTargetUri.ToString().Is("https://authority.example.com:8443/"); request.RequestLine.RequestTargetForm.Is(RequestTargetForm.AuthorityForm); }
public void CreateInstanceTest() { const string lineSource = "GET / HTTP/1.1\r\n"; HttpRequestLine.TryParse(lineSource, out var line); var headers = HttpHeaders.Empty; headers.Host.Value = "example.com"; var request = new HttpRequest(line, headers, new byte[0], HttpHeaders.Empty); request.ToString().Is( @"GET / HTTP/1.1 Host: example.com "); request.RequestTargetUri.ToString().Is("http://example.com/"); request.RequestLine.RequestTargetForm.Is(RequestTargetForm.OriginForm); }