@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 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` Use `CreateMockDirectoryOptions` instead.
10
- - `CreateMockDirectoryOptions` Use `registerMswTestHooks` instead.
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
- const factoryWithOptions = (options) => backendPluginApi.createServiceFactory({
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