« index

Coverage for /Users/yunong/workspace/node-restify/test/fieldedTextParser.test.js : 96%

133 lines | 129 run | 4 missing | 0 partial | 19 blocks | 17 blocks run | 2 blocks missing

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

  /**
   * Module dependencies
   */
  
  if (require.cache[__dirname + '/lib/helper.js']) {
      delete require.cache[__dirname + '/lib/helper.js'];
  }
  
  var restify = require('../lib');
  var fs = require('fs');
  var helper = require('./lib/helper.js');
  var before = helper.before;
  var after = helper.after;
  var test = helper.test;
  
  /**
   * Globals
   */
  
  var fsOptions = { encoding: 'utf8' };
  
  var PORT = process.env.UNIT_TEST_PORT || 3333;
  var CLIENT;
  var SERVER;
  var DATA_CSV = fs.readFileSync(__dirname + '/files/data-csv.txt', fsOptions);
  var DATA_TSV = fs.readFileSync(__dirname + '/files/data-tsv.txt', fsOptions);
  var OBJECT_CSV = require(__dirname + '/files/object-csv.json');
  var OBJECT_TSV = require(__dirname + '/files/object-tsv.json');
  
  /**
   * Tests
   */
  
  before(function (callback) {
      try {
          SERVER = restify.createServer({
              dtrace: helper.dtrace,
              log: helper.getLog('server')
          });
          SERVER.use(restify.acceptParser(SERVER.acceptable));
          SERVER.use(restify.authorizationParser());
          SERVER.use(restify.dateParser());
          SERVER.use(restify.queryParser());
          SERVER.use(restify.bodyParser());
          SERVER.post('/data', function respond(req, res, next) {
              res.send({
                  status: 'okay',
                  parsedReq: req.body
              });
              return (next());
          });
          SERVER.listen(PORT, '127.0.0.1', function () {
              CLIENT = restify.createClient({
                  url: 'http://127.0.0.1:' + PORT,
                  dtrace: helper.dtrace,
                  retry: false,
                  agent: false
              });
              callback();
          });
      } catch (e) {
          console.error(e.stack);
          process.exit(1);
      }
  });
  
  after(function (callback) {
      try {
          CLIENT.close();
          SERVER.close(callback);
      } catch (e) {
          console.error(e.stack);
          process.exit(1);
      }
  });
  
  test('Parse CSV body', function (t) {
      var options = {
          path: '/data',
          headers: {
              'Content-Type': 'text/csv'
          }
      };
      CLIENT.post(options, function (err, req) {
          t.ifError(err);
          req.on('result', function (errReq, res) {
              t.ifError(errReq);
              res.body = '';
              res.setEncoding('utf8');
              res.on('data', function (chunk) {
                  res.body += chunk;
              });
              res.on('end', function () {
                  res.body = JSON.parse(res.body);
                  var parsedReqStr = JSON.stringify(res.body.parsedReq);
                  var objectStr = JSON.stringify(OBJECT_CSV);
                  t.equal(parsedReqStr, objectStr);
                  t.end();
              });
          });
          req.write(DATA_CSV);
          req.end();
      });
  });
  
  test('Parse TSV body', function (t) {
      var options = {
          path: '/data',
          headers: {
              'Content-Type': 'text/tsv'
          }
      };
      CLIENT.post(options, function (err, req) {
          t.ifError(err);
          req.on('result', function (errReq, res) {
              t.ifError(errReq);
              res.body = '';
              res.setEncoding('utf8');
              res.on('data', function (chunk) {
                  res.body += chunk;
              });
              res.on('end', function () {
                  res.body = JSON.parse(res.body);
                  var parsedReqStr = JSON.stringify(res.body.parsedReq);
                  var objectStr = JSON.stringify(OBJECT_TSV);
                  t.equal(parsedReqStr, objectStr);
                  t.end();
              });
          });
          req.write(DATA_TSV);
          req.end();
      });
  });
« index | cover.io