summaryrefslogtreecommitdiff
path: root/node_modules/snekfetch/test/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/snekfetch/test/main.js')
-rw-r--r--node_modules/snekfetch/test/main.js152
1 files changed, 152 insertions, 0 deletions
diff --git a/node_modules/snekfetch/test/main.js b/node_modules/snekfetch/test/main.js
new file mode 100644
index 0000000..87f60fc
--- /dev/null
+++ b/node_modules/snekfetch/test/main.js
@@ -0,0 +1,152 @@
+const { Snekfetch, TestRoot } = require('./interop');
+
+const server = require('./server');
+
+function makeTestObj({ unicode = true, numbers = false } = {}) {
+ const test = {
+ Hello: 'world',
+ Test: numbers ? 1337 : '1337',
+ };
+ if (unicode)
+ test.Unicode = '( ͡° ͜ʖ ͡°)';
+ return {
+ test,
+ check: (obj) => {
+ expect(obj).not.toBeUndefined();
+ expect(obj.Hello).toBe(test.Hello);
+ expect(obj.Test).toBe(test.Test);
+ if (unicode)
+ expect(obj.Unicode).toBe(test.Unicode);
+ },
+ };
+}
+
+test('should return a promise', () => {
+ expect(Snekfetch.get(`${TestRoot}/get`).end())
+ .toBeInstanceOf(Promise);
+});
+
+test('should reject with error on network failure', () => {
+ const invalid = 'http://localhost:0/';
+ /* https://gc.gy/❥ȗ.png
+ return expect(Snekfetch.get(invalid).end())
+ .rejects.toBeInstanceOf(Error);*/
+ return Snekfetch.get(invalid).catch((err) => {
+ expect(err.name).toMatch(/(Fetch)?Error/);
+ });
+});
+
+test('should resolve on success', () =>
+ Snekfetch.get(`${TestRoot}/get`).then((res) => {
+ expect(res.status).toBe(200);
+ expect(res.ok).toBe(true);
+ expect(res).toHaveProperty('text');
+ expect(res).toHaveProperty('body');
+ })
+);
+
+test('end should work', () =>
+ Snekfetch.get(`${TestRoot}/get`).end((err, res) => {
+ expect(err).toBe(null);
+ expect(res.body).not.toBeUndefined();
+ })
+);
+
+test('should reject if response is not between 200 and 300', () =>
+ Snekfetch.get(`${TestRoot}/404`).catch((err) => {
+ expect(err.status).toBe(404);
+ expect(err.ok).toBe(false);
+ })
+);
+
+test('unzipping works', () =>
+ Snekfetch.get(`${TestRoot}/gzip`)
+ .then((res) => {
+ expect(res.body).not.toBeUndefined();
+ expect(res.body.gzipped).toBe(true);
+ })
+);
+
+test('query should work', () => {
+ const { test, check } = makeTestObj();
+ Promise.all([
+ Snekfetch.get(`${TestRoot}/get?inline=true`)
+ .query(test).end(),
+ Snekfetch.get(`${TestRoot}/get?inline=true`, { query: test })
+ .end(),
+ ])
+ .then((ress) => {
+ for (const res of ress) {
+ const { args } = res.body;
+ check(args);
+ expect(args.inline).toBe('true');
+ }
+ });
+});
+
+test('headers should work', () => {
+ const { test, check } = makeTestObj({ unicode: false });
+ return Promise.all([
+ Snekfetch.get(`${TestRoot}/get`)
+ .set(test).end(),
+ Snekfetch.get(`${TestRoot}/get`, { headers: test })
+ .end(),
+ ])
+ .then((ress) => {
+ for (const res of ress)
+ check(res.body.headers);
+ });
+});
+
+test('attach should work', () => {
+ const { test, check } = makeTestObj();
+ return Snekfetch.post(`${TestRoot}/post`)
+ .attach(test)
+ .then((res) => check(res.body.form));
+});
+
+test('send should work with json', () => {
+ const { test, check } = makeTestObj({ numbers: true });
+ return Promise.all([
+ Snekfetch.post(`${TestRoot}/post`)
+ .send(test).end(),
+ Snekfetch.post(`${TestRoot}/post`, { data: test })
+ .end(),
+ ])
+ .then((ress) => {
+ for (const res of ress)
+ check(res.body.json);
+ });
+});
+
+test('send should work with urlencoded', () => {
+ const { test, check } = makeTestObj();
+ return Snekfetch.post(`${TestRoot}/post`)
+ .set('content-type', 'application/x-www-form-urlencoded')
+ .send(test)
+ .then((res) => check(res.body.form));
+});
+
+test('invalid json is just text', () =>
+ Snekfetch.get(`http://localhost:${server.port}/invalid-json`)
+ .then((res) => {
+ expect(res.body).toBe('{ "a": 1');
+ })
+);
+
+test('x-www-form-urlencoded response body', () =>
+ Snekfetch.get(`http://localhost:${server.port}/form-urlencoded`)
+ .then((res) => {
+ const { body } = res;
+ expect(body.test).toBe('1');
+ expect(body.hello).toBe('world');
+ })
+);
+
+test('redirects', () =>
+ Snekfetch.get(`${TestRoot}/redirect/1`)
+ .then((res) => {
+ expect(res.body).not.toBeUndefined();
+ expect(res.body.url).toBe(`${TestRoot}/get`);
+ })
+);