mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
tests/unittests: nanocoap: add test for extended token
This commit is contained in:
parent
660c77e2c3
commit
c01c470e8f
@ -1 +1,2 @@
|
|||||||
USEMODULE += nanocoap
|
USEMODULE += nanocoap
|
||||||
|
USEMODULE += nanocoap_token_ext
|
||||||
|
@ -1035,13 +1035,13 @@ static void test_nanocoap__add_get_proxy_uri(void)
|
|||||||
*/
|
*/
|
||||||
static void test_nanocoap__token_length_over_limit(void)
|
static void test_nanocoap__token_length_over_limit(void)
|
||||||
{
|
{
|
||||||
/* RFC7252 states that TKL must be within 0-8:
|
/* RFC8974 states that TKL must not be 15:
|
||||||
* "Lengths 9-15 are reserved, MUST NOT be sent,
|
* 15: Reserved. This value MUST NOT be sent and MUST be processed
|
||||||
* and MUST be processed as a message format error."
|
* as a message-format error.
|
||||||
*/
|
*/
|
||||||
uint16_t msgid = 0xABCD;
|
uint16_t msgid = 0xABCD;
|
||||||
uint8_t buf_invalid[] = {
|
uint8_t buf_invalid[] = {
|
||||||
0x49, 0x01, 0xAB, 0xCD,
|
0x4F, 0x01, 0xAB, 0xCD,
|
||||||
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99
|
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99
|
||||||
};
|
};
|
||||||
uint8_t buf_valid[] = {
|
uint8_t buf_valid[] = {
|
||||||
@ -1059,11 +1059,64 @@ static void test_nanocoap__token_length_over_limit(void)
|
|||||||
TEST_ASSERT_EQUAL_INT(8, coap_get_token_len(&pkt));
|
TEST_ASSERT_EQUAL_INT(8, coap_get_token_len(&pkt));
|
||||||
TEST_ASSERT_EQUAL_INT(0, pkt.payload_len);
|
TEST_ASSERT_EQUAL_INT(0, pkt.payload_len);
|
||||||
|
|
||||||
/* Invalid packet (TKL = 9) */
|
/* Invalid packet (TKL = 15) */
|
||||||
res = coap_parse(&pkt, buf_invalid, sizeof(buf_invalid));
|
res = coap_parse(&pkt, buf_invalid, sizeof(buf_invalid));
|
||||||
TEST_ASSERT_EQUAL_INT(-EBADMSG, res);
|
TEST_ASSERT_EQUAL_INT(-EBADMSG, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verifies that coap_parse() recognizes 8 bit extended token length
|
||||||
|
*/
|
||||||
|
static void test_nanocoap__token_length_ext_16(void)
|
||||||
|
{
|
||||||
|
const char *token = "0123456789ABCDEF";
|
||||||
|
|
||||||
|
uint8_t buf[32];
|
||||||
|
coap_hdr_t *hdr = (void *)buf;
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_INT(21, coap_build_hdr(hdr, COAP_TYPE_CON,
|
||||||
|
(void *)token, strlen(token),
|
||||||
|
COAP_CODE_204, 23));
|
||||||
|
coap_pkt_t pkt;
|
||||||
|
int res = coap_parse(&pkt, buf, 21);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, res);
|
||||||
|
TEST_ASSERT_EQUAL_INT(204, coap_get_code(&pkt));
|
||||||
|
TEST_ASSERT_EQUAL_INT(23, coap_get_id(&pkt));
|
||||||
|
TEST_ASSERT_EQUAL_INT(strlen(token), coap_get_token_len(&pkt));
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, memcmp(coap_get_token(&pkt), token, strlen(token)));
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, pkt.payload_len);
|
||||||
|
TEST_ASSERT_EQUAL_INT(13, hdr->ver_t_tkl & 0xf);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verifies that coap_parse() recognizes 16 bit extended token length
|
||||||
|
*/
|
||||||
|
static void test_nanocoap__token_length_ext_269(void)
|
||||||
|
{
|
||||||
|
const char *token = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr,"
|
||||||
|
"sed diam nonumy eirmod tempor invidunt ut labore et dolore"
|
||||||
|
"magna aliquyam erat, sed diam voluptua. At vero eos et accusam"
|
||||||
|
"et justo duo dolores et ea rebum. Stet clita kasd gubergren,"
|
||||||
|
"no sea takimata sanctus est Lore.";
|
||||||
|
uint8_t buf[280];
|
||||||
|
coap_hdr_t *hdr = (void *)buf;
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_INT(275, coap_build_hdr(hdr, COAP_TYPE_CON,
|
||||||
|
(void *)token, strlen(token),
|
||||||
|
COAP_CODE_204, 23));
|
||||||
|
coap_pkt_t pkt;
|
||||||
|
int res = coap_parse(&pkt, buf, 275);
|
||||||
|
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, res);
|
||||||
|
TEST_ASSERT_EQUAL_INT(204, coap_get_code(&pkt));
|
||||||
|
TEST_ASSERT_EQUAL_INT(23, coap_get_id(&pkt));
|
||||||
|
TEST_ASSERT_EQUAL_INT(strlen(token), coap_get_token_len(&pkt));
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, memcmp(coap_get_token(&pkt), token, strlen(token)));
|
||||||
|
TEST_ASSERT_EQUAL_INT(0, pkt.payload_len);
|
||||||
|
TEST_ASSERT_EQUAL_INT(14, hdr->ver_t_tkl & 0xf);
|
||||||
|
}
|
||||||
|
|
||||||
Test *tests_nanocoap_tests(void)
|
Test *tests_nanocoap_tests(void)
|
||||||
{
|
{
|
||||||
EMB_UNIT_TESTFIXTURES(fixtures) {
|
EMB_UNIT_TESTFIXTURES(fixtures) {
|
||||||
@ -1100,6 +1153,8 @@ Test *tests_nanocoap_tests(void)
|
|||||||
new_TestFixture(test_nanocoap__add_path_unterminated_string),
|
new_TestFixture(test_nanocoap__add_path_unterminated_string),
|
||||||
new_TestFixture(test_nanocoap__add_get_proxy_uri),
|
new_TestFixture(test_nanocoap__add_get_proxy_uri),
|
||||||
new_TestFixture(test_nanocoap__token_length_over_limit),
|
new_TestFixture(test_nanocoap__token_length_over_limit),
|
||||||
|
new_TestFixture(test_nanocoap__token_length_ext_16),
|
||||||
|
new_TestFixture(test_nanocoap__token_length_ext_269),
|
||||||
};
|
};
|
||||||
|
|
||||||
EMB_UNIT_TESTCALLER(nanocoap_tests, NULL, NULL, fixtures);
|
EMB_UNIT_TESTCALLER(nanocoap_tests, NULL, NULL, fixtures);
|
||||||
|
Loading…
Reference in New Issue
Block a user