@backstage/backend-test-utils 0.4.0-next.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/dist/index.cjs.js +85 -74
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +128 -121
- package/package.json +7 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @backstage/backend-test-utils
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 805cbe7: Added `TestCaches` that functions just like `TestDatabases`
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 78a0b08: Internal refactor to handle `BackendFeature` contract change.
|
|
12
|
+
- 9e63318: Made it possible to give access restrictions to `mockCredentials.service`
|
|
13
|
+
- 006b3e8: The type `MockDirectoryOptions` was renamed to `CreateMockDirectoryOptions` so that it's clear these options are exclusive to the mock directory factory.
|
|
14
|
+
- 0634fdc: Refactored `TestDatabases` to no longer depend on `backend-common`
|
|
15
|
+
- 6a576dc: Fix the logger service mock to prevent returning `undefined` from the `child` method.
|
|
16
|
+
- 6c11f6e: Use imports from backend-defaults instead of the deprecated ones from backend-app-api
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
- @backstage/backend-app-api@0.7.6
|
|
19
|
+
- @backstage/backend-plugin-api@0.6.19
|
|
20
|
+
- @backstage/plugin-auth-node@0.4.14
|
|
21
|
+
- @backstage/backend-defaults@0.3.0
|
|
22
|
+
- @backstage/plugin-events-node@0.3.5
|
|
23
|
+
- @backstage/config@1.2.0
|
|
24
|
+
- @backstage/errors@1.2.4
|
|
25
|
+
- @backstage/types@1.1.1
|
|
26
|
+
|
|
27
|
+
## 0.4.0-next.3
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- 006b3e8: The type `MockDirectoryOptions` was renamed to `CreateMockDirectoryOptions` so that it's clear these options are exclusive to the mock directory factory.
|
|
32
|
+
- Updated dependencies
|
|
33
|
+
- @backstage/backend-plugin-api@0.6.19-next.3
|
|
34
|
+
- @backstage/plugin-auth-node@0.4.14-next.3
|
|
35
|
+
- @backstage/plugin-events-node@0.3.5-next.2
|
|
36
|
+
- @backstage/backend-app-api@0.7.6-next.3
|
|
37
|
+
- @backstage/config@1.2.0
|
|
38
|
+
- @backstage/errors@1.2.4
|
|
39
|
+
- @backstage/types@1.1.1
|
|
40
|
+
|
|
3
41
|
## 0.4.0-next.2
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|
package/dist/index.cjs.js
CHANGED
|
@@ -15,9 +15,20 @@ var fs = require('fs-extra');
|
|
|
15
15
|
var textextensions = require('textextensions');
|
|
16
16
|
var path = require('path');
|
|
17
17
|
var backendAppApi = require('@backstage/backend-app-api');
|
|
18
|
+
var cache = require('@backstage/backend-defaults/cache');
|
|
19
|
+
var database = require('@backstage/backend-defaults/database');
|
|
20
|
+
var discovery = require('@backstage/backend-defaults/discovery');
|
|
21
|
+
var httpRouter = require('@backstage/backend-defaults/httpRouter');
|
|
22
|
+
var lifecycle = require('@backstage/backend-defaults/lifecycle');
|
|
23
|
+
var logger = require('@backstage/backend-defaults/logger');
|
|
24
|
+
var permissions = require('@backstage/backend-defaults/permissions');
|
|
25
|
+
var rootHttpRouter = require('@backstage/backend-defaults/rootHttpRouter');
|
|
26
|
+
var rootLifecycle = require('@backstage/backend-defaults/rootLifecycle');
|
|
27
|
+
var scheduler = require('@backstage/backend-defaults/scheduler');
|
|
28
|
+
var urlReader = require('@backstage/backend-defaults/urlReader');
|
|
18
29
|
var config = require('@backstage/config');
|
|
19
|
-
var cookie = require('cookie');
|
|
20
30
|
var pluginEventsNode = require('@backstage/plugin-events-node');
|
|
31
|
+
var cookie = require('cookie');
|
|
21
32
|
var express = require('express');
|
|
22
33
|
|
|
23
34
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
@@ -944,64 +955,6 @@ function createMockDirectory(options) {
|
|
|
944
955
|
return mocker;
|
|
945
956
|
}
|
|
946
957
|
|
|
947
|
-
class MockIdentityService {
|
|
948
|
-
getIdentity(_options) {
|
|
949
|
-
return Promise.resolve({
|
|
950
|
-
token: "mock-token",
|
|
951
|
-
identity: {
|
|
952
|
-
type: "user",
|
|
953
|
-
userEntityRef: "user:default/mock-user",
|
|
954
|
-
ownershipEntityRefs: []
|
|
955
|
-
}
|
|
956
|
-
});
|
|
957
|
-
}
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
const levels = {
|
|
961
|
-
none: 0,
|
|
962
|
-
error: 1,
|
|
963
|
-
warn: 2,
|
|
964
|
-
info: 3,
|
|
965
|
-
debug: 4
|
|
966
|
-
};
|
|
967
|
-
class MockRootLoggerService {
|
|
968
|
-
#level;
|
|
969
|
-
#meta;
|
|
970
|
-
static create(options) {
|
|
971
|
-
const level = options?.level ?? "none";
|
|
972
|
-
if (!(level in levels)) {
|
|
973
|
-
throw new Error(`Invalid log level '${level}'`);
|
|
974
|
-
}
|
|
975
|
-
return new MockRootLoggerService(levels[level], {});
|
|
976
|
-
}
|
|
977
|
-
error(message, meta) {
|
|
978
|
-
this.#log("error", message, meta);
|
|
979
|
-
}
|
|
980
|
-
warn(message, meta) {
|
|
981
|
-
this.#log("warn", message, meta);
|
|
982
|
-
}
|
|
983
|
-
info(message, meta) {
|
|
984
|
-
this.#log("info", message, meta);
|
|
985
|
-
}
|
|
986
|
-
debug(message, meta) {
|
|
987
|
-
this.#log("debug", message, meta);
|
|
988
|
-
}
|
|
989
|
-
child(meta) {
|
|
990
|
-
return new MockRootLoggerService(this.#level, { ...this.#meta, ...meta });
|
|
991
|
-
}
|
|
992
|
-
constructor(level, meta) {
|
|
993
|
-
this.#level = level;
|
|
994
|
-
this.#meta = meta;
|
|
995
|
-
}
|
|
996
|
-
#log(level, message, meta) {
|
|
997
|
-
const levelValue = levels[level] ?? 0;
|
|
998
|
-
if (levelValue <= this.#level) {
|
|
999
|
-
const labels = Object.entries(this.#meta).map(([key, value]) => `${key}=${value}`).join(",");
|
|
1000
|
-
console[level](`${labels} ${message}`, meta);
|
|
1001
|
-
}
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1004
|
-
|
|
1005
958
|
const DEFAULT_MOCK_USER_ENTITY_REF = "user:default/mock";
|
|
1006
959
|
const DEFAULT_MOCK_SERVICE_SUBJECT = "external:test-service";
|
|
1007
960
|
const MOCK_AUTH_COOKIE = "backstage-auth";
|
|
@@ -1317,6 +1270,64 @@ class MockHttpAuthService {
|
|
|
1317
1270
|
}
|
|
1318
1271
|
}
|
|
1319
1272
|
|
|
1273
|
+
class MockIdentityService {
|
|
1274
|
+
getIdentity(_options) {
|
|
1275
|
+
return Promise.resolve({
|
|
1276
|
+
token: "mock-token",
|
|
1277
|
+
identity: {
|
|
1278
|
+
type: "user",
|
|
1279
|
+
userEntityRef: "user:default/mock-user",
|
|
1280
|
+
ownershipEntityRefs: []
|
|
1281
|
+
}
|
|
1282
|
+
});
|
|
1283
|
+
}
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
const levels = {
|
|
1287
|
+
none: 0,
|
|
1288
|
+
error: 1,
|
|
1289
|
+
warn: 2,
|
|
1290
|
+
info: 3,
|
|
1291
|
+
debug: 4
|
|
1292
|
+
};
|
|
1293
|
+
class MockRootLoggerService {
|
|
1294
|
+
#level;
|
|
1295
|
+
#meta;
|
|
1296
|
+
static create(options) {
|
|
1297
|
+
const level = options?.level ?? "none";
|
|
1298
|
+
if (!(level in levels)) {
|
|
1299
|
+
throw new Error(`Invalid log level '${level}'`);
|
|
1300
|
+
}
|
|
1301
|
+
return new MockRootLoggerService(levels[level], {});
|
|
1302
|
+
}
|
|
1303
|
+
error(message, meta) {
|
|
1304
|
+
this.#log("error", message, meta);
|
|
1305
|
+
}
|
|
1306
|
+
warn(message, meta) {
|
|
1307
|
+
this.#log("warn", message, meta);
|
|
1308
|
+
}
|
|
1309
|
+
info(message, meta) {
|
|
1310
|
+
this.#log("info", message, meta);
|
|
1311
|
+
}
|
|
1312
|
+
debug(message, meta) {
|
|
1313
|
+
this.#log("debug", message, meta);
|
|
1314
|
+
}
|
|
1315
|
+
child(meta) {
|
|
1316
|
+
return new MockRootLoggerService(this.#level, { ...this.#meta, ...meta });
|
|
1317
|
+
}
|
|
1318
|
+
constructor(level, meta) {
|
|
1319
|
+
this.#level = level;
|
|
1320
|
+
this.#meta = meta;
|
|
1321
|
+
}
|
|
1322
|
+
#log(level, message, meta) {
|
|
1323
|
+
const levelValue = levels[level] ?? 0;
|
|
1324
|
+
if (levelValue <= this.#level) {
|
|
1325
|
+
const labels = Object.entries(this.#meta).map(([key, value]) => `${key}=${value}`).join(",");
|
|
1326
|
+
console[level](`${labels} ${message}`, meta);
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1320
1331
|
class MockUserInfoService {
|
|
1321
1332
|
customInfo;
|
|
1322
1333
|
constructor(customInfo) {
|
|
@@ -1468,8 +1479,8 @@ exports.mockServices = void 0;
|
|
|
1468
1479
|
listPublicServiceKeys: jest.fn()
|
|
1469
1480
|
}));
|
|
1470
1481
|
})(auth = mockServices2.auth || (mockServices2.auth = {}));
|
|
1471
|
-
function discovery() {
|
|
1472
|
-
return
|
|
1482
|
+
function discovery$1() {
|
|
1483
|
+
return discovery.HostDiscovery.fromConfig(
|
|
1473
1484
|
new config.ConfigReader({
|
|
1474
1485
|
backend: {
|
|
1475
1486
|
// Invalid port to make sure that requests are always mocked
|
|
@@ -1479,14 +1490,14 @@ exports.mockServices = void 0;
|
|
|
1479
1490
|
})
|
|
1480
1491
|
);
|
|
1481
1492
|
}
|
|
1482
|
-
mockServices2.discovery = discovery;
|
|
1493
|
+
mockServices2.discovery = discovery$1;
|
|
1483
1494
|
((discovery2) => {
|
|
1484
|
-
discovery2.factory =
|
|
1495
|
+
discovery2.factory = discovery.discoveryServiceFactory;
|
|
1485
1496
|
discovery2.mock = simpleMock(backendPluginApi.coreServices.discovery, () => ({
|
|
1486
1497
|
getBaseUrl: jest.fn(),
|
|
1487
1498
|
getExternalBaseUrl: jest.fn()
|
|
1488
1499
|
}));
|
|
1489
|
-
})(discovery = mockServices2.discovery || (mockServices2.discovery = {}));
|
|
1500
|
+
})(discovery$1 = mockServices2.discovery || (mockServices2.discovery = {}));
|
|
1490
1501
|
function httpAuth(options) {
|
|
1491
1502
|
return new MockHttpAuthService(
|
|
1492
1503
|
options?.pluginId ?? "test",
|
|
@@ -1527,7 +1538,7 @@ exports.mockServices = void 0;
|
|
|
1527
1538
|
}));
|
|
1528
1539
|
})(userInfo = mockServices2.userInfo || (mockServices2.userInfo = {}));
|
|
1529
1540
|
((cache2) => {
|
|
1530
|
-
cache2.factory =
|
|
1541
|
+
cache2.factory = cache.cacheServiceFactory;
|
|
1531
1542
|
cache2.mock = simpleMock(backendPluginApi.coreServices.cache, () => ({
|
|
1532
1543
|
delete: jest.fn(),
|
|
1533
1544
|
get: jest.fn(),
|
|
@@ -1536,54 +1547,54 @@ exports.mockServices = void 0;
|
|
|
1536
1547
|
}));
|
|
1537
1548
|
})(mockServices2.cache || (mockServices2.cache = {}));
|
|
1538
1549
|
((database2) => {
|
|
1539
|
-
database2.factory =
|
|
1550
|
+
database2.factory = database.databaseServiceFactory;
|
|
1540
1551
|
database2.mock = simpleMock(backendPluginApi.coreServices.database, () => ({
|
|
1541
1552
|
getClient: jest.fn()
|
|
1542
1553
|
}));
|
|
1543
1554
|
})(mockServices2.database || (mockServices2.database = {}));
|
|
1544
1555
|
((httpRouter2) => {
|
|
1545
|
-
httpRouter2.factory =
|
|
1556
|
+
httpRouter2.factory = httpRouter.httpRouterServiceFactory;
|
|
1546
1557
|
httpRouter2.mock = simpleMock(backendPluginApi.coreServices.httpRouter, () => ({
|
|
1547
1558
|
use: jest.fn(),
|
|
1548
1559
|
addAuthPolicy: jest.fn()
|
|
1549
1560
|
}));
|
|
1550
1561
|
})(mockServices2.httpRouter || (mockServices2.httpRouter = {}));
|
|
1551
1562
|
((rootHttpRouter2) => {
|
|
1552
|
-
rootHttpRouter2.factory =
|
|
1563
|
+
rootHttpRouter2.factory = rootHttpRouter.rootHttpRouterServiceFactory;
|
|
1553
1564
|
rootHttpRouter2.mock = simpleMock(backendPluginApi.coreServices.rootHttpRouter, () => ({
|
|
1554
1565
|
use: jest.fn()
|
|
1555
1566
|
}));
|
|
1556
1567
|
})(mockServices2.rootHttpRouter || (mockServices2.rootHttpRouter = {}));
|
|
1557
1568
|
((lifecycle2) => {
|
|
1558
|
-
lifecycle2.factory =
|
|
1569
|
+
lifecycle2.factory = lifecycle.lifecycleServiceFactory;
|
|
1559
1570
|
lifecycle2.mock = simpleMock(backendPluginApi.coreServices.lifecycle, () => ({
|
|
1560
1571
|
addShutdownHook: jest.fn(),
|
|
1561
1572
|
addStartupHook: jest.fn()
|
|
1562
1573
|
}));
|
|
1563
1574
|
})(mockServices2.lifecycle || (mockServices2.lifecycle = {}));
|
|
1564
1575
|
((logger2) => {
|
|
1565
|
-
logger2.factory =
|
|
1576
|
+
logger2.factory = logger.loggerServiceFactory;
|
|
1566
1577
|
logger2.mock = simpleMock(
|
|
1567
1578
|
backendPluginApi.coreServices.logger,
|
|
1568
1579
|
() => createLoggerMock()
|
|
1569
1580
|
);
|
|
1570
1581
|
})(mockServices2.logger || (mockServices2.logger = {}));
|
|
1571
1582
|
((permissions2) => {
|
|
1572
|
-
permissions2.factory =
|
|
1583
|
+
permissions2.factory = permissions.permissionsServiceFactory;
|
|
1573
1584
|
permissions2.mock = simpleMock(backendPluginApi.coreServices.permissions, () => ({
|
|
1574
1585
|
authorize: jest.fn(),
|
|
1575
1586
|
authorizeConditional: jest.fn()
|
|
1576
1587
|
}));
|
|
1577
1588
|
})(mockServices2.permissions || (mockServices2.permissions = {}));
|
|
1578
1589
|
((rootLifecycle2) => {
|
|
1579
|
-
rootLifecycle2.factory =
|
|
1590
|
+
rootLifecycle2.factory = rootLifecycle.rootLifecycleServiceFactory;
|
|
1580
1591
|
rootLifecycle2.mock = simpleMock(backendPluginApi.coreServices.rootLifecycle, () => ({
|
|
1581
1592
|
addShutdownHook: jest.fn(),
|
|
1582
1593
|
addStartupHook: jest.fn()
|
|
1583
1594
|
}));
|
|
1584
1595
|
})(mockServices2.rootLifecycle || (mockServices2.rootLifecycle = {}));
|
|
1585
1596
|
((scheduler2) => {
|
|
1586
|
-
scheduler2.factory =
|
|
1597
|
+
scheduler2.factory = scheduler.schedulerServiceFactory;
|
|
1587
1598
|
scheduler2.mock = simpleMock(backendPluginApi.coreServices.scheduler, () => ({
|
|
1588
1599
|
createScheduledTaskRunner: jest.fn(),
|
|
1589
1600
|
getScheduledTasks: jest.fn(),
|
|
@@ -1592,7 +1603,7 @@ exports.mockServices = void 0;
|
|
|
1592
1603
|
}));
|
|
1593
1604
|
})(mockServices2.scheduler || (mockServices2.scheduler = {}));
|
|
1594
1605
|
((urlReader2) => {
|
|
1595
|
-
urlReader2.factory =
|
|
1606
|
+
urlReader2.factory = urlReader.urlReaderServiceFactory;
|
|
1596
1607
|
urlReader2.mock = simpleMock(backendPluginApi.coreServices.urlReader, () => ({
|
|
1597
1608
|
readTree: jest.fn(),
|
|
1598
1609
|
readUrl: jest.fn(),
|