diff --git a/js_request_body.t b/js_request_body.t
new file mode 100644
index 0000000..4264203
--- /dev/null
+++ b/js_request_body.t
@@ -0,0 +1,118 @@
+#!/usr/bin/perl
+
+# (C) Dmitry Volyntsev.
+# (C) Nginx, Inc.
+
+# Tests for http JavaScript module, req.body method.
+
+###############################################################################
+
+use warnings;
+use strict;
+
+use Test::More;
+
+use Socket qw/ CRLF /;
+
+BEGIN { use FindBin; chdir($FindBin::Bin); }
+
+use lib 'lib';
+use Test::Nginx;
+
+###############################################################################
+
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+my $t = Test::Nginx->new()->has(qw/http/)
+	->write_file_expand('nginx.conf', <<'EOF');
+
+%%TEST_GLOBALS%%
+
+daemon off;
+
+events {
+}
+
+http {
+    %%TEST_GLOBALS_HTTP%%
+
+    js_include test.js;
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  localhost;
+
+        location /njs {
+            js_content test_njs;
+        }
+
+        location /body {
+            js_content test_body;
+        }
+
+        location /in_file {
+            client_body_in_file_only on;
+            js_content test_body;
+        }
+    }
+}
+
+EOF
+
+$t->write_file('test.js', <<EOF);
+    function test_njs(req, res) {
+        res.return(200, njs.version);
+    }
+
+    function test_body(req) {
+        try {
+            var body = req.body;
+            req.response.return(200, body);
+
+        } catch (e) {
+            req.response.return(500, e.message);
+        }
+    }
+
+EOF
+
+$t->try_run('no njs request body')->plan(3);
+
+###############################################################################
+
+TODO: {
+local $TODO = 'not yet'
+		unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.2.1';
+like(http_post('/body'), qr/REQ-BODY/, 'request body');
+like(http_post('/in_file'), qr/request body is in a file/,
+	'request body in file');
+like(http_post_big('/body'), qr/200.*^(1234567890){1024}$/ms,
+		'request body big');
+}
+
+###############################################################################
+
+sub http_post {
+	my ($url, %extra) = @_;
+
+	my $p = "POST $url HTTP/1.0" . CRLF .
+		"Host: localhost" . CRLF .
+		"Content-Length: 8" . CRLF .
+		CRLF .
+		"REQ-BODY";
+
+	return http($p, %extra);
+}
+
+sub http_post_big {
+	my ($url, %extra) = @_;
+
+	my $p = "POST $url HTTP/1.0" . CRLF .
+		"Host: localhost" . CRLF .
+		"Content-Length: 10240" . CRLF .
+		CRLF .
+		("1234567890" x 1024);
+
+	return http($p, %extra);
+}
