import {expect} from 'chai';
import {Config} from '../../src/config';
import {Consul} from '../../src/consul';
import {Map} from '../../src/types/lang';
import {Address} from '../../src/protocol/protocol';


describe('Test consul', () => {
    it ('with lookup or default', (ok) => {
        var client = new Consul();
        var addr = new Address('consul.service.byted.org', 2280);
        client.get(addr, 'toutiao.passport.session', function (err, data) {
            expect(err).to.be.a('null');
            expect(data).to.be.an('array').that.not.empty;
            expect(data[0]).to.include.all.keys('host', 'port');
            ok();
        }, 'prod', null, 'lookup', {timeout: 1000});
    });

    it ('with lookup timeout', (ok) => {
        var client = new Consul();
        var addr = new Address('consul.service.byted.org', 2280);
        client.get(addr, 'toutiao.passport.session', function (err, data) {
            expect(err.code).to.be.equal('ETIMEDOUT');
            ok();
        }, 'prod', null, 'lookup', {timeout: 1});
    });

    it ('with catelog', (ok) => {
        var client = new Consul();
        var addr = new Address('consul.service.byted.org', 2280);
        client.get(addr, 'toutiao.passport.session', function (err, data) {
            expect(err).to.be.a('null');            
            expect(data).to.be.an('array').that.not.empty;
            expect(data[0]).to.include.all.keys('host', 'port');
            ok();
        }, 'prod', null, 'backlog');
    });
});