import { ONECLICK_FRONT_URL } from '../../src/lib/constants' import UUID from 'uuid/v1' import Url from '../../src/models/url' import parseUrl from 'url-parse' describe(`Test url's class`, () => { it('Instanciates class', () => { expect(new Url()).toBeInstanceOf(Url) }) it('Instanciates class using merchant params', () => { const opt = { merchantID: UUID() } const url = new Url(opt) expect(url).toBeInstanceOf(Url) expect(url.merchantID).toBe(opt.merchantID) expect(url.token).toBeNull() }) it('Instanciates class using token params', () => { const opt = { token: UUID() } const url = new Url(opt) expect(url).toBeInstanceOf(Url) expect(url.token).toBe(opt.token) expect(url.merchantID).toBeNull() }) it('Instanciates class using all params', () => { const opt = { merchantID: UUID(), token: UUID(), } const url = new Url(opt) expect(url).toBeInstanceOf(Url) expect(url.token).toBe(opt.token) expect(url.merchantID).toBe(opt.merchantID) }) it('Sets params after', () => { const opt = { merchantID: UUID(), token: UUID(), } const url = new Url() url.token = opt.token url.merchantID = opt.merchantID expect(url).toBeInstanceOf(Url) expect(url.token).toBe(opt.token) expect(url.merchantID).toBe(opt.merchantID) }) it('Encode an url', () => { const opt = { merchantID: UUID(), token: UUID(), } const url = new Url(opt) expect(url).toBeInstanceOf(Url) expect(url.token).toBe(opt.token) expect(url.merchantID).toBe(opt.merchantID) const uri = url.encode() const parsed = parseUrl(uri, true) expect(parsed.origin).toBe(ONECLICK_FRONT_URL) expect(parsed.query).toEqual({ m: opt.merchantID, t: opt.token, v: '1' }) }) it('Decode an url', () => { const opt = { merchantID: UUID(), token: UUID(), version: 2 } const url = new Url(opt) expect(url).toBeInstanceOf(Url) expect(url.token).toBe(opt.token) expect(url.merchantID).toBe(opt.merchantID) const uri = url.encode() const parsed = parseUrl(uri, true) expect(parsed.origin).toBe(ONECLICK_FRONT_URL) expect(parsed.query).toEqual({ m: opt.merchantID, t: opt.token, v: `${opt.version}` }) url.url = uri url.decode() expect(url.token).toBe(opt.token) expect(url.merchantID).toBe(opt.merchantID) }) })