Files
WhatToWatch/test/server/services/plexApi/plexApi.test.js
T
2019-02-19 18:51:56 -06:00

62 lines
2.0 KiB
JavaScript

import request from 'supertest';
import mocha from 'mocha';
import chai from 'chai';
import chaiHttp from 'chai-http';
import nock from 'nock';
import plexResponses from './mocks/plexResponses';
import plexApi from '../../../../server/services/plexApi/plexApi';
const should = chai.should();
describe('plexApi', () => {
// it('sets options when passed valid options object', () => {
// const options = { token: 'testPlexApiToken' };
// const result = plexApi.options;
// result.should.deep.equal({
// token: 'testPlexApiToken',
// });
// });
it('return url params object', () => {
const result = plexApi.getUsersUrlParams();
result.should.deep.equal({
host: 'https://plex.tv/api',
path: '/users',
queryParams: {
'X-Plex-Token': 'testPlexApiToken',
},
});
});
it('returns url', () => {
const PlexApi = plexApi;
const urlParams = PlexApi.getUsersUrlParams();
const url = PlexApi.buildUrl(urlParams);
url.should.equal('https://plex.tv/api/users?X-Plex-Token=testPlexApiToken');
});
it('returns users', async () => {
const usersResponse = `${__dirname}/mocks/getUsersResponse.xml`;
nock('https://plex.tv')
.get('/api/users?X-Plex-Token=testPlexApiToken')
.replyWithFile(200, usersResponse, { 'Content-Type': 'text/xml' });
const PlexApi = plexApi;
const urlParams = PlexApi.getUsersUrlParams();
const url = PlexApi.buildUrl(urlParams);
const result = await PlexApi.request(url);
result.should.deep.equal(plexResponses.getUsersRaw);
});
it('returns users using getUsers', async () => {
const usersResponse = `${__dirname}/mocks/getUsersResponse.xml`;
nock('https://plex.tv')
.get('/api/users?X-Plex-Token=testPlexApiToken')
.replyWithFile(200, usersResponse, { 'Content-Type': 'text/xml' });
const PlexApi = plexApi;
const result = await PlexApi.getUsers();
result.should.deep.equal(plexResponses.getUsersParsed);
});
});