doku-nodejs-library
Version:
131 lines (113 loc) • 6.17 kB
JavaScript
const Snap = require("../_modules/snap");
const TokenController = require('../_controllers/tokenController');
jest.mock('../_controllers/tokenController');
describe('Get Token B2B', () => {
let snap;
let privateKey = `-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCvuA0S+R8RGEoT
xZYfksdNam3/iNrKzY/RqGbN4Gf0juIN8XnUM8dGv4DVqmXQwRMMeQ3N/Y26pMDJ
1v/i6E5BwWasBAveSk7bmUBQYMURzxrvBbvfRNvIwtYDa+cx39HamfiYYOHq4hZV
S6G2m8SqDEhONxhHQmEP9FPHSOjPQWKSlgxrT3BKI9ESpQofcxKRX3hyfh6MedWT
lZpXUJrI9bd6Azg3Fd5wpfHQlLcKSR8Xr2ErH7dNS4I21DTHR+6qx02Tocv5D30O
DamA6yG9hxnFERLVE+8GnJE52Yjjsm5otGRwjHS4ngSShc/Ak1ZyksaCTFl0xEwT
J1oeESffAgMBAAECggEAHv9fxw4NTe2z+6LqZa113RE+UEqrFgWHLlv/rqe8jua5
t+32KNnteGyF5KtHhLjajGO6bLEi1F8F51U3FKcYTv84BnY8Rb1kBdcWAlffy9F2
Fd40EyHJh7PfHwFk6mZqVZ69vNuyXsX9XJSX9WerHLhH9QxBCykJiE/4i3owH4dF
Cd/7ervsP32ukGY3rs/mdcO8ThAWffF5QyGd/A3NMf8jRCZ3FwYfEPrgaj9IHV2f
UrwgVc7JqQaCJTvvjrm4Epjp+1mca036eoDj40H+ImF9qQ80jZee/vvqRXjfU5Qx
ys/MHD6S2aGEG5N5VnEuHLHvT51ytTpKA+mAY/armQKBgQDrQVtS8dlfyfnPLRHy
p8snF/hpqQQF2k1CDBJTaHfNXG37HlccGzo0vreFapyyeSakCdA3owW7ET8DBiO5
WN2Qgb7Vab/7vEiGltK4YU/62+g4F0LjWPp25wnbVj81XXW95QrWKjytjU/tgO2p
h47qr8C+3HqMPj1pQ5tcKpJXCwKBgQC/Nrkn0kT+u4KOxXix5RkRDxwfdylCvuKc
3EfMHFs4vELi1kOhwXEbVTIsbFpTmsXclofqZvjkhepeu9CM6PN2T852hOaI+1Wo
4v57UTW/nkpyo8FZ09PtBvOau5B6FpQU0uaKWrZ0dX/f0aGbQKUxJnFOq++7e7mi
IBfX1QCm/QKBgHtVWkFT1XgodTSuFji2ywSFxo/uMdO3rMUxevILVLNu/6GlOFnd
1FgOnDvvtpLCfQWGt4hTiQ+XbQdy0ou7EP1PZ/KObD3XadZVf8d2DO4hF89AMqrp
3PU1Dq/UuXKKus2BJHs+zWzXJs4Gx5IXJU/YMB5fjEe14ZAsB2j8UJgdAoGANjuz
MFQ3NXjBgvUHUo2EGo6Kj3IgxcmWRJ9FzeKNDP54ihXzgMF47yOu42KoC+ZuEC6x
xg4Gseo5mzzx3cWEqB3ilUMEj/2ZQhl/zEIwWHTw8Kr5gBzQkv3RwiVIyRf2UCGx
ObSY41cgOb8fcwVW1SXuJT4m9KoW8KDholnLoZECgYEAiNpTvvIGOoP/QT8iGQkk
r4GK50j9BoPSJhiM6k236LSc5+iZRKRVUCFEfyMPx6AY+jD2flfGxUv2iULp92XG
2eE1H6V1gDZ4JJw3s5847z4MNW3dj9nIi2bpFssnmoS5qP2IpmJW0QQmRmJZ8j2j
OrzKGlO90/6sNzIDd2DbRSM=
-----END PRIVATE KEY-----`
let clientID = 'BRN-0221-1693209567392'
let publicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr7gNEvkfERhKE8WWH5LHTWpt/4jays2P0ahmzeBn9I7iDfF51DPHRr+A1apl0METDHkNzf2NuqTAydb/4uhOQcFmrAQL3kpO25lAUGDFEc8a7wW730TbyMLWA2vnMd/R2pn4mGDh6uIWVUuhtpvEqgxITjcYR0JhD/RTx0joz0FikpYMa09wSiPREqUKH3MSkV94cn4ejHnVk5WaV1CayPW3egM4NxXecKXx0JS3CkkfF69hKx+3TUuCNtQ0x0fuqsdNk6HL+Q99Dg2pgOshvYcZxRES1RPvBpyROdmI47JuaLRkcIx0uJ4EkoXPwJNWcpLGgkxZdMRMEydaHhEn3wIDAQAB
-----END PUBLIC KEY-----`
let secretKey = 'SK-tDzY6MSLBWlNXy3qCsUU';
beforeEach(() => {
snap = new Snap({
isProduction: false,
privateKey: privateKey,
clientID: clientID,
publicKey: publicKey,
issuer: "issuer",
secretKey: secretKey
});
});
describe('getTokenB2B', () => {
test('should successfully get and set token', async () => {
// Setup mock to return a successful token response
TokenController.prototype.getTokenB2B.mockResolvedValue({
accessToken: 'mockAccessToken',
expiresIn: 3600
});
const tokenResponse = await snap.getTokenB2B();
// Verify that getTokenB2B was called with correct parameters
expect(TokenController.prototype.getTokenB2B).toHaveBeenCalledWith(
snap.privateKey,
snap.clientId,
snap.isProduction
);
// Verify that token response is correct
expect(tokenResponse).toEqual({
accessToken: 'mockAccessToken',
expiresIn: 3600
});
// Verify that tokenB2B and other properties are set correctly
expect(snap.tokenB2B).toBe('mockAccessToken');
expect(snap.tokenExpiresIn).toBe(3600);
expect(snap.tokenGeneratedTimestamp).toBeGreaterThan(0);
});
test('should handle errors when getting token', async () => {
// Setup mock to return an error
TokenController.prototype.getTokenB2B.mockRejectedValue(new Error('Failed to get token'));
// Use async assertions to handle rejected promises
await expect(snap.getTokenB2B()).rejects.toThrow('Failed to get token');
});
test('should handle error when getTokenB2B fails', async () => {
// Setup mock to throw an error
TokenController.prototype.getTokenB2B.mockRejectedValue(new Error('Failed to fetch token'));
await expect(snap.getTokenB2B()).rejects.toThrow('Failed to fetch token');
// Verify that token properties are not set
expect(snap.tokenB2B).toBe('');
expect(snap.tokenExpiresIn).toBe(900);
expect(snap.tokenGeneratedTimestamp).toBe('');
});
test('should handle missing accessToken in response', async () => {
// Setup mock to return a response missing accessToken
TokenController.prototype.getTokenB2B.mockResolvedValue({
// accessToken is missing
expiresIn: 3600
});
await expect(snap.getTokenB2B()).rejects.toThrow('Invalid token response');
// Verify that token properties are not set
expect(snap.tokenB2B).toBe('');
expect(snap.tokenExpiresIn).toBe(900);
expect(snap.tokenGeneratedTimestamp).toBe('');
});
test('should handle missing expiresIn in response', async () => {
// Setup mock to return a response missing expiresIn
TokenController.prototype.getTokenB2B.mockResolvedValue({
accessToken: 'mockAccessToken'
// expiresIn is missing
});
await expect(snap.getTokenB2B()).rejects.toThrow('Invalid token response');
// Verify that token properties are not set
expect(snap.tokenB2B).toBe('');
expect(snap.tokenExpiresIn).toBe(900);
expect(snap.tokenGeneratedTimestamp).toBe('');
});
});
});