6f221ab3c1
* refactor: typescript the backends * feat: support multiple files upload for GitLab and BitBucket * fix: load entry media files from media folder or UI state * chore: cleanup log message * chore: code cleanup * refactor: typescript the test backend * refactor: cleanup getEntry unsued variables * refactor: moved shared backend code to lib util * chore: rename files to preserve history * fix: bind readFile method to API classes * test(e2e): switch to chrome in cypress tests * refactor: extract common api methods * refactor: remove most of immutable js usage from backends * feat(backend-gitlab): initial editorial workflow support * feat(backend-gitlab): implement missing workflow methods * chore: fix lint error * feat(backend-gitlab): support files deletion * test(e2e): add gitlab cypress tests * feat(backend-bitbucket): implement missing editorial workflow methods * test(e2e): add BitBucket backend e2e tests * build: update node version to 12 on netlify builds * fix(backend-bitbucket): extract BitBucket avatar url * test: fix git-gateway AuthenticationPage test * test(e2e): fix some backend tests * test(e2e): fix tests * test(e2e): add git-gateway editorial workflow test * chore: code cleanup * test(e2e): revert back to electron * test(e2e): add non editorial workflow tests * fix(git-gateway-gitlab): don't call unpublishedEntry in simple workflow gitlab git-gateway doesn't support editorial workflow APIs yet. This change makes sure not to call them in simple workflow * refactor(backend-bitbucket): switch to diffstat API instead of raw diff * chore: fix test * test(e2e): add more git-gateway tests * fix: post rebase typescript fixes * test(e2e): fix tests * fix: fix parsing of content key and add tests * refactor: rename test file * test(unit): add getStatues unit tests * chore: update cypress * docs: update beta docs
88 lines
2.4 KiB
JavaScript
88 lines
2.4 KiB
JavaScript
import API from '../GitHubAPI';
|
|
|
|
describe('github API', () => {
|
|
describe('request', () => {
|
|
beforeEach(() => {
|
|
const fetch = jest.fn();
|
|
global.fetch = fetch;
|
|
global.Date = jest.fn(() => ({ getTime: () => 1000 }));
|
|
});
|
|
|
|
afterEach(() => {
|
|
jest.resetAllMocks();
|
|
});
|
|
|
|
it('should fetch url with authorization header', async () => {
|
|
const api = new API({
|
|
apiRoot: 'https://site.netlify.com/.netlify/git/github',
|
|
tokenPromise: () => Promise.resolve('token'),
|
|
});
|
|
|
|
fetch.mockResolvedValue({
|
|
text: jest.fn().mockResolvedValue('some response'),
|
|
ok: true,
|
|
status: 200,
|
|
headers: { get: () => '' },
|
|
});
|
|
const result = await api.request('/some-path');
|
|
expect(result).toEqual('some response');
|
|
expect(fetch).toHaveBeenCalledTimes(1);
|
|
expect(fetch).toHaveBeenCalledWith(
|
|
'https://site.netlify.com/.netlify/git/github/some-path?ts=1000',
|
|
{
|
|
headers: {
|
|
Authorization: 'Bearer token',
|
|
'Content-Type': 'application/json; charset=utf-8',
|
|
},
|
|
},
|
|
);
|
|
});
|
|
|
|
it('should throw error on not ok response with message property', async () => {
|
|
const api = new API({
|
|
apiRoot: 'https://site.netlify.com/.netlify/git/github',
|
|
tokenPromise: () => Promise.resolve('token'),
|
|
});
|
|
|
|
fetch.mockResolvedValue({
|
|
text: jest.fn().mockResolvedValue({ message: 'some error' }),
|
|
ok: false,
|
|
status: 404,
|
|
headers: { get: () => '' },
|
|
});
|
|
|
|
await expect(api.request('some-path')).rejects.toThrow(
|
|
expect.objectContaining({
|
|
message: 'some error',
|
|
name: 'API_ERROR',
|
|
status: 404,
|
|
api: 'Git Gateway',
|
|
}),
|
|
);
|
|
});
|
|
|
|
it('should throw error on not ok response with msg property', async () => {
|
|
const api = new API({
|
|
apiRoot: 'https://site.netlify.com/.netlify/git/github',
|
|
tokenPromise: () => Promise.resolve('token'),
|
|
});
|
|
|
|
fetch.mockResolvedValue({
|
|
text: jest.fn().mockResolvedValue({ msg: 'some error' }),
|
|
ok: false,
|
|
status: 404,
|
|
headers: { get: () => '' },
|
|
});
|
|
|
|
await expect(api.request('some-path')).rejects.toThrow(
|
|
expect.objectContaining({
|
|
message: 'some error',
|
|
name: 'API_ERROR',
|
|
status: 404,
|
|
api: 'Git Gateway',
|
|
}),
|
|
);
|
|
});
|
|
});
|
|
});
|