@backstage/backend-test-utils 0.5.1 → 0.6.0-next.1
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 +36 -8
- package/dist/index.cjs.js +45 -76
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +33 -32
- package/package.json +10 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,15 +1,43 @@
|
|
|
1
1
|
# @backstage/backend-test-utils
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.6.0-next.1
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
+
- 710f621: Added missing service mock for `mockServices.rootConfig.mock`, and fixed the definition of `mockServices.rootHttpRouter.factory` to not have a duplicate callback.
|
|
7
8
|
- Updated dependencies
|
|
8
|
-
- @backstage/backend-
|
|
9
|
-
- @backstage/
|
|
10
|
-
- @backstage/
|
|
11
|
-
- @backstage/plugin-
|
|
12
|
-
- @backstage/
|
|
9
|
+
- @backstage/backend-defaults@0.5.0-next.1
|
|
10
|
+
- @backstage/plugin-auth-node@0.5.2-next.1
|
|
11
|
+
- @backstage/backend-app-api@0.10.0-next.1
|
|
12
|
+
- @backstage/backend-plugin-api@0.9.0-next.1
|
|
13
|
+
- @backstage/config@1.2.0
|
|
14
|
+
- @backstage/errors@1.2.4
|
|
15
|
+
- @backstage/types@1.1.1
|
|
16
|
+
- @backstage/plugin-events-node@0.4.0-next.1
|
|
17
|
+
|
|
18
|
+
## 0.6.0-next.0
|
|
19
|
+
|
|
20
|
+
### Minor Changes
|
|
21
|
+
|
|
22
|
+
- 19ff127: **BREAKING**: Removed service mocks for the identity and token manager services, which have been removed from `@backstage/backend-plugin-api`.
|
|
23
|
+
- d425fc4: **BREAKING**: The return values from `createBackendPlugin`, `createBackendModule`, and `createServiceFactory` are now simply `BackendFeature` and `ServiceFactory`, instead of the previously deprecated form of a function that returns them. For this reason, `createServiceFactory` also no longer accepts the callback form where you provide direct options to the service. This also affects all `coreServices.*` service refs.
|
|
24
|
+
|
|
25
|
+
This may in particular affect tests; if you were effectively doing `createBackendModule({...})()` (note the parentheses), you can now remove those extra parentheses at the end. You may encounter cases of this in your `packages/backend/src/index.ts` too, where you add plugins, modules, and services. If you were using `createServiceFactory` with a function as its argument for the purpose of passing in options, this pattern has been deprecated for a while and is no longer supported. You may want to explore the new multiton patterns to achieve your goals, or moving settings to app-config.
|
|
26
|
+
|
|
27
|
+
As part of this change, the `IdentityFactoryOptions` type was removed, and can no longer be used to tweak that service. The identity service was also deprecated some time ago, and you will want to [migrate to the new auth system](https://backstage.io/docs/tutorials/auth-service-migration) if you still rely on it.
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- 0363bf1: There is a new `mockErrorHandler` utility to help in mocking the error middleware in tests.
|
|
32
|
+
- Updated dependencies
|
|
33
|
+
- @backstage/backend-app-api@0.10.0-next.0
|
|
34
|
+
- @backstage/backend-plugin-api@0.9.0-next.0
|
|
35
|
+
- @backstage/backend-defaults@0.5.0-next.0
|
|
36
|
+
- @backstage/plugin-events-node@0.4.0-next.0
|
|
37
|
+
- @backstage/plugin-auth-node@0.5.2-next.0
|
|
38
|
+
- @backstage/config@1.2.0
|
|
39
|
+
- @backstage/errors@1.2.4
|
|
40
|
+
- @backstage/types@1.1.1
|
|
13
41
|
|
|
14
42
|
## 0.5.0
|
|
15
43
|
|
|
@@ -17,8 +45,8 @@
|
|
|
17
45
|
|
|
18
46
|
- 861f162: **BREAKING**: Removed these deprecated helpers:
|
|
19
47
|
|
|
20
|
-
- `setupRequestMockHandlers`
|
|
21
|
-
- `
|
|
48
|
+
- `setupRequestMockHandlers` is removed; use `registerMswTestHooks` instead.
|
|
49
|
+
- `MockDirectoryOptions` is removed; use `CreateMockDirectoryOptions` instead.
|
|
22
50
|
|
|
23
51
|
Stopped exporting the deprecated and internal `isDockerDisabledForTests` helper.
|
|
24
52
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -1271,19 +1271,6 @@ class MockHttpAuthService {
|
|
|
1271
1271
|
}
|
|
1272
1272
|
}
|
|
1273
1273
|
|
|
1274
|
-
class MockIdentityService {
|
|
1275
|
-
getIdentity(_options) {
|
|
1276
|
-
return Promise.resolve({
|
|
1277
|
-
token: "mock-token",
|
|
1278
|
-
identity: {
|
|
1279
|
-
type: "user",
|
|
1280
|
-
userEntityRef: "user:default/mock-user",
|
|
1281
|
-
ownershipEntityRefs: []
|
|
1282
|
-
}
|
|
1283
|
-
});
|
|
1284
|
-
}
|
|
1285
|
-
}
|
|
1286
|
-
|
|
1287
1274
|
const levels = {
|
|
1288
1275
|
none: 0,
|
|
1289
1276
|
error: 1,
|
|
@@ -1365,7 +1352,7 @@ function simpleFactoryWithOptions(ref, factory) {
|
|
|
1365
1352
|
async factory() {
|
|
1366
1353
|
return factory(...options);
|
|
1367
1354
|
}
|
|
1368
|
-
})
|
|
1355
|
+
});
|
|
1369
1356
|
return Object.assign(
|
|
1370
1357
|
factoryWithOptions,
|
|
1371
1358
|
factoryWithOptions(...[void 0])
|
|
@@ -1388,7 +1375,7 @@ function simpleMock(ref, mockFactory) {
|
|
|
1388
1375
|
service: ref,
|
|
1389
1376
|
deps: {},
|
|
1390
1377
|
factory: () => mock
|
|
1391
|
-
})
|
|
1378
|
+
})
|
|
1392
1379
|
});
|
|
1393
1380
|
};
|
|
1394
1381
|
}
|
|
@@ -1403,6 +1390,24 @@ exports.mockServices = void 0;
|
|
|
1403
1390
|
backendPluginApi.coreServices.rootConfig,
|
|
1404
1391
|
rootConfig2
|
|
1405
1392
|
);
|
|
1393
|
+
rootConfig2.mock = simpleMock(backendPluginApi.coreServices.rootConfig, () => ({
|
|
1394
|
+
get: jest.fn(),
|
|
1395
|
+
getBoolean: jest.fn(),
|
|
1396
|
+
getConfig: jest.fn(),
|
|
1397
|
+
getConfigArray: jest.fn(),
|
|
1398
|
+
getNumber: jest.fn(),
|
|
1399
|
+
getOptional: jest.fn(),
|
|
1400
|
+
getOptionalBoolean: jest.fn(),
|
|
1401
|
+
getOptionalConfig: jest.fn(),
|
|
1402
|
+
getOptionalConfigArray: jest.fn(),
|
|
1403
|
+
getOptionalNumber: jest.fn(),
|
|
1404
|
+
getOptionalString: jest.fn(),
|
|
1405
|
+
getOptionalStringArray: jest.fn(),
|
|
1406
|
+
getString: jest.fn(),
|
|
1407
|
+
getStringArray: jest.fn(),
|
|
1408
|
+
has: jest.fn(),
|
|
1409
|
+
keys: jest.fn()
|
|
1410
|
+
}));
|
|
1406
1411
|
})(rootConfig = mockServices2.rootConfig || (mockServices2.rootConfig = {}));
|
|
1407
1412
|
function rootLogger(options) {
|
|
1408
1413
|
return MockRootLoggerService.create(options);
|
|
@@ -1421,44 +1426,6 @@ exports.mockServices = void 0;
|
|
|
1421
1426
|
warn: jest.fn()
|
|
1422
1427
|
}));
|
|
1423
1428
|
})(rootLogger = mockServices2.rootLogger || (mockServices2.rootLogger = {}));
|
|
1424
|
-
function tokenManager() {
|
|
1425
|
-
return {
|
|
1426
|
-
async getToken() {
|
|
1427
|
-
return { token: "mock-token" };
|
|
1428
|
-
},
|
|
1429
|
-
async authenticate(token) {
|
|
1430
|
-
if (token !== "mock-token") {
|
|
1431
|
-
throw new Error("Invalid token");
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
};
|
|
1435
|
-
}
|
|
1436
|
-
mockServices2.tokenManager = tokenManager;
|
|
1437
|
-
((tokenManager2) => {
|
|
1438
|
-
tokenManager2.factory = backendPluginApi.createServiceFactory({
|
|
1439
|
-
service: backendPluginApi.coreServices.tokenManager,
|
|
1440
|
-
deps: {},
|
|
1441
|
-
factory: () => tokenManager2()
|
|
1442
|
-
});
|
|
1443
|
-
tokenManager2.mock = simpleMock(backendPluginApi.coreServices.tokenManager, () => ({
|
|
1444
|
-
authenticate: jest.fn(),
|
|
1445
|
-
getToken: jest.fn()
|
|
1446
|
-
}));
|
|
1447
|
-
})(tokenManager = mockServices2.tokenManager || (mockServices2.tokenManager = {}));
|
|
1448
|
-
function identity() {
|
|
1449
|
-
return new MockIdentityService();
|
|
1450
|
-
}
|
|
1451
|
-
mockServices2.identity = identity;
|
|
1452
|
-
((identity2) => {
|
|
1453
|
-
identity2.factory = backendPluginApi.createServiceFactory({
|
|
1454
|
-
service: backendPluginApi.coreServices.identity,
|
|
1455
|
-
deps: {},
|
|
1456
|
-
factory: () => identity2()
|
|
1457
|
-
});
|
|
1458
|
-
identity2.mock = simpleMock(backendPluginApi.coreServices.identity, () => ({
|
|
1459
|
-
getIdentity: jest.fn()
|
|
1460
|
-
}));
|
|
1461
|
-
})(identity = mockServices2.identity || (mockServices2.identity = {}));
|
|
1462
1429
|
function auth(options) {
|
|
1463
1430
|
return new MockAuthService({
|
|
1464
1431
|
pluginId: options?.pluginId ?? "test",
|
|
@@ -1467,7 +1434,7 @@ exports.mockServices = void 0;
|
|
|
1467
1434
|
}
|
|
1468
1435
|
mockServices2.auth = auth;
|
|
1469
1436
|
((auth2) => {
|
|
1470
|
-
auth2.factory = backendPluginApi.createServiceFactory({
|
|
1437
|
+
auth2.factory = () => backendPluginApi.createServiceFactory({
|
|
1471
1438
|
service: backendPluginApi.coreServices.auth,
|
|
1472
1439
|
deps: {
|
|
1473
1440
|
plugin: backendPluginApi.coreServices.pluginMetadata,
|
|
@@ -1508,7 +1475,7 @@ exports.mockServices = void 0;
|
|
|
1508
1475
|
}
|
|
1509
1476
|
mockServices2.discovery = discovery$1;
|
|
1510
1477
|
((discovery2) => {
|
|
1511
|
-
discovery2.factory = discovery.discoveryServiceFactory;
|
|
1478
|
+
discovery2.factory = () => discovery.discoveryServiceFactory;
|
|
1512
1479
|
discovery2.mock = simpleMock(backendPluginApi.coreServices.discovery, () => ({
|
|
1513
1480
|
getBaseUrl: jest.fn(),
|
|
1514
1481
|
getExternalBaseUrl: jest.fn()
|
|
@@ -1522,18 +1489,14 @@ exports.mockServices = void 0;
|
|
|
1522
1489
|
}
|
|
1523
1490
|
mockServices2.httpAuth = httpAuth;
|
|
1524
1491
|
((httpAuth2) => {
|
|
1525
|
-
|
|
1492
|
+
httpAuth2.factory = (options) => backendPluginApi.createServiceFactory({
|
|
1526
1493
|
service: backendPluginApi.coreServices.httpAuth,
|
|
1527
1494
|
deps: { plugin: backendPluginApi.coreServices.pluginMetadata },
|
|
1528
1495
|
factory: ({ plugin }) => new MockHttpAuthService(
|
|
1529
1496
|
plugin.getId(),
|
|
1530
1497
|
options?.defaultCredentials ?? exports.mockCredentials.user()
|
|
1531
1498
|
)
|
|
1532
|
-
})
|
|
1533
|
-
httpAuth2.factory = Object.assign(
|
|
1534
|
-
factoryWithOptions,
|
|
1535
|
-
factoryWithOptions()
|
|
1536
|
-
);
|
|
1499
|
+
});
|
|
1537
1500
|
httpAuth2.mock = simpleMock(backendPluginApi.coreServices.httpAuth, () => ({
|
|
1538
1501
|
credentials: jest.fn(),
|
|
1539
1502
|
issueUserCookie: jest.fn()
|
|
@@ -1544,7 +1507,7 @@ exports.mockServices = void 0;
|
|
|
1544
1507
|
}
|
|
1545
1508
|
mockServices2.userInfo = userInfo;
|
|
1546
1509
|
((userInfo2) => {
|
|
1547
|
-
userInfo2.factory = backendPluginApi.createServiceFactory({
|
|
1510
|
+
userInfo2.factory = () => backendPluginApi.createServiceFactory({
|
|
1548
1511
|
service: backendPluginApi.coreServices.userInfo,
|
|
1549
1512
|
deps: {},
|
|
1550
1513
|
factory() {
|
|
@@ -1556,7 +1519,7 @@ exports.mockServices = void 0;
|
|
|
1556
1519
|
}));
|
|
1557
1520
|
})(userInfo = mockServices2.userInfo || (mockServices2.userInfo = {}));
|
|
1558
1521
|
((cache2) => {
|
|
1559
|
-
cache2.factory = cache.cacheServiceFactory;
|
|
1522
|
+
cache2.factory = () => cache.cacheServiceFactory;
|
|
1560
1523
|
cache2.mock = simpleMock(backendPluginApi.coreServices.cache, () => ({
|
|
1561
1524
|
delete: jest.fn(),
|
|
1562
1525
|
get: jest.fn(),
|
|
@@ -1565,61 +1528,61 @@ exports.mockServices = void 0;
|
|
|
1565
1528
|
}));
|
|
1566
1529
|
})(mockServices2.cache || (mockServices2.cache = {}));
|
|
1567
1530
|
((database2) => {
|
|
1568
|
-
database2.factory = database.databaseServiceFactory;
|
|
1531
|
+
database2.factory = () => database.databaseServiceFactory;
|
|
1569
1532
|
database2.mock = simpleMock(backendPluginApi.coreServices.database, () => ({
|
|
1570
1533
|
getClient: jest.fn()
|
|
1571
1534
|
}));
|
|
1572
1535
|
})(mockServices2.database || (mockServices2.database = {}));
|
|
1573
1536
|
((rootHealth2) => {
|
|
1574
|
-
rootHealth2.factory = rootHealth.rootHealthServiceFactory;
|
|
1537
|
+
rootHealth2.factory = () => rootHealth.rootHealthServiceFactory;
|
|
1575
1538
|
rootHealth2.mock = simpleMock(backendPluginApi.coreServices.rootHealth, () => ({
|
|
1576
1539
|
getLiveness: jest.fn(),
|
|
1577
1540
|
getReadiness: jest.fn()
|
|
1578
1541
|
}));
|
|
1579
1542
|
})(mockServices2.rootHealth || (mockServices2.rootHealth = {}));
|
|
1580
1543
|
((httpRouter2) => {
|
|
1581
|
-
httpRouter2.factory = httpRouter.httpRouterServiceFactory;
|
|
1544
|
+
httpRouter2.factory = () => httpRouter.httpRouterServiceFactory;
|
|
1582
1545
|
httpRouter2.mock = simpleMock(backendPluginApi.coreServices.httpRouter, () => ({
|
|
1583
1546
|
use: jest.fn(),
|
|
1584
1547
|
addAuthPolicy: jest.fn()
|
|
1585
1548
|
}));
|
|
1586
1549
|
})(mockServices2.httpRouter || (mockServices2.httpRouter = {}));
|
|
1587
1550
|
((rootHttpRouter2) => {
|
|
1588
|
-
rootHttpRouter2.factory = rootHttpRouter.rootHttpRouterServiceFactory;
|
|
1551
|
+
rootHttpRouter2.factory = () => rootHttpRouter.rootHttpRouterServiceFactory();
|
|
1589
1552
|
rootHttpRouter2.mock = simpleMock(backendPluginApi.coreServices.rootHttpRouter, () => ({
|
|
1590
1553
|
use: jest.fn()
|
|
1591
1554
|
}));
|
|
1592
1555
|
})(mockServices2.rootHttpRouter || (mockServices2.rootHttpRouter = {}));
|
|
1593
1556
|
((lifecycle2) => {
|
|
1594
|
-
lifecycle2.factory = lifecycle.lifecycleServiceFactory;
|
|
1557
|
+
lifecycle2.factory = () => lifecycle.lifecycleServiceFactory;
|
|
1595
1558
|
lifecycle2.mock = simpleMock(backendPluginApi.coreServices.lifecycle, () => ({
|
|
1596
1559
|
addShutdownHook: jest.fn(),
|
|
1597
1560
|
addStartupHook: jest.fn()
|
|
1598
1561
|
}));
|
|
1599
1562
|
})(mockServices2.lifecycle || (mockServices2.lifecycle = {}));
|
|
1600
1563
|
((logger2) => {
|
|
1601
|
-
logger2.factory = logger.loggerServiceFactory;
|
|
1564
|
+
logger2.factory = () => logger.loggerServiceFactory;
|
|
1602
1565
|
logger2.mock = simpleMock(
|
|
1603
1566
|
backendPluginApi.coreServices.logger,
|
|
1604
1567
|
() => createLoggerMock()
|
|
1605
1568
|
);
|
|
1606
1569
|
})(mockServices2.logger || (mockServices2.logger = {}));
|
|
1607
1570
|
((permissions2) => {
|
|
1608
|
-
permissions2.factory = permissions.permissionsServiceFactory;
|
|
1571
|
+
permissions2.factory = () => permissions.permissionsServiceFactory;
|
|
1609
1572
|
permissions2.mock = simpleMock(backendPluginApi.coreServices.permissions, () => ({
|
|
1610
1573
|
authorize: jest.fn(),
|
|
1611
1574
|
authorizeConditional: jest.fn()
|
|
1612
1575
|
}));
|
|
1613
1576
|
})(mockServices2.permissions || (mockServices2.permissions = {}));
|
|
1614
1577
|
((rootLifecycle2) => {
|
|
1615
|
-
rootLifecycle2.factory = rootLifecycle.rootLifecycleServiceFactory;
|
|
1578
|
+
rootLifecycle2.factory = () => rootLifecycle.rootLifecycleServiceFactory;
|
|
1616
1579
|
rootLifecycle2.mock = simpleMock(backendPluginApi.coreServices.rootLifecycle, () => ({
|
|
1617
1580
|
addShutdownHook: jest.fn(),
|
|
1618
1581
|
addStartupHook: jest.fn()
|
|
1619
1582
|
}));
|
|
1620
1583
|
})(mockServices2.rootLifecycle || (mockServices2.rootLifecycle = {}));
|
|
1621
1584
|
((scheduler2) => {
|
|
1622
|
-
scheduler2.factory = scheduler.schedulerServiceFactory;
|
|
1585
|
+
scheduler2.factory = () => scheduler.schedulerServiceFactory;
|
|
1623
1586
|
scheduler2.mock = simpleMock(backendPluginApi.coreServices.scheduler, () => ({
|
|
1624
1587
|
createScheduledTaskRunner: jest.fn(),
|
|
1625
1588
|
getScheduledTasks: jest.fn(),
|
|
@@ -1628,7 +1591,7 @@ exports.mockServices = void 0;
|
|
|
1628
1591
|
}));
|
|
1629
1592
|
})(mockServices2.scheduler || (mockServices2.scheduler = {}));
|
|
1630
1593
|
((urlReader2) => {
|
|
1631
|
-
urlReader2.factory = urlReader.urlReaderServiceFactory;
|
|
1594
|
+
urlReader2.factory = () => urlReader.urlReaderServiceFactory;
|
|
1632
1595
|
urlReader2.mock = simpleMock(backendPluginApi.coreServices.urlReader, () => ({
|
|
1633
1596
|
readTree: jest.fn(),
|
|
1634
1597
|
readUrl: jest.fn(),
|
|
@@ -1636,7 +1599,7 @@ exports.mockServices = void 0;
|
|
|
1636
1599
|
}));
|
|
1637
1600
|
})(mockServices2.urlReader || (mockServices2.urlReader = {}));
|
|
1638
1601
|
((events2) => {
|
|
1639
|
-
events2.factory = pluginEventsNode.eventsServiceFactory;
|
|
1602
|
+
events2.factory = () => pluginEventsNode.eventsServiceFactory;
|
|
1640
1603
|
events2.mock = simpleMock(pluginEventsNode.eventsServiceRef, () => ({
|
|
1641
1604
|
publish: jest.fn(),
|
|
1642
1605
|
subscribe: jest.fn()
|
|
@@ -1651,7 +1614,6 @@ const defaultServiceFactories = [
|
|
|
1651
1614
|
exports.mockServices.database.factory(),
|
|
1652
1615
|
exports.mockServices.httpAuth.factory(),
|
|
1653
1616
|
exports.mockServices.httpRouter.factory(),
|
|
1654
|
-
exports.mockServices.identity.factory(),
|
|
1655
1617
|
exports.mockServices.lifecycle.factory(),
|
|
1656
1618
|
exports.mockServices.logger.factory(),
|
|
1657
1619
|
exports.mockServices.permissions.factory(),
|
|
@@ -1659,7 +1621,6 @@ const defaultServiceFactories = [
|
|
|
1659
1621
|
exports.mockServices.rootLifecycle.factory(),
|
|
1660
1622
|
exports.mockServices.rootLogger.factory(),
|
|
1661
1623
|
exports.mockServices.scheduler.factory(),
|
|
1662
|
-
exports.mockServices.tokenManager.factory(),
|
|
1663
1624
|
exports.mockServices.userInfo.factory(),
|
|
1664
1625
|
exports.mockServices.urlReader.factory(),
|
|
1665
1626
|
exports.mockServices.events.factory()
|
|
@@ -2350,10 +2311,18 @@ class ServiceFactoryTester {
|
|
|
2350
2311
|
}
|
|
2351
2312
|
}
|
|
2352
2313
|
|
|
2314
|
+
function mockErrorHandler() {
|
|
2315
|
+
return rootHttpRouter.MiddlewareFactory.create({
|
|
2316
|
+
config: exports.mockServices.rootConfig(),
|
|
2317
|
+
logger: exports.mockServices.rootLogger()
|
|
2318
|
+
}).error();
|
|
2319
|
+
}
|
|
2320
|
+
|
|
2353
2321
|
exports.ServiceFactoryTester = ServiceFactoryTester;
|
|
2354
2322
|
exports.TestCaches = TestCaches;
|
|
2355
2323
|
exports.TestDatabases = TestDatabases;
|
|
2356
2324
|
exports.createMockDirectory = createMockDirectory;
|
|
2325
|
+
exports.mockErrorHandler = mockErrorHandler;
|
|
2357
2326
|
exports.registerMswTestHooks = registerMswTestHooks;
|
|
2358
2327
|
exports.startTestBackend = startTestBackend;
|
|
2359
2328
|
//# sourceMappingURL=index.cjs.js.map
|