-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathtenantManager.test.js
More file actions
101 lines (82 loc) · 2.84 KB
/
tenantManager.test.js
File metadata and controls
101 lines (82 loc) · 2.84 KB
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
'use strict';
const cds = require('@sap/cds');
const { expect } = cds.test(__dirname + '/../../..');
const sinon = require('sinon');
const serviceCredentials = require('../../../srv/lib/serviceCredentials');
const TenantManager = require('../../../srv/lib/tenantManager');
describe('TenantManager Class', () => {
let serviceCredentialsStub;
let errorLogStub;
let originalEnv;
let mockTenants;
beforeEach(() => {
// Store original environment variables to restore them after tests
originalEnv = { ...process.env };
process.env['test_tenant_id'] = 'mockProviderTenantID';
mockTenants = [
{ tenantId: 'mockTenantID1' },
{ tenantId: 'mockTenantID2' }
];
// Mocking
serviceCredentialsStub = sinon
.stub(serviceCredentials, 'getServiceCredentials')
.returns({ tenantid: 'mockProviderTenantID' });
errorLogStub = sinon.stub(console, 'error');
});
afterEach(() => {
// Restore the environment variables
process.env = originalEnv;
// Restore stubs
serviceCredentialsStub.restore();
errorLogStub.restore();
});
describe('Constructor', () => {
it('should throw an error if tenant context is incorrect', () => {
// Overwrite process.env for test scenario
process.env['test_tenant_id'] = 'mockDifferentTenantID';
expect(() => new TenantManager()).to.throw(
'TenantManager: The tenant context is incorrect. Access denied.'
);
});
it('should not throw an error if tenant context is correct', () => {
// Overwrite process.env for test scenario
process.env['test_tenant_id'] = 'mockProviderTenantID';
expect(() => new TenantManager()).to.not.throw();
});
});
describe('getAllTenants Method', () => {
describe('Tenant fetch - Successfull', () => {
let connectStub;
beforeEach(() => {
connectStub = sinon.stub(cds.connect, 'to').resolves({
get: async () => mockTenants
});
});
afterEach(() => {
connectStub.restore();
});
it('should return tenants on successful fetch', async () => {
const tenantManager = new TenantManager();
const tenants = await tenantManager.getSubscriberTenantIds();
expect(connectStub.calledOnce).to.be.true;
expect(tenants).to.deep.equal(mockTenants);
});
});
describe('Tenant fetch - Failing', () => {
let connectStub;
beforeEach(() => {
connectStub = sinon.stub(cds.connect, 'to').resolves({
get: sinon.stub()
});
});
afterEach(() => {
connectStub.restore();
});
it('should throw error on failing tenant fetch', async () => {
const tenantManager = new TenantManager();
await expect(tenantManager.getSubscriberTenantIds()).to.rejected;
expect(connectStub.calledOnce).to.be.true;
});
});
});
});