var chakram = require('chakram'), expect = chakram.expect;
var env = require('../enviroment');
const URL = env.URL;

describe('Account', function() {
  it('should create an admin account', function() {
    let name = env.randomWord(env.randomNumber(1, 25));
    let testObject = {
      'email': `${name}@admin.com`,
      'permission': 'admin',
      'registration': 'NMBR#123456789',
      'username': `${name}`,
      'name': `${name.replace(/\b\w/g, l => l.toUpperCase())}`,
      'password': 'admin',
    };
    return chakram.post(`${URL}end_users`, testObject).then(function(myResponse) {
      expect(myResponse).to.have.status(200);
      expect(myResponse.body.result.permission).to.contain('admin');
    });
  });
  it('should create an user account', function() {
    let name = env.randomWord(env.randomNumber(1, 25));
    let testObject = {
      'email': `${name}@enduser.com`,
      'permission': 'user',
      'registration': 'NMBR#321654987',
      'username': `${name}`,
      'name': `${name.replace(/\b\w/g, l => l.toUpperCase())}`,
      'password': 'end_user',
    };
    return chakram.post(`${URL}end_users`, testObject).then(function(myResponse) {
      expect(myResponse).to.have.status(200);
      expect(myResponse.body.result.permission).to.contain('user');
    });
  });
  it('should login to an admin account', function() {
    let testObject = {
      'email': 'abc@admin.com',
      'password': 'admin',
    };
    return chakram.post(`${URL}end_users/login`, testObject).then(function(myResponse) {
      expect(myResponse).to.have.status(200);
      expect(myResponse.body.result).to.be.a('object');
    });
  });
  it('should login to an user account', function() {
    let testObject = {
      'email': 'user@user.com',
      'password': 'user',
    };
    return chakram.post(`${URL}end_users/login`, testObject).then(function(myResponse) {
      expect(myResponse).to.have.status(200);
      expect(myResponse.body.result).to.be.a('object');
    });
  });
  it('should logout', function() {
    let testObject = {
      'email': 'user@user.com',
      'password': 'user',
    };
    return chakram.post(`${URL}end_users/login`, testObject).then(function(myResponse) {
      return chakram.post(`${URL}end_users/logout?access_token=${myResponse.body.result.id}`).then(function(myResponse2) {
        expect(myResponse2).to.have.status(200);
      });
    });
  });
});