@backstage/backend-test-utils 0.5.0 → 0.6.0-next.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 +26 -2
- package/dist/index.cjs.js +27 -76
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +32 -31
- package/package.json +10 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
# @backstage/backend-test-utils
|
|
2
2
|
|
|
3
|
+
## 0.6.0-next.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 19ff127: **BREAKING**: Removed service mocks for the identity and token manager services, which have been removed from `@backstage/backend-plugin-api`.
|
|
8
|
+
- 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.
|
|
9
|
+
|
|
10
|
+
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.
|
|
11
|
+
|
|
12
|
+
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.
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 0363bf1: There is a new `mockErrorHandler` utility to help in mocking the error middleware in tests.
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
- @backstage/backend-app-api@0.10.0-next.0
|
|
19
|
+
- @backstage/backend-plugin-api@0.9.0-next.0
|
|
20
|
+
- @backstage/backend-defaults@0.5.0-next.0
|
|
21
|
+
- @backstage/plugin-events-node@0.4.0-next.0
|
|
22
|
+
- @backstage/plugin-auth-node@0.5.2-next.0
|
|
23
|
+
- @backstage/config@1.2.0
|
|
24
|
+
- @backstage/errors@1.2.4
|
|
25
|
+
- @backstage/types@1.1.1
|
|
26
|
+
|
|
3
27
|
## 0.5.0
|
|
4
28
|
|
|
5
29
|
### Minor Changes
|
|
6
30
|
|
|
7
31
|
- 861f162: **BREAKING**: Removed these deprecated helpers:
|
|
8
32
|
|
|
9
|
-
- `setupRequestMockHandlers`
|
|
10
|
-
- `
|
|
33
|
+
- `setupRequestMockHandlers` is removed; use `registerMswTestHooks` instead.
|
|
34
|
+
- `MockDirectoryOptions` is removed; use `CreateMockDirectoryOptions` instead.
|
|
11
35
|
|
|
12
36
|
Stopped exporting the deprecated and internal `isDockerDisabledForTests` helper.
|
|
13
37
|
|
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
|
}
|
|
@@ -1421,44 +1408,6 @@ exports.mockServices = void 0;
|
|
|
1421
1408
|
warn: jest.fn()
|
|
1422
1409
|
}));
|
|
1423
1410
|
})(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
1411
|
function auth(options) {
|
|
1463
1412
|
return new MockAuthService({
|
|
1464
1413
|
pluginId: options?.pluginId ?? "test",
|
|
@@ -1467,7 +1416,7 @@ exports.mockServices = void 0;
|
|
|
1467
1416
|
}
|
|
1468
1417
|
mockServices2.auth = auth;
|
|
1469
1418
|
((auth2) => {
|
|
1470
|
-
auth2.factory = backendPluginApi.createServiceFactory({
|
|
1419
|
+
auth2.factory = () => backendPluginApi.createServiceFactory({
|
|
1471
1420
|
service: backendPluginApi.coreServices.auth,
|
|
1472
1421
|
deps: {
|
|
1473
1422
|
plugin: backendPluginApi.coreServices.pluginMetadata,
|
|
@@ -1508,7 +1457,7 @@ exports.mockServices = void 0;
|
|
|
1508
1457
|
}
|
|
1509
1458
|
mockServices2.discovery = discovery$1;
|
|
1510
1459
|
((discovery2) => {
|
|
1511
|
-
discovery2.factory = discovery.discoveryServiceFactory;
|
|
1460
|
+
discovery2.factory = () => discovery.discoveryServiceFactory;
|
|
1512
1461
|
discovery2.mock = simpleMock(backendPluginApi.coreServices.discovery, () => ({
|
|
1513
1462
|
getBaseUrl: jest.fn(),
|
|
1514
1463
|
getExternalBaseUrl: jest.fn()
|
|
@@ -1522,18 +1471,14 @@ exports.mockServices = void 0;
|
|
|
1522
1471
|
}
|
|
1523
1472
|
mockServices2.httpAuth = httpAuth;
|
|
1524
1473
|
((httpAuth2) => {
|
|
1525
|
-
|
|
1474
|
+
httpAuth2.factory = (options) => backendPluginApi.createServiceFactory({
|
|
1526
1475
|
service: backendPluginApi.coreServices.httpAuth,
|
|
1527
1476
|
deps: { plugin: backendPluginApi.coreServices.pluginMetadata },
|
|
1528
1477
|
factory: ({ plugin }) => new MockHttpAuthService(
|
|
1529
1478
|
plugin.getId(),
|
|
1530
1479
|
options?.defaultCredentials ?? exports.mockCredentials.user()
|
|
1531
1480
|
)
|
|
1532
|
-
})
|
|
1533
|
-
httpAuth2.factory = Object.assign(
|
|
1534
|
-
factoryWithOptions,
|
|
1535
|
-
factoryWithOptions()
|
|
1536
|
-
);
|
|
1481
|
+
});
|
|
1537
1482
|
httpAuth2.mock = simpleMock(backendPluginApi.coreServices.httpAuth, () => ({
|
|
1538
1483
|
credentials: jest.fn(),
|
|
1539
1484
|
issueUserCookie: jest.fn()
|
|
@@ -1544,7 +1489,7 @@ exports.mockServices = void 0;
|
|
|
1544
1489
|
}
|
|
1545
1490
|
mockServices2.userInfo = userInfo;
|
|
1546
1491
|
((userInfo2) => {
|
|
1547
|
-
userInfo2.factory = backendPluginApi.createServiceFactory({
|
|
1492
|
+
userInfo2.factory = () => backendPluginApi.createServiceFactory({
|
|
1548
1493
|
service: backendPluginApi.coreServices.userInfo,
|
|
1549
1494
|
deps: {},
|
|
1550
1495
|
factory() {
|
|
@@ -1556,7 +1501,7 @@ exports.mockServices = void 0;
|
|
|
1556
1501
|
}));
|
|
1557
1502
|
})(userInfo = mockServices2.userInfo || (mockServices2.userInfo = {}));
|
|
1558
1503
|
((cache2) => {
|
|
1559
|
-
cache2.factory = cache.cacheServiceFactory;
|
|
1504
|
+
cache2.factory = () => cache.cacheServiceFactory;
|
|
1560
1505
|
cache2.mock = simpleMock(backendPluginApi.coreServices.cache, () => ({
|
|
1561
1506
|
delete: jest.fn(),
|
|
1562
1507
|
get: jest.fn(),
|
|
@@ -1565,61 +1510,61 @@ exports.mockServices = void 0;
|
|
|
1565
1510
|
}));
|
|
1566
1511
|
})(mockServices2.cache || (mockServices2.cache = {}));
|
|
1567
1512
|
((database2) => {
|
|
1568
|
-
database2.factory = database.databaseServiceFactory;
|
|
1513
|
+
database2.factory = () => database.databaseServiceFactory;
|
|
1569
1514
|
database2.mock = simpleMock(backendPluginApi.coreServices.database, () => ({
|
|
1570
1515
|
getClient: jest.fn()
|
|
1571
1516
|
}));
|
|
1572
1517
|
})(mockServices2.database || (mockServices2.database = {}));
|
|
1573
1518
|
((rootHealth2) => {
|
|
1574
|
-
rootHealth2.factory = rootHealth.rootHealthServiceFactory;
|
|
1519
|
+
rootHealth2.factory = () => rootHealth.rootHealthServiceFactory;
|
|
1575
1520
|
rootHealth2.mock = simpleMock(backendPluginApi.coreServices.rootHealth, () => ({
|
|
1576
1521
|
getLiveness: jest.fn(),
|
|
1577
1522
|
getReadiness: jest.fn()
|
|
1578
1523
|
}));
|
|
1579
1524
|
})(mockServices2.rootHealth || (mockServices2.rootHealth = {}));
|
|
1580
1525
|
((httpRouter2) => {
|
|
1581
|
-
httpRouter2.factory = httpRouter.httpRouterServiceFactory;
|
|
1526
|
+
httpRouter2.factory = () => httpRouter.httpRouterServiceFactory;
|
|
1582
1527
|
httpRouter2.mock = simpleMock(backendPluginApi.coreServices.httpRouter, () => ({
|
|
1583
1528
|
use: jest.fn(),
|
|
1584
1529
|
addAuthPolicy: jest.fn()
|
|
1585
1530
|
}));
|
|
1586
1531
|
})(mockServices2.httpRouter || (mockServices2.httpRouter = {}));
|
|
1587
1532
|
((rootHttpRouter2) => {
|
|
1588
|
-
rootHttpRouter2.factory = rootHttpRouter.rootHttpRouterServiceFactory;
|
|
1533
|
+
rootHttpRouter2.factory = () => rootHttpRouter.rootHttpRouterServiceFactory;
|
|
1589
1534
|
rootHttpRouter2.mock = simpleMock(backendPluginApi.coreServices.rootHttpRouter, () => ({
|
|
1590
1535
|
use: jest.fn()
|
|
1591
1536
|
}));
|
|
1592
1537
|
})(mockServices2.rootHttpRouter || (mockServices2.rootHttpRouter = {}));
|
|
1593
1538
|
((lifecycle2) => {
|
|
1594
|
-
lifecycle2.factory = lifecycle.lifecycleServiceFactory;
|
|
1539
|
+
lifecycle2.factory = () => lifecycle.lifecycleServiceFactory;
|
|
1595
1540
|
lifecycle2.mock = simpleMock(backendPluginApi.coreServices.lifecycle, () => ({
|
|
1596
1541
|
addShutdownHook: jest.fn(),
|
|
1597
1542
|
addStartupHook: jest.fn()
|
|
1598
1543
|
}));
|
|
1599
1544
|
})(mockServices2.lifecycle || (mockServices2.lifecycle = {}));
|
|
1600
1545
|
((logger2) => {
|
|
1601
|
-
logger2.factory = logger.loggerServiceFactory;
|
|
1546
|
+
logger2.factory = () => logger.loggerServiceFactory;
|
|
1602
1547
|
logger2.mock = simpleMock(
|
|
1603
1548
|
backendPluginApi.coreServices.logger,
|
|
1604
1549
|
() => createLoggerMock()
|
|
1605
1550
|
);
|
|
1606
1551
|
})(mockServices2.logger || (mockServices2.logger = {}));
|
|
1607
1552
|
((permissions2) => {
|
|
1608
|
-
permissions2.factory = permissions.permissionsServiceFactory;
|
|
1553
|
+
permissions2.factory = () => permissions.permissionsServiceFactory;
|
|
1609
1554
|
permissions2.mock = simpleMock(backendPluginApi.coreServices.permissions, () => ({
|
|
1610
1555
|
authorize: jest.fn(),
|
|
1611
1556
|
authorizeConditional: jest.fn()
|
|
1612
1557
|
}));
|
|
1613
1558
|
})(mockServices2.permissions || (mockServices2.permissions = {}));
|
|
1614
1559
|
((rootLifecycle2) => {
|
|
1615
|
-
rootLifecycle2.factory = rootLifecycle.rootLifecycleServiceFactory;
|
|
1560
|
+
rootLifecycle2.factory = () => rootLifecycle.rootLifecycleServiceFactory;
|
|
1616
1561
|
rootLifecycle2.mock = simpleMock(backendPluginApi.coreServices.rootLifecycle, () => ({
|
|
1617
1562
|
addShutdownHook: jest.fn(),
|
|
1618
1563
|
addStartupHook: jest.fn()
|
|
1619
1564
|
}));
|
|
1620
1565
|
})(mockServices2.rootLifecycle || (mockServices2.rootLifecycle = {}));
|
|
1621
1566
|
((scheduler2) => {
|
|
1622
|
-
scheduler2.factory = scheduler.schedulerServiceFactory;
|
|
1567
|
+
scheduler2.factory = () => scheduler.schedulerServiceFactory;
|
|
1623
1568
|
scheduler2.mock = simpleMock(backendPluginApi.coreServices.scheduler, () => ({
|
|
1624
1569
|
createScheduledTaskRunner: jest.fn(),
|
|
1625
1570
|
getScheduledTasks: jest.fn(),
|
|
@@ -1628,7 +1573,7 @@ exports.mockServices = void 0;
|
|
|
1628
1573
|
}));
|
|
1629
1574
|
})(mockServices2.scheduler || (mockServices2.scheduler = {}));
|
|
1630
1575
|
((urlReader2) => {
|
|
1631
|
-
urlReader2.factory = urlReader.urlReaderServiceFactory;
|
|
1576
|
+
urlReader2.factory = () => urlReader.urlReaderServiceFactory;
|
|
1632
1577
|
urlReader2.mock = simpleMock(backendPluginApi.coreServices.urlReader, () => ({
|
|
1633
1578
|
readTree: jest.fn(),
|
|
1634
1579
|
readUrl: jest.fn(),
|
|
@@ -1636,7 +1581,7 @@ exports.mockServices = void 0;
|
|
|
1636
1581
|
}));
|
|
1637
1582
|
})(mockServices2.urlReader || (mockServices2.urlReader = {}));
|
|
1638
1583
|
((events2) => {
|
|
1639
|
-
events2.factory = pluginEventsNode.eventsServiceFactory;
|
|
1584
|
+
events2.factory = () => pluginEventsNode.eventsServiceFactory;
|
|
1640
1585
|
events2.mock = simpleMock(pluginEventsNode.eventsServiceRef, () => ({
|
|
1641
1586
|
publish: jest.fn(),
|
|
1642
1587
|
subscribe: jest.fn()
|
|
@@ -1651,7 +1596,6 @@ const defaultServiceFactories = [
|
|
|
1651
1596
|
exports.mockServices.database.factory(),
|
|
1652
1597
|
exports.mockServices.httpAuth.factory(),
|
|
1653
1598
|
exports.mockServices.httpRouter.factory(),
|
|
1654
|
-
exports.mockServices.identity.factory(),
|
|
1655
1599
|
exports.mockServices.lifecycle.factory(),
|
|
1656
1600
|
exports.mockServices.logger.factory(),
|
|
1657
1601
|
exports.mockServices.permissions.factory(),
|
|
@@ -1659,7 +1603,6 @@ const defaultServiceFactories = [
|
|
|
1659
1603
|
exports.mockServices.rootLifecycle.factory(),
|
|
1660
1604
|
exports.mockServices.rootLogger.factory(),
|
|
1661
1605
|
exports.mockServices.scheduler.factory(),
|
|
1662
|
-
exports.mockServices.tokenManager.factory(),
|
|
1663
1606
|
exports.mockServices.userInfo.factory(),
|
|
1664
1607
|
exports.mockServices.urlReader.factory(),
|
|
1665
1608
|
exports.mockServices.events.factory()
|
|
@@ -2350,10 +2293,18 @@ class ServiceFactoryTester {
|
|
|
2350
2293
|
}
|
|
2351
2294
|
}
|
|
2352
2295
|
|
|
2296
|
+
function mockErrorHandler() {
|
|
2297
|
+
return rootHttpRouter.MiddlewareFactory.create({
|
|
2298
|
+
config: exports.mockServices.rootConfig(),
|
|
2299
|
+
logger: exports.mockServices.rootLogger()
|
|
2300
|
+
}).error();
|
|
2301
|
+
}
|
|
2302
|
+
|
|
2353
2303
|
exports.ServiceFactoryTester = ServiceFactoryTester;
|
|
2354
2304
|
exports.TestCaches = TestCaches;
|
|
2355
2305
|
exports.TestDatabases = TestDatabases;
|
|
2356
2306
|
exports.createMockDirectory = createMockDirectory;
|
|
2307
|
+
exports.mockErrorHandler = mockErrorHandler;
|
|
2357
2308
|
exports.registerMswTestHooks = registerMswTestHooks;
|
|
2358
2309
|
exports.startTestBackend = startTestBackend;
|
|
2359
2310
|
//# sourceMappingURL=index.cjs.js.map
|