@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 CHANGED
@@ -1,15 +1,43 @@
1
1
  # @backstage/backend-test-utils
2
2
 
3
- ## 0.5.1
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-app-api@0.9.3
9
- - @backstage/backend-defaults@0.4.4
10
- - @backstage/plugin-auth-node@0.5.1
11
- - @backstage/plugin-events-node@0.3.10
12
- - @backstage/backend-plugin-api@0.8.1
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` Use `CreateMockDirectoryOptions` instead.
21
- - `CreateMockDirectoryOptions` Use `registerMswTestHooks` instead.
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
- const factoryWithOptions = (options) => backendPluginApi.createServiceFactory({
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