-
Notifications
You must be signed in to change notification settings - Fork 534
/
MessageAttributes.test.ts
79 lines (71 loc) · 2.93 KB
/
MessageAttributes.test.ts
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
/*
* Copyright The OpenTelemetry Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import * as expect from 'expect';
import {
MAX_MESSAGE_ATTRIBUTES,
contextSetter,
injectPropagationContext,
} from '../src/services/MessageAttributes';
describe('MessageAttributes', () => {
describe('MAX_MESSAGE_ATTRIBUTES', () => {
it('should be 10', () => {
expect(MAX_MESSAGE_ATTRIBUTES).toBe(10);
});
});
describe('contextSetter', () => {
it('should set parent context in sqs receive callback', () => {
const contextKey = 'key';
const contextValue = 'value';
const contextCarrier = {};
contextSetter.set(contextCarrier, contextKey, contextValue);
const expectedContext = {
[contextKey]: { DataType: 'String', StringValue: contextValue },
};
expect(contextCarrier).toStrictEqual(expectedContext);
});
});
describe('injectPropagationContext', () => {
it('should inject context if there are available attributes', () => {
const contextAttributes = {
key1: { DataType: 'String', StringValue: 'value1' },
key2: { DataType: 'String', StringValue: 'value2' },
key3: { DataType: 'String', StringValue: 'value3' },
key4: { DataType: 'String', StringValue: 'value4' },
key5: { DataType: 'String', StringValue: 'value5' },
};
expect(Object.keys(contextAttributes).length).toBe(5);
injectPropagationContext(contextAttributes);
expect(Object.keys(contextAttributes).length).toBeGreaterThan(5);
});
it('should not inject context if there not enough available attributes', () => {
const contextAttributes = {
key1: { DataType: 'String', StringValue: 'value1' },
key2: { DataType: 'String', StringValue: 'value2' },
key3: { DataType: 'String', StringValue: 'value3' },
key4: { DataType: 'String', StringValue: 'value4' },
key5: { DataType: 'String', StringValue: 'value5' },
key6: { DataType: 'String', StringValue: 'value6' },
key7: { DataType: 'String', StringValue: 'value7' },
key8: { DataType: 'String', StringValue: 'value8' },
key9: { DataType: 'String', StringValue: 'value9' },
key10: { DataType: 'String', StringValue: 'value10' },
};
expect(Object.keys(contextAttributes).length).toBe(10);
injectPropagationContext(contextAttributes);
expect(Object.keys(contextAttributes).length).toBe(10);
});
});
});