2022-08-25 14:38:20 +00:00
|
|
|
import { expect } from 'chai';
|
|
|
|
|
|
|
|
import Service from '~/src/compose/service';
|
2022-10-18 02:07:40 +00:00
|
|
|
import * as deviceApi from '~/src/device-api';
|
2022-08-25 14:38:20 +00:00
|
|
|
|
|
|
|
describe('compose/service: integration tests', () => {
|
|
|
|
describe('Feature labels', () => {
|
|
|
|
// TODO: this is the only part of the service module that needs to be integration tested. This is becase it
|
|
|
|
// needs to access the database to get the service scoped api keys. If the keys were generated/queried in
|
|
|
|
// App.fromTargetState and passed to the service as a parameter, it would push this module to the domain model
|
|
|
|
// which is where it belongs
|
|
|
|
describe('io.balena.supervisor-api', () => {
|
|
|
|
it('sets BALENA_SUPERVISOR_HOST, BALENA_SUPERVISOR_PORT and BALENA_SUPERVISOR_ADDRESS env vars', async () => {
|
|
|
|
const service = await Service.fromComposeObject(
|
|
|
|
{
|
|
|
|
appId: 123456,
|
|
|
|
serviceId: 123456,
|
|
|
|
serviceName: 'foobar',
|
|
|
|
labels: {
|
|
|
|
'io.balena.features.supervisor-api': '1',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
appName: 'test',
|
|
|
|
supervisorApiHost: 'supervisor',
|
|
|
|
listenPort: 48484,
|
|
|
|
} as any,
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(
|
|
|
|
service.config.environment['BALENA_SUPERVISOR_HOST'],
|
|
|
|
).to.be.equal('supervisor');
|
|
|
|
|
|
|
|
expect(
|
|
|
|
service.config.environment['BALENA_SUPERVISOR_PORT'],
|
|
|
|
).to.be.equal('48484');
|
|
|
|
|
|
|
|
expect(
|
|
|
|
service.config.environment['BALENA_SUPERVISOR_ADDRESS'],
|
|
|
|
).to.be.equal('http://supervisor:48484');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('sets BALENA_API_KEY env var to the scoped API key value', async () => {
|
2022-10-18 02:07:40 +00:00
|
|
|
const mykey = await deviceApi.generateScopedKey(123456, 'foobar');
|
2022-08-25 14:38:20 +00:00
|
|
|
|
|
|
|
const service = await Service.fromComposeObject(
|
|
|
|
{
|
|
|
|
appId: 123456,
|
|
|
|
serviceId: 123456,
|
|
|
|
serviceName: 'foobar',
|
|
|
|
labels: {
|
|
|
|
'io.balena.features.supervisor-api': '1',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
appName: 'test',
|
|
|
|
supervisorApiHost: 'supervisor',
|
|
|
|
listenPort: 48484,
|
|
|
|
} as any,
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(
|
|
|
|
service.config.environment['BALENA_SUPERVISOR_API_KEY'],
|
|
|
|
).to.be.equal(mykey);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|