UNPKG

filemaker-rest-connector

Version:

NPM Package to make queries to FileMaker's REST API. Will allow node.js to communicate with the FileMaker Server DATA REST API.

473 lines (422 loc) 10.8 kB
'use strict'; var expect = require ('chai').expect; var filemakerTests = require('../index'); var layout = 'rest_contacts'; var loginHeaders = { "protocol" : "https", "ip" : "127.0.0.1", "solution" : "contacts", "headers" : {"Content-Type" : "application/json"}, "body" : {"user" : "Admin", "password" : "Admin", "layout": layout}, "selfSignedCertificate" : true } describe('#FILEMAKER TESTS', function() { describe('#CONSTRUCTOR', function () { var filemaker; it('Get Protocol', function() { filemaker = filemakerTests(loginHeaders); var result = filemaker.getProtocol(); expect(result).to.equal(loginHeaders.protocol); }); it('Get IP', function() { filemaker = filemakerTests(loginHeaders); var result = filemaker.getIp(); expect(result).to.equal(loginHeaders.ip); }); it('Get Solution', function() { filemaker = filemakerTests(loginHeaders); var result = filemaker.getSolution(); expect(result).to.equal(loginHeaders.solution); }); it('Set/Get Headers', function() { filemaker = filemakerTests(); var headers = {"Content-Type" : "application/json"}; filemaker.setHeaders(headers); var result = filemaker.getHeaders(); expect(result).to.deep.equal(headers); }); it('Set/Get Body', function() { filemaker = filemakerTests(); var body = {"user" : "Username", "password" : "Password", "layout": "Layout"}; filemaker.setBody(body); var result = filemaker.getBody(); expect(result).to.deep.equal(body); }); it('Set/Get Result', function() { filemaker = filemakerTests(); var resultT = {"errorCode" : "0", "layout" : "Layout", "token": "FM-Token"}; filemaker.setResult(resultT); var result = filemaker.getResult(); expect(result).to.deep.equal(resultT); }); it('Set/Get Token', function() { filemaker = filemakerTests(loginHeaders); var token = '123qweasdzxc'; filemaker.setToken(token); var result = filemaker.getToken(); expect(result).to.deep.equal(token); }); it('Invalid Token', function(done){ filemaker = filemakerTests(loginHeaders); var token = '123qweasdzxc'; filemaker.setToken(token); filemaker.validToken(layout, function(error, result) { if(!error) { if(result.errorCode === '952') { done(); } else if (result.errorCode !== '0') { done(result.errorMessage); } else if (result.errorMessage !== '') { done(result.errorMessage); } else { done(result.errorMessage); } } else { done(error); } }); }); it('Set/Get RecordId', function() { filemaker = filemakerTests(); var recordId = '100'; filemaker.setRecordId(recordId); var result = filemaker.getRecordId(); expect(result).to.deep.equal(recordId); }); }); describe('#AUTHENTICATION', function (){ describe('#LOGIN', function () { it('Login', function(done) { var filemaker = filemakerTests(loginHeaders); filemaker.login(function(error, result) { if(!error) { if(result.errorMessage === 'Method Not Allowed') { done(result.errorMessage); } else if(result.errorMessage === 'Unsupported Media Type') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { filemaker.logout(function(error, result) { done(); }); } } else { done(error); } }); }); }); describe('#LOGOUT', function() { var filemaker = filemakerTests(loginHeaders); before(function (done) { filemaker.login(function(error, result) { if(error) { done(error); } else { done(); } }); }); it('Logout', function(done) { filemaker.logout(function(error, result) { if(!error) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } } else { done(error); } }); }); }); }); describe('#RECORD', function(){ var filemaker; beforeEach(function (done) { filemaker = filemakerTests(loginHeaders); filemaker.login(function(error, result) { if(error) { done(error); } else { done(); } }); }); afterEach(function (done) { filemaker.logout(function(error, result){ if(error) { done(error); } else { done(); } }); }); describe('#CREATE/EDIT/DELETE', function(){ var recordId; it('Create Record (John Smith)', function(done) { var params = { "Title" : "Mr", "First" : "John", "Last" : "Smith" } filemaker.create(layout, params, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { recordId = filemaker.getRecordId(); done(); } }); }); it('Edit Record (Jane Smith)', function(done) { var params = { "Title" : "Mrs", "First" : "Jane", "Last" : "Smith" } filemaker.edit(layout, recordId, params, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); it('Delete Record (John Smith)', function(done) { filemaker.delete(layout, recordId, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); }); describe('#FINDS/GETS', function(){ it('Get Records', function(done) { filemaker.getRecords(layout, null, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); it('Get Records (Offset)', function(done) { var params = { "offset" : 2 }; filemaker.getRecords(layout, params, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); it('Get Records (Range)', function(done) { var params = { "offset" : 10, "range" : 10 }; filemaker.getRecords(layout, params, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); it('Get Records (Sort)', function(done) { var params = { "offset" : 10, "sort" : [ { "fieldName" : "Title", "sortOrder" : "ascend" }, { "fieldName" : "Last", "sortOrder" : "descend" } ] }; filemaker.getRecords(layout, params, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); it('Get Records (Portal)', function(done) { var params = { "offset" : 10, "portal" : { "Portal1" : { "offset" : 1, "range" : 2 }, "Portal2" : { "offset" : 1, "range" : 2 } } }; filemaker.getRecords(layout, params, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); it('Get Record', function(done) { filemaker.getRecord(layout, null, 1041, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); it('Get Record (Portal)', function(done) { var params = { "portal" : { "Portal1" : { "offset" : 1, "range" : 2 } } }; filemaker.getRecord(layout, params, 1041, function(error, result) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } }); }); }); }); describe('#FIND', function(){ var filemaker = filemakerTests(loginHeaders); before(function (done) { filemaker.login(function(error, result) { if(error) { done(error); } else { done(); } }); }); after(function (done) { filemaker.logout(function(error, result){ if(error) { done(error); } else { done(); } }); }); it('Find Records', function(done) { var params = { "query" : [{"Title" : "Mr", "omit" : "false"}], "sort" : [{"fieldName" : "Last", "sortOrder" : "descend"}], "offset" : "10", "range" : "10", "portal" : { "Portal1" : { "offset" : "1", "range" : "2" } } }; filemaker.find(layout, params, function(error, result) { if(!error) { if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } } else { done(error); } }); }); }); describe('#GLOBAL FIELDS', function(){ var filemaker; before(function (done) { filemaker = filemakerTests(loginHeaders); filemaker.login(function(error, result) { if(error) { done(error); } else { done(); } }); }); after(function (done) { filemaker.logout(function(error, result){ if(error) { done(error); } else { done(); } }); }); it('Set Global Fields', function(done) { var params = { "globalFields" : { "global1" : "Test1", "global2" : "Test2" } }; filemaker.setGlobals(layout, params, function(error, result) { if(!error) { if(result.errorMessage === 'Missing FM-Data-token.') { done(result.errorMessage); } else if (result.errorCode !== '0') { done(result.errorMessage); } else { done(); } } else { done(error); } }); }); }); });