refactor: 💡 Add channel ability for asciicasts (#174)
This commit is contained in:
1 parent
3bf2620b2c
commit
62ec3fe914
14 files changed
+1783
-860
No files matched your search
@@ -0,0 +1,73 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
import { MIME_TYPE_ASCIICAST } from 'api/models/channel-recording';
|
||||
import { TYPE_SESSION_RECORDING_SSH } from 'api/models/session-recording';
|
||||
|
||||
module('Unit | Ability | channel-recording', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
let canService;
|
||||
let store;
|
||||
|
||||
hooks.beforeEach(function () {
|
||||
canService = this.owner.lookup('service:can');
|
||||
store = this.owner.lookup('service:store');
|
||||
});
|
||||
|
||||
test('it exists', function (assert) {
|
||||
const ability = this.owner.lookup('ability:channel-recording');
|
||||
assert.ok(ability);
|
||||
});
|
||||
|
||||
test('it can download asciicast', function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
const sessionRecordingModel = store.createRecord('session-recording', {
|
||||
authorized_actions: ['download'],
|
||||
type: TYPE_SESSION_RECORDING_SSH,
|
||||
});
|
||||
const connectionRecordingModel = store.createRecord(
|
||||
'connection-recording',
|
||||
{
|
||||
session_recording: sessionRecordingModel,
|
||||
}
|
||||
);
|
||||
const channelRecordingModel = store.createRecord('channel-recording', {
|
||||
mime_types: [MIME_TYPE_ASCIICAST],
|
||||
connection_recording: connectionRecordingModel,
|
||||
});
|
||||
|
||||
assert.true(
|
||||
canService.can(
|
||||
'downloadAsciicast channel-recording',
|
||||
channelRecordingModel
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
test('it cannot download asciicast without the correct mime type', function (assert) {
|
||||
assert.expect(1);
|
||||
|
||||
const sessionRecordingModel = store.createRecord('session-recording', {
|
||||
authorized_actions: ['download'],
|
||||
type: TYPE_SESSION_RECORDING_SSH,
|
||||
});
|
||||
const connectionRecordingModel = store.createRecord(
|
||||
'connection-recording',
|
||||
{
|
||||
session_recording: sessionRecordingModel,
|
||||
}
|
||||
);
|
||||
const channelRecordingModel = store.createRecord('channel-recording', {
|
||||
mime_types: ['unknown'],
|
||||
connection_recording: connectionRecordingModel,
|
||||
});
|
||||
|
||||
assert.false(
|
||||
canService.can(
|
||||
'downloadAsciicast channel-recording',
|
||||
channelRecordingModel
|
||||
)
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,84 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
import { TYPE_SESSION_RECORDING_SSH } from 'api/models/session-recording';
|
||||
|
||||
module('Unit | Ability | session-recording', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
let canService;
|
||||
let store;
|
||||
|
||||
hooks.beforeEach(function () {
|
||||
canService = this.owner.lookup('service:can');
|
||||
store = this.owner.lookup('service:store');
|
||||
});
|
||||
|
||||
test('it exists', function (assert) {
|
||||
const ability = this.owner.lookup('ability:session-recording');
|
||||
assert.ok(ability);
|
||||
});
|
||||
|
||||
test('can download when an ssh recording has download authorization', function (assert) {
|
||||
assert.expect(2);
|
||||
|
||||
const recordingWithAuthorizedAction = store.createRecord(
|
||||
'session-recording',
|
||||
{
|
||||
authorized_actions: ['download'],
|
||||
type: TYPE_SESSION_RECORDING_SSH,
|
||||
}
|
||||
);
|
||||
const recordingWithoutAuthorizedAction = store.createRecord(
|
||||
'session-recording',
|
||||
{
|
||||
authorized_actions: [],
|
||||
type: TYPE_SESSION_RECORDING_SSH,
|
||||
}
|
||||
);
|
||||
|
||||
assert.true(
|
||||
canService.can(
|
||||
'download session-recording',
|
||||
recordingWithAuthorizedAction
|
||||
)
|
||||
);
|
||||
assert.false(
|
||||
canService.can(
|
||||
'download session-recording',
|
||||
recordingWithoutAuthorizedAction
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
test('cannot download when a recording is not ssh type', function (assert) {
|
||||
assert.expect(2);
|
||||
|
||||
const recordingWithAuthorizedAction = store.createRecord(
|
||||
'session-recording',
|
||||
{
|
||||
authorized_actions: ['download'],
|
||||
type: 'unknown',
|
||||
}
|
||||
);
|
||||
const recordingWithoutAuthorizedAction = store.createRecord(
|
||||
'session-recording',
|
||||
{
|
||||
authorized_actions: [],
|
||||
type: 'unknown',
|
||||
}
|
||||
);
|
||||
|
||||
assert.false(
|
||||
canService.can(
|
||||
'download session-recording',
|
||||
recordingWithAuthorizedAction
|
||||
)
|
||||
);
|
||||
assert.false(
|
||||
canService.can(
|
||||
'download session-recording',
|
||||
recordingWithoutAuthorizedAction
|
||||
)
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,6 @@
|
||||
import { module, test } from 'qunit';
|
||||
import { setupTest } from 'ember-qunit';
|
||||
import { MIME_TYPE_ASCIICAST } from 'api/models/channel-recording';
|
||||
|
||||
module('Unit | Model | channel-recording', function (hooks) {
|
||||
setupTest(hooks);
|
||||
@@ -9,4 +10,17 @@ module('Unit | Model | channel-recording', function (hooks) {
|
||||
let model = store.createRecord('channel-recording', {});
|
||||
assert.ok(model);
|
||||
});
|
||||
|
||||
test('it has isAsciicast property and returns the expected values', async function (assert) {
|
||||
assert.expect(2);
|
||||
const store = this.owner.lookup('service:store');
|
||||
const modelA = store.createRecord('channel-recording', {
|
||||
mime_types: [MIME_TYPE_ASCIICAST],
|
||||
});
|
||||
const modelB = store.createRecord('channel-recording', {
|
||||
mime_types: ['random'],
|
||||
});
|
||||
assert.true(modelA.isAsciicast);
|
||||
assert.false(modelB.isAsciicast);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user