« index

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

115 lines | 111 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

  // Copyright 2012 Mark Cavage, Inc.  All rights reserved.
  
  var assert = require('assert-plus');
  
  var restify = require('../lib');
  
  if (require.cache[__dirname + '/lib/helper.js'])
      delete require.cache[__dirname + '/lib/helper.js'];
  var helper = require('./lib/helper.js');
  
  
  ///--- Globals
  
  var after = helper.after;
  var before = helper.before;
  var test = helper.test;
  
  var PORT = process.env.UNIT_TEST_PORT || 0;
  var CLIENT;
  var SERVER;
  
  var isFirstRequest = true;
  
  
  ///--- Tests
  
  before(function (callback) {
      try {
          SERVER = restify.createServer({
              formatters: {
                  'text/plain': function (req, res, body, cb) {
                      if (isFirstRequest) {
                          process.nextTick(function () {
                              isFirstRequest = false;
                              cb(null, 'async fmt');
                          });
                          return (this);
                      }
  
                      return ('sync fmt');
                  },
                  'application/foo; q=0.9': function () {
                      return ('foo!');
                  }
              },
              dtrace: helper.dtrace,
              log: helper.getLog('server'),
              version: ['2.0.0', '0.5.4', '1.4.3']
          });
          SERVER.listen(PORT, '127.0.0.1', function () {
              PORT = SERVER.address().port;
              CLIENT = restify.createStringClient({
                  url: 'http://127.0.0.1:' + PORT,
                  dtrace: helper.dtrace,
                  retry: false,
                  agent: false
              });
              SERVER.get('/tmp', function (req, res) {
                  res.send('dummy response');
              });
              process.nextTick(callback);
          });
      } catch (e) {
          console.error(e.stack);
          process.exit(1);
      }
  });
  
  
  after(function (callback) {
      try {
          SERVER.close(callback);
      } catch (e) {
          console.error(e.stack);
          process.exit(1);
      }
  });
  
  
  test('async formatter', function (t) {
      CLIENT.get('/tmp', function (err, req, res, data) {
          t.ifError(err);
          t.ok(req);
          t.ok(res);
          t.equal(data, 'async fmt');
          t.end();
      });
  });
  
  test('sync formatter', function (t) {
      CLIENT.get('/tmp', function (err, req, res, data) {
          t.ifError(err);
          t.ok(req);
          t.ok(res);
          t.equal(data, 'sync fmt');
          t.end();
      });
  });
  
  
  test('q-val priority', function (t) {
      var opts = {
          path: '/tmp',
          headers: {
              accept: 'application/*'
          }
      };
      CLIENT.get(opts, function (err, req, res, data) {
          t.ifError(err);
          t.ok(req);
          t.ok(res);
          t.equal(data, 'foo!');
          t.end();
      });
  });
« index | cover.io