UNPKG

moesifapi

Version:

Collection/Data Ingestion API for Moesif

518 lines (454 loc) 16.1 kB
var moesifapi = require('../lib/index.js'); var UserModel = require('../lib/Models/UserModel'); var EventModel = require('../lib/Models/EventModel'); var CompanyModel = require('../lib/Models/CompanyModel'); var SubscriptionModel = require('../lib/Models/SubscriptionModel.js') var CampaignModel = require('../lib/Models/CampaignModel'); const ActionModel = require('../lib/Models/ActionModel.js'); var expect = require('chai').expect; var config = moesifapi.configuration; config.ApplicationId = "Your Application Id"; describe('TestAddEvent', function() { it('createEvent() should return 201 HTTP status', function(done) { var controller = moesifapi.ApiController; var reqHeaders = JSON.parse('{' + '"Host": "api.acmeinc.com",' + '"Accept": "*/*",' + '"Connection": "Keep-Alive",' + '"User-Agent": "Dalvik/2.1.0 (Linux; U; Android 5.0.2; C6906 Build/14.5.A.0.242)",' + '"Content-Type": "application/json",' + '"Content-Length": "126",' + '"Accept-Encoding": "gzip"' + '}'); var reqBody = JSON.parse( '{' + '"items": [' + '{' + '"type": 1,' + '"id": "fwfrf"' + '},' + '{' + '"type": 2,' + '"id": "d43d3f"' + '}' + ']' + '}'); var rspHeaders = JSON.parse('{' + '"Date": "Tue, 25 Feb 2019 23:46:49 GMT",' + '"Vary": "Accept-Encoding",' + '"Pragma": "no-cache",' + '"Expires": "-1",' + '"Content-Type": "application/json; charset=utf-8",' + '"Cache-Control": "no-cache"' + '}'); var rspBody = JSON.parse('{' + '"Error": "InvalidArgumentException",' + '"Message": "Missing field field_a"' + '}'); var metadata = { testData: 1, metaData2: { a: 'abc', b: 'abc' } }; var reqDate = new Date(); var eventReq = { time: reqDate, uri: "https://api.acmeinc.com/items/reviews/", verb: "PATCH", apiVersion: "1.1.0", ipAddress: "61.48.220.123", headers: reqHeaders, body: reqBody }; var eventRsp = { time: (new Date()).setMilliseconds(reqDate.getMilliseconds() + 500), status: 500, headers: rspHeaders, body: rspBody }; var eventModel = { request: eventReq, response: eventRsp, userId: "my_user_id", companyId: "my_company_id", sessionToken: "23jdf0owekfmcn4u3qypxg09w4d8ayrcdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", metadata: metadata }; var request = controller.createEvent(new EventModel(eventModel), function(error, response, context) { console.log(error); expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestAddBatchedEvents', function() { it('createEventsBatch() should return 201 HTTP status', function(done) { var controller = moesifapi.ApiController; var reqHeaders = JSON.parse('{' + '"Host": "api.acmeinc.com",' + '"Accept": "*/*",' + '"Connection": "Keep-Alive",' + '"User-Agent": "Dalvik/2.1.0 (Linux; U; Android 5.0.2; C6906 Build/14.5.A.0.242)",' + '"Content-Type": "application/json",' + '"Content-Length": "126",' + '"Accept-Encoding": "gzip"' + '}'); var reqBody = JSON.parse( '{' + '"items": [' + '{' + '"type": 1,' + '"id": "fwfrf"' + '},' + '{' + '"type": 2,' + '"id": "d43d3f"' + '}' + ']' + '}'); var rspHeaders = JSON.parse('{' + '"Date": "Tue, 25 Feb 2019 23:46:49 GMT",' + '"Vary": "Accept-Encoding",' + '"Pragma": "no-cache",' + '"Expires": "-1",' + '"Content-Type": "application/json; charset=utf-8",' + '"Cache-Control": "no-cache"' + '}'); var rspBody = JSON.parse('{' + '"Error": "InvalidArgumentException",' + '"Message": "Missing field field_a"' + '}'); var reqDate = new Date(); var eventReq = { time: reqDate, uri: "https://api.acmeinc.com/items/reviews/", verb: "PATCH", apiVersion: "1.1.0", ipAddress: "61.48.220.123", headers: reqHeaders, body: reqBody }; var eventRsp = { time: (new Date()).setMilliseconds(reqDate.getMilliseconds() + 300), status: 500, headers: rspHeaders, body: rspBody }; var eventModel = { request: eventReq, response: eventRsp, userId: "my_user_id", companyId: "my_company_id", sessionToken: "23jdf0owekfmcn4u3qypxg09w4d8ayrcdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", metadata: { foo: 'abc', bar: 'efg' } }; var events = [new EventModel(eventModel), new EventModel(eventModel), new EventModel(eventModel), new EventModel(eventModel)]; var request = controller.createEventsBatch(events, function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestUpdateUser', function() { it('updateUser() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var campaign = new CampaignModel({utmSource: "Newsletter", utmMedium: "Email"}); var user = { userId: "12345", companyId: "67890", sessionToken: "23jdf0owekfmcn4u3qypxg09w4d8ayrcdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", metadata: { email: "johndoe@acmeinc.com", string_field: "value_1", number_field: 0, object_field: { field_a: "value_a", field_b: "value_b" } }, campaign: campaign }; var request = controller.updateUser(new UserModel(user), function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestUpdateUsersBatch', function() { it('updateUsersBatch() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var userA = { userId: "12345", companyId: "67890", sessionToken: "23jdf0owekfmcn4u3qypxg09w4d8ayrcdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", metadata: { email: "johndoe@acmeinc.com", string_field: "value_1", number_field: 0, object_field: { field_a: "value_a", field_b: "value_b" } } }; var userB = { userId: "1234", companyId: "6789", sessionToken: "23jdf0oszfexfqe[lwjfiefovprewv4d8ayrcdx8nu2ng]zfeeadedefx43f", metadata: { email: "maryjane@acmeinc.com", string_field: "value_1", number_field: 1, object_field: { field_a: "value_a", field_b: "value_b" } } }; var users = [new UserModel(userA), new UserModel(userB)]; var request = controller.updateUsersBatch(users, function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestGetAppConfig', function() { it('getAppConfig() should return 200 HTTP status', function(done) { var controller = moesifapi.ApiController; var request = controller.getAppConfig(function(error, response, context) { console.log('response body from context'); console.log(JSON.stringify(context.response.body)); console.log('response body from HTTPResuponse object'); console.log(JSON.stringify(context.response.body)); expect(context.response.statusCode).to.equal(200); if (error) done(error); else done(); }); }); }); describe('TestGetRules', function() { it('getRules() should return 200 HTTP status', function(done) { var controller = moesifapi.ApiController; var request = controller.getRules(function(error, response, context) { expect(context.response.statusCode).to.equal(200); if (error) done(error); else done(); }); }); }); describe('TestUpdateCompany', function() { it('updateCompany() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var campaign = new CampaignModel({utmSource: "Adwords", utmMedium: "Twitter"}); var company = { companyId: "12345", sessionToken: "23jdf0owekfmcn4u3qypxg09w4d8ayrcdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", metadata: { email: "johndoe@acmeinc.com", string_field: "value_1", number_field: 0, object_field: { field_a: "value_a", field_b: "value_b" } }, campaign: campaign }; var request = controller.updateCompany(new CompanyModel(company), function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestUpdateCompaniesBatch', function() { it('updateCompaniesBatch() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var companyA = { companyId: "12345", sessionToken: "23jdf0owekfmcn4u3qypxg09w4d8ayrcdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", metadata: { email: "johndoe@acmeinc.com", string_field: "value_1", number_field: 0, object_field: { field_a: "value_a", field_b: "value_b" } } }; var companyB = { companyId: "67890", metadata: { email: "johndoe@acmeinc.com", string_field: "value_1", number_field: 0, object_field: { field_a: "value_a", field_b: "value_b", field_c: "value_c" } } }; var companies = [new CompanyModel(companyA), new CompanyModel(companyB)]; var request = controller.updateCompaniesBatch(companies, function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestUpdateSubscription', function() { it('updateSubscription() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var subscription = { subscriptionId: "12345", companyId: "67890", currentPeriodStart: "2024-01-21T17:32:28.000Z", currentPeriodEnd: "2024-11-21T17:32:28.000Z", status: "active", metadata: { subscription_type: "PAYG", subscription_tier: "Pro", quota: { quota_limit: 1000000, quota_period: "Year" } } }; var request = controller.updateSubscription(new SubscriptionModel(subscription), function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestUpdateSubscriptionsBatch', function() { it('updateSubscriptionsBatch() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var subscriptionA = { subscriptionId: "12345", companyId: "67890", currentPeriodStart: "2024-01-21T17:32:28.000Z", currentPeriodEnd: "2024-11-21T17:32:28.000Z", status: "active", metadata: { subscription_type: "PAYG", subscription_tier: "Pro", quota: { quota_limit: 1000000, quota_period: "Year" } } }; var subscriptionB = { subscriptionId: "abcde", companyId: "xyz", currentPeriodStart: "2024-01-21T17:32:28.000Z", currentPeriodEnd: "2024-11-21T17:32:28.000Z", status: "active", metadata: { subscription_type: "PAYG", subscription_tier: "Enterprise", quota: { quota_limit: 1000000, quota_period: "YEAR" } } }; var subscriptions = [new SubscriptionModel(subscriptionA), new SubscriptionModel(subscriptionB)]; var request = controller.updateSubscriptionsBatch(subscriptions, function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); }); describe('TestSendAction', function() { it('sendAction() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var req_context = { time: new Date(), uri: "https://api.acmeinc.com/items/reviews/", ipAddress: "61.48.220.123", }; var action = { transactionId: "a3765025-46ec-45dd-bc83-b136c8d1d257", actionName: "Clicked Sign Up", sessionToken: "23jdf0owekfmcn4u3qypxg08w4d8ayrcdx8nu2nz]s98y18cx98q3yhwmnhcfx43f", userId: "12345", companyId: "67890", metadata: { email: "johndoe@acmeinc.com", button_label: 'Get Started', sign_up_method: 'Google SSO' }, request: req_context }; var request = controller.sendAction(new ActionModel(action), function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); it('sendActionsBatch() should be success with 201 status', function(done) { var controller = moesifapi.ApiController; var req_contextA = { time: new Date(), uri: "https://api.acmeinc.com/items/reviews/", ipAddress: "61.48.220.123", userAgentString: "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0" }; var req_contextB = { time: new Date(), uri: "https://api.acmeinc.com/pricing/", ipAddress: "61.48.220.126", userAgentString: "PostmanRuntime/7.26.5" }; var actionA = { transactionId: "a3765025-46ec-45dd-bc83-b136a8d1d357", actionName: "Clicked Sign Up", sessionToken: "23abf0owekfmcn4u3qypxg09w4d8ayrcdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", userId: "18340", companyId: "25100", metadata: { email: "alex@acmeinc.com", button_label: 'Get Started', sign_up_method: 'Google SSO' }, request: req_contextA }; var actionB = { transactionId: "a3765024-46ee-45dd-bc83-b136c8d1d250", actionName: "Viewed pricing", sessionToken: "23jdf0owejfmbn4u3qypxg09w4d8ayrxdx8nu2ng]s98y18cx98q3yhwmnhcfx43f", userId: "12390", companyId: "97895", metadata: { email: "kim@acmeinc.com", button_label: 'See pricing', sign_up_method: 'Google SSO' }, request: req_contextB }; var actions = [ new ActionModel(actionA), new ActionModel(actionB) ]; var request = controller.sendActionsBatch(actions, function(error, response, context) { expect(context.response.statusCode).to.equal(201); if (error) done(error); else done(); }); }); });