Commit 35fe2033 authored by Patricio Bruna's avatar Patricio Bruna

Accounts Aliases

parent ffcc8d7b
......@@ -280,10 +280,21 @@ account.getMailbox(callback);
### Get Mailbox Size
```javascript
account.getMailboxSize(callback);
// Returns a Integer represeting Bytes
// Returns a Integer represeting Bytes
//
```
### Account Alias
The `alias` **must** be an email with `Domain` in Zimbra.
```javascript
account.addAccountAlias(alias, callback);
// Empty {} if everything goes Ok
account.removeAccountAlias(alias, callback);
// Empty {} if everything goes Ok
```
### Cos Name
The account only has the Id of the Cos, `zimbraCOSId`, but not the name. To get the name you call `zimbraCosName` on the Account:
......
......@@ -5,20 +5,24 @@
## Accounts
* [X] Add y remove Alias
* [ ] Que Dominios administra una cuenta
* [ ] Espacio usado
* [X] Espacio usado
## DistributionList
* [ ] Listas privadas
* [ ] Toda su gestion
## Domains
* [X] Devolver casillas segun el tipo de plan, cantidad asignadas y cantidad utilizadas para un dominio
* [X] Limite de casillas
* [ ] Add y remove Admins
* [ ] Devolver Tipo de renovación
* [ ] Devolver Fecha de la proxima renovación
* [ ] Devolver Empresa (esto entiendo necesitamos otro API)
* [X] Devolver casillas segun el tipo de plan, cantidad asignadas y cantidad utilizadas para un dominio
* [X] Limite de casillas
* [X] Devolver Fecha de la proxima renovación
* [X] Devolver Admins del dominio
* [X] Devolver Listas de distribución del dominio
......
......@@ -128,7 +128,7 @@ return /******/ (function(modules) { // webpackBootstrap
this._client = new jszimbra.Communication({ url: auth_object.url });
this.parseAllResponse = this.parseAllResponse.bind(this);
this.parseResponse = this.parseResponse.bind(this);
this.parseRemoveResponse = this.parseRemoveResponse.bind(this);
this.parseEmptyResponse = this.parseEmptyResponse.bind(this);
this.parseCountAccountResponse = this.parseCountAccountResponse.bind(this);
this.parseSearchResponse = this.parseSearchResponse.bind(this);
this.parseGrantsResponse = this.parseGrantsResponse.bind(this);
......@@ -243,9 +243,12 @@ return /******/ (function(modules) { // webpackBootstrap
var result = that.dictionary.classFactory(resource, response_object, that);
return callback(null, result);
}
// For requests that returns empty Object when Success
}, {
key: 'parseRemoveResponse',
value: function parseRemoveResponse(data, request_data, callback) {
key: 'parseEmptyResponse',
value: function parseEmptyResponse(data, request_data, callback) {
var response_object = data.get()[request_data.response_name];
return callback(null, response_object);
}
......@@ -306,7 +309,7 @@ return /******/ (function(modules) { // webpackBootstrap
request_data.params.name = request_data.request_name + 'Request';
request_data.resource = resource;
request_data.callback = callback;
request_data.parse_response = this.parseRemoveResponse;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = resource_data;
this.performRequest(request_data);
}
......@@ -355,6 +358,22 @@ return /******/ (function(modules) { // webpackBootstrap
request_data.parse_response = this.parseAllResponse;
this.performRequest(request_data);
}
// Specific functions
}, {
key: 'addAccountAlias',
value: function addAccountAlias(account_id, alias, callback) {
var request_data = {};
request_data.params = this.requestParams();
request_data.request_name = 'AddAccountAlias';
request_data.params.name = request_data.request_name + 'Request';
request_data.response_name = request_data.request_name + 'Response';
request_data.callback = callback;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = { 'id': account_id, 'alias': alias };
this.performRequest(request_data);
}
}, {
key: 'getAccount',
value: function getAccount(identifier, callback) {
......@@ -552,6 +571,22 @@ return /******/ (function(modules) { // webpackBootstrap
this.remove('Account', resource_data, callback);
}
// Remove Account Alias
}, {
key: 'removeAccountAlias',
value: function removeAccountAlias(account_id, alias, callback) {
var request_data = {};
request_data.params = this.requestParams();
request_data.request_name = 'RemoveAccountAlias';
request_data.params.name = request_data.request_name + 'Request';
request_data.response_name = request_data.request_name + 'Response';
request_data.callback = callback;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = { 'id': account_id, 'alias': alias };
this.performRequest(request_data);
}
// Remove Account
}, {
......@@ -13561,10 +13596,15 @@ return /******/ (function(modules) { // webpackBootstrap
}
(0, _createClass3.default)(Account, [{
key: 'addAccountAlias',
value: function addAccountAlias(alias, callback) {
this.api.addAccountAlias(this.id, alias, callback);
}
}, {
key: 'cosName',
value: function cosName(callback) {
if (this.attrs.zimbraCOSId) {
api.getCos(this.attrs.zimbraCOSId, function (e, d) {
this.api.getCos(this.attrs.zimbraCOSId, function (e, d) {
if (e) return callback(e);
return callback(null, d.name);
});
......@@ -13590,6 +13630,11 @@ return /******/ (function(modules) { // webpackBootstrap
return callback(null, d.size);
});
}
}, {
key: 'removeAccountAlias',
value: function removeAccountAlias(alias, callback) {
this.api.removeAccountAlias(this.id, alias, callback);
}
}]);
return Account;
}(_zimbra2.default); // Copyright (c) 2016 ZBox, Spa. All Rights Reserved.
This diff is collapsed.
......@@ -34,7 +34,7 @@ export default class ZimbraAdminApi {
this._client = new jszimbra.Communication({url: auth_object.url});
this.parseAllResponse = this.parseAllResponse.bind(this);
this.parseResponse = this.parseResponse.bind(this);
this.parseRemoveResponse = this.parseRemoveResponse.bind(this);
this.parseEmptyResponse = this.parseEmptyResponse.bind(this);
this.parseCountAccountResponse = this.parseCountAccountResponse.bind(this);
this.parseSearchResponse = this.parseSearchResponse.bind(this);
this.parseGrantsResponse = this.parseGrantsResponse.bind(this);
......@@ -148,7 +148,8 @@ export default class ZimbraAdminApi {
return callback(null, result);
}
parseRemoveResponse(data, request_data, callback){
// For requests that returns empty Object when Success
parseEmptyResponse(data, request_data, callback){
const response_object = data.get()[request_data.response_name];
return callback(null, response_object);
}
......@@ -205,7 +206,7 @@ export default class ZimbraAdminApi {
request_data.params.name = `${request_data.request_name}Request`;
request_data.resource = resource;
request_data.callback = callback;
request_data.parse_response = this.parseRemoveResponse;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = resource_data;
this.performRequest(request_data);
}
......@@ -253,6 +254,20 @@ export default class ZimbraAdminApi {
this.performRequest(request_data);
}
// Specific functions
addAccountAlias(account_id, alias, callback) {
const request_data = { };
request_data.params = this.requestParams();
request_data.request_name = 'AddAccountAlias';
request_data.params.name = `${request_data.request_name}Request`;
request_data.response_name = `${request_data.request_name}Response`;
request_data.callback = callback;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = { 'id': account_id, 'alias': alias };
this.performRequest(request_data);
}
getAccount(identifier, callback) {
this.get('Account', identifier, callback);
}
......@@ -411,6 +426,19 @@ export default class ZimbraAdminApi {
this.remove('Account', resource_data, callback);
}
// Remove Account Alias
removeAccountAlias(account_id, alias, callback) {
const request_data = { };
request_data.params = this.requestParams();
request_data.request_name = 'RemoveAccountAlias';
request_data.params.name = `${request_data.request_name}Request`;
request_data.response_name = `${request_data.request_name}Response`;
request_data.callback = callback;
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = { 'id': account_id, 'alias': alias };
this.performRequest(request_data);
}
// Remove Account
removeDomain(zimbra_id, callback) {
let resource_data = { id: zimbra_id };
......
......@@ -8,9 +8,13 @@ export default class Account extends Zimbra {
super(account_obj, zimbra_api_client);
}
addAccountAlias(alias, callback) {
this.api.addAccountAlias(this.id, alias, callback);
}
cosName(callback) {
if (this.attrs.zimbraCOSId) {
api.getCos(this.attrs.zimbraCOSId, function(e,d){
this.api.getCos(this.attrs.zimbraCOSId, function(e,d){
if (e) return callback(e);
return callback(null, d.name);
});
......@@ -34,4 +38,8 @@ export default class Account extends Zimbra {
});
}
removeAccountAlias(alias, callback) {
this.api.removeAccountAlias(this.id, alias, callback);
}
}
......@@ -283,6 +283,48 @@
});
});
it('Should return error for bad AddAccountAlias', function(done){
let api = new ZimbraAdminApi(auth_data);
let alias = 'pbruna@gmail.com';
api.getAccount('pbruna@itlinux.cl', function(err, data){
let account = data;
account.addAccountAlias(alias, function(err, data){
expect(err.extra.code).to.be.equal("account.NO_SUCH_DOMAIN");
done();
});
});
});
it('AddAccountAlias should add the alias', function(done){
let api = new ZimbraAdminApi(auth_data);
let alias = Date.now() + '@itlinux.cl';
api.getAccount('pbruna@itlinux.cl', function(err, data){
let account = data;
account.addAccountAlias(alias, function(err, data){
if (err) return console.error(err);
expect(err).to.be.null;
done();
});
});
});
it('RemoveAccountAlias should remove the alias', function(done){
let api = new ZimbraAdminApi(auth_data);
let alias = Date.now() + '@itlinux.cl';
api.getAccount('pbruna@itlinux.cl', function(err, data){
let account = data;
account.addAccountAlias(alias, function(err, data){
if (err) return console.error(err);
account.removeAccountAlias(alias, function(err, data){
if (err) return console.error(err);
expect(err).to.be.null;
done();
});
});
});
});
});
......@@ -356,7 +398,7 @@
it('should counts of account for the Domain', function(done){
let api = new ZimbraAdminApi(auth_data);
api.countAccounts('zboxapp.dev', function(err, data){
api.countAccounts('customer.dev', function(err, data){
if (err) console.error(err);
expect(data.default.used).to.be.above(1);
done();
......@@ -366,7 +408,7 @@
it('domain.countAccounts() should return the counts', function(done){
let api = new ZimbraAdminApi(auth_data);
api.getDomain('zboxapp.dev', function(err, data){
api.getDomain('customer.dev', function(err, data){
if (err) console.error(err);
let domain = data;
domain.countAccounts(function(e, d){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment