@@ -65,3 +65,77 @@ describe('trailer headers', () => {
65
65
} )
66
66
} )
67
67
} )
68
+
69
+ describe ( 'error handling' , ( ) => {
70
+ it ( 'should handle plain text error response' , function ( done ) {
71
+ if ( ! isNode ) return this . skip ( )
72
+
73
+ const server = require ( 'http' ) . createServer ( ( req , res ) => {
74
+ // Consume the entire request, before responding.
75
+ req . on ( 'data' , ( ) => { } )
76
+ req . on ( 'end' , ( ) => {
77
+ // Write a text/plain response with a 403 (forbidden) status
78
+ res . writeHead ( 403 , { 'Content-Type' : 'text/plain' } )
79
+ res . write ( 'ipfs method not allowed' )
80
+ res . end ( )
81
+ } )
82
+ } )
83
+
84
+ server . listen ( 6001 , ( ) => {
85
+ ipfsClient ( '/ip4/127.0.0.1/tcp/6001' ) . config . replace ( 'test/fixtures/r-config.json' , ( err ) => {
86
+ expect ( err ) . to . exist ( )
87
+ expect ( err . statusCode ) . to . equal ( 403 )
88
+ expect ( err . message ) . to . equal ( 'ipfs method not allowed' )
89
+ server . close ( done )
90
+ } )
91
+ } )
92
+ } )
93
+
94
+ it ( 'should handle JSON error response' , function ( done ) {
95
+ if ( ! isNode ) return this . skip ( )
96
+
97
+ const server = require ( 'http' ) . createServer ( ( req , res ) => {
98
+ // Consume the entire request, before responding.
99
+ req . on ( 'data' , ( ) => { } )
100
+ req . on ( 'end' , ( ) => {
101
+ // Write a application/json response with a 400 (bad request) header
102
+ res . writeHead ( 400 , { 'Content-Type' : 'application/json' } )
103
+ res . write ( JSON . stringify ( { Message : 'client error' , Code : 1 } ) )
104
+ res . end ( )
105
+ } )
106
+ } )
107
+
108
+ server . listen ( 6001 , ( ) => {
109
+ ipfsClient ( '/ip4/127.0.0.1/tcp/6001' ) . config . replace ( 'test/fixtures/r-config.json' , ( err ) => {
110
+ expect ( err ) . to . exist ( )
111
+ expect ( err . statusCode ) . to . equal ( 400 )
112
+ expect ( err . message ) . to . equal ( 'client error' )
113
+ expect ( err . code ) . to . equal ( 1 )
114
+ server . close ( done )
115
+ } )
116
+ } )
117
+ } )
118
+
119
+ it ( 'should handle JSON error response with invalid JSON' , function ( done ) {
120
+ if ( ! isNode ) return this . skip ( )
121
+
122
+ const server = require ( 'http' ) . createServer ( ( req , res ) => {
123
+ // Consume the entire request, before responding.
124
+ req . on ( 'data' , ( ) => { } )
125
+ req . on ( 'end' , ( ) => {
126
+ // Write a application/json response with a 400 (bad request) header
127
+ res . writeHead ( 400 , { 'Content-Type' : 'application/json' } )
128
+ res . write ( '{ Message: ' )
129
+ res . end ( )
130
+ } )
131
+ } )
132
+
133
+ server . listen ( 6001 , ( ) => {
134
+ ipfsClient ( '/ip4/127.0.0.1/tcp/6001' ) . config . replace ( 'test/fixtures/r-config.json' , ( err ) => {
135
+ expect ( err ) . to . exist ( )
136
+ expect ( err . message ) . to . include ( 'Invalid JSON' )
137
+ server . close ( done )
138
+ } )
139
+ } )
140
+ } )
141
+ } )
0 commit comments