-
Notifications
You must be signed in to change notification settings - Fork 11
/
core-016-unexpected-rst.js
67 lines (54 loc) · 2.05 KB
/
core-016-unexpected-rst.js
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
/*
Handle an unexpected reset response to a confirmable GET request:
1. Client sends a request:
==============================================================================
Version | Type | Token Length | Code | Message ID
0 1 | 0 1 | 0 0 0 0 | 0 0 0 0 0 0 0 1 | 0x0001
1 | NON | 0 bytes | GET | 1
------------------------------------------------------------------------------
Remote Endpoint: 127.0.0.1
------------------------------------------------------------------------------
Uri-Path: reject
==============================================================================
2. Client loses its state (it's destroyed and reinitialized).
3. Server receives the request but rejects it:
==============================================================================
Version | Type | Token Length | Code | Message ID
0 1 | 1 1 | 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0x0001
1 | RST | 0 bytes | Empty | 1
------------------------------------------------------------------------------
Remote Endpoint: 127.0.0.1
==============================================================================
4. Client receives the RST and ignores it as it doesn't match anything.
*/
'use strict';
var sinon = require('sinon');
var helpers = require('../helpers');
var coap = require(helpers.LIB_DIR);
var Message = coap.Message;
helpers.test(__filename, function(ctx)
{
var expectedRequest = {
type: Message.Type.NON,
code: Message.Code.GET,
id: 0x0001,
token: new Buffer([]),
uri: '/reject'
};
var expectedResponse = {
type: Message.Type.RST,
code: Message.Code.EMPTY,
id: 0x0001
};
ctx.socket.expectRequest(expectedRequest);
ctx.socket.scheduleResponse(50, expectedResponse);
var req = ctx.client.request(Message.fromObject(expectedRequest));
var eventSpy = sinon.spy(req, 'emit');
setTimeout(ctx.reinitializeClient, 25);
ctx.clock.tick(3600000);
return function assert()
{
ctx.socket.assert();
sinon.assert.notCalled(eventSpy);
};
});