comparison stream_js_import.t @ 1562:b4f528987146

Tests: added js_import tests.
author Dmitry Volyntsev <xeioex@nginx.com>
date Tue, 14 Apr 2020 12:14:47 +0000
parents
children f3ba4c74de31
comparison
equal deleted inserted replaced
1561:75fb32094392 1562:b4f528987146
1 #!/usr/bin/perl
2
3 # (C) Dmitry Volyntsev
4 # (C) Nginx, Inc.
5
6 # Tests for stream njs module, js_import directive.
7
8 ###############################################################################
9
10 use warnings;
11 use strict;
12
13 use Test::More;
14
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
16
17 use lib 'lib';
18 use Test::Nginx;
19 use Test::Nginx::Stream qw/ stream /;
20
21 ###############################################################################
22
23 select STDERR; $| = 1;
24 select STDOUT; $| = 1;
25
26 my $t = Test::Nginx->new()->has(qw/http stream stream_return/)
27 ->write_file_expand('nginx.conf', <<'EOF');
28
29 %%TEST_GLOBALS%%
30
31 daemon off;
32
33 events {
34 }
35
36 stream {
37 js_set $test foo.bar.p;
38
39 js_import lib.js;
40 js_import foo from ./main.js;
41
42 server {
43 listen 127.0.0.1:8081;
44 return $test;
45 }
46
47 server {
48 listen 127.0.0.1:8082;
49 js_access lib.access;
50 js_preread lib.preread;
51 js_filter lib.filter;
52 proxy_pass 127.0.0.1:8083;
53 }
54
55 server {
56 listen 127.0.0.1:8083;
57 return "x";
58 }
59 }
60
61 EOF
62
63 $t->write_file('lib.js', <<EOF);
64 var res = '';
65
66 function access(s) {
67 res += '1';
68 s.allow();
69 }
70
71 function preread(s) {
72 s.on('upload', function (data) {
73 res += '2';
74 if (res.length >= 3) {
75 s.done();
76 }
77 });
78 }
79
80 function filter(s) {
81 s.on('upload', function(data, flags) {
82 s.send(data);
83 res += '3';
84 });
85
86 s.on('download', function(data, flags) {
87 if (!flags.last) {
88 res += '4';
89 s.send(data);
90
91 } else {
92 res += '5';
93 s.send(res, {last:1});
94 s.off('download');
95 }
96 });
97 }
98
99 export default {access, preread, filter};
100
101 EOF
102
103 $t->write_file('main.js', <<EOF);
104 export default {bar: {p(s) {return "P-TEST"}}};
105
106 EOF
107
108 $t->try_run('no njs available')->plan(2);
109
110 ###############################################################################
111
112 is(stream('127.0.0.1:' . port(8081))->read(), 'P-TEST', 'foo.bar.p');
113 is(stream('127.0.0.1:' . port(8082))->io('0'), 'x122345', 'lib.access');
114
115 ###############################################################################