django-vue3-admin-web/node_modules/aws-crt/lib/common/aws_iot_shared.spec.ts
2025-10-20 21:21:14 +08:00

103 lines
3.7 KiB
TypeScript

/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
import * as iot_shared from "./aws_iot_shared";
jest.setTimeout(10000);
test('Aws IoT Mqtt5 Username Construction - No Custom Auth', async () => {
let finalUsername : string = iot_shared.buildMqtt5FinalUsername(undefined);
expect(finalUsername).toEqual(expect.stringContaining("?SDK=NodeJSv2&Version="));
});
test('Aws IoT Mqtt5 Username Construction - Empty custom auth', async () => {
let finalUsername : string = iot_shared.buildMqtt5FinalUsername({});
expect(finalUsername).toEqual(expect.stringContaining("?SDK=NodeJSv2&Version="));
});
test('Aws IoT Mqtt5 Username Construction - Simple username', async () => {
let finalUsername : string = iot_shared.buildMqtt5FinalUsername({
username: "Derp"
});
expect(finalUsername).toEqual(expect.stringContaining("Derp?SDK=NodeJSv2&Version="));
});
test('Aws IoT Mqtt5 Username Construction - Query param username', async () => {
let finalUsername : string = iot_shared.buildMqtt5FinalUsername({
username: "Derp?Param1=Value1"
});
expect(finalUsername).toEqual(expect.stringContaining("Derp?Param1=Value1&SDK=NodeJSv2&Version="));
});
test('Aws IoT Mqtt5 Username Construction - Authorizer Name', async () => {
let finalUsername : string = iot_shared.buildMqtt5FinalUsername({
username: "Hello",
authorizerName: "MyAuthorizer"
});
expect(finalUsername).toEqual(expect.stringContaining("Hello?x-amz-customauthorizer-name=MyAuthorizer&SDK=NodeJSv2&Version="));
});
test('Aws IoT Mqtt5 Username Construction - Token Signing', async () => {
let finalUsername : string = iot_shared.buildMqtt5FinalUsername({
username: "Hello",
authorizerName: "MyAuthorizer",
tokenKeyName: "MyToken",
tokenValue: "TheToken",
tokenSignature: "SignedToken"
});
expect(finalUsername).toEqual(expect.stringContaining("Hello?x-amz-customauthorizer-name=MyAuthorizer&MyToken=TheToken&x-amz-customauthorizer-signature=SignedToken&SDK=NodeJSv2&Version="));
});
test('Aws IoT Mqtt5 Username Construction Failure - Missing token key name', async () => {
let customAuthConfig : iot_shared.MqttConnectCustomAuthConfig = {
username: "Hello",
authorizerName: "MyAuthorizer",
tokenValue: "TheToken",
tokenSignature: "SignedToken"
};
expect(() => { return iot_shared.buildMqtt5FinalUsername(customAuthConfig); }).toThrow();
});
test('Aws IoT Mqtt5 Username Construction Failure - Missing token value', async () => {
let customAuthConfig : iot_shared.MqttConnectCustomAuthConfig = {
username: "Hello",
authorizerName: "MyAuthorizer",
tokenKeyName: "MyToken",
tokenSignature: "SignedToken"
};
expect(() => { return iot_shared.buildMqtt5FinalUsername(customAuthConfig); }).toThrow();
});
test('Aws IoT Mqtt5 Username Construction Failure - Missing token signature', async () => {
let customAuthConfig : iot_shared.MqttConnectCustomAuthConfig = {
username: "Hello",
authorizerName: "MyAuthorizer",
tokenKeyName: "MyToken",
tokenValue: "TheToken"
};
expect(() => { return iot_shared.buildMqtt5FinalUsername(customAuthConfig); }).toThrow();
});
test('Aws IoT Mqtt5 Username Construction Failure - bad query username', async () => {
let customAuthConfig : iot_shared.MqttConnectCustomAuthConfig = {
username: "Derp?Param1=Value1?What"
};
expect(() => { return iot_shared.buildMqtt5FinalUsername(customAuthConfig); }).toThrow();
});
test('Extract region from endpoint success', async () => {
expect(iot_shared.extractRegionFromEndpoint("blahblah-ats.iot.us-west-2.amazonaws.com")).toEqual("us-west-2");
});