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

Accounts Aliases

parent ffcc8d7b
...@@ -280,10 +280,21 @@ account.getMailbox(callback); ...@@ -280,10 +280,21 @@ account.getMailbox(callback);
### Get Mailbox Size ### Get Mailbox Size
```javascript ```javascript
account.getMailboxSize(callback); 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 ### 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: 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 @@ ...@@ -5,20 +5,24 @@
## Accounts ## Accounts
* [X] Add y remove Alias
* [ ] Que Dominios administra una cuenta * [ ] Que Dominios administra una cuenta
* [ ] Espacio usado * [X] Espacio usado
## DistributionList ## DistributionList
* [ ] Listas privadas * [ ] Listas privadas
* [ ] Toda su gestion
## Domains ## Domains
* [X] Devolver casillas segun el tipo de plan, cantidad asignadas y cantidad utilizadas para un dominio * [ ] Add y remove Admins
* [X] Limite de casillas
* [ ] Devolver Tipo de renovación * [ ] Devolver Tipo de renovación
* [ ] Devolver Fecha de la proxima renovación
* [ ] Devolver Empresa (esto entiendo necesitamos otro API) * [ ] 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 Admins del dominio
* [X] Devolver Listas de distribución del dominio * [X] Devolver Listas de distribución del dominio
......
...@@ -128,7 +128,7 @@ return /******/ (function(modules) { // webpackBootstrap ...@@ -128,7 +128,7 @@ return /******/ (function(modules) { // webpackBootstrap
this._client = new jszimbra.Communication({ url: auth_object.url }); this._client = new jszimbra.Communication({ url: auth_object.url });
this.parseAllResponse = this.parseAllResponse.bind(this); this.parseAllResponse = this.parseAllResponse.bind(this);
this.parseResponse = this.parseResponse.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.parseCountAccountResponse = this.parseCountAccountResponse.bind(this);
this.parseSearchResponse = this.parseSearchResponse.bind(this); this.parseSearchResponse = this.parseSearchResponse.bind(this);
this.parseGrantsResponse = this.parseGrantsResponse.bind(this); this.parseGrantsResponse = this.parseGrantsResponse.bind(this);
...@@ -243,9 +243,12 @@ return /******/ (function(modules) { // webpackBootstrap ...@@ -243,9 +243,12 @@ return /******/ (function(modules) { // webpackBootstrap
var result = that.dictionary.classFactory(resource, response_object, that); var result = that.dictionary.classFactory(resource, response_object, that);
return callback(null, result); return callback(null, result);
} }
// For requests that returns empty Object when Success
}, { }, {
key: 'parseRemoveResponse', key: 'parseEmptyResponse',
value: function parseRemoveResponse(data, request_data, callback) { value: function parseEmptyResponse(data, request_data, callback) {
var response_object = data.get()[request_data.response_name]; var response_object = data.get()[request_data.response_name];
return callback(null, response_object); return callback(null, response_object);
} }
...@@ -306,7 +309,7 @@ return /******/ (function(modules) { // webpackBootstrap ...@@ -306,7 +309,7 @@ return /******/ (function(modules) { // webpackBootstrap
request_data.params.name = request_data.request_name + 'Request'; request_data.params.name = request_data.request_name + 'Request';
request_data.resource = resource; request_data.resource = resource;
request_data.callback = callback; request_data.callback = callback;
request_data.parse_response = this.parseRemoveResponse; request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = resource_data; request_data.params.params = resource_data;
this.performRequest(request_data); this.performRequest(request_data);
} }
...@@ -355,6 +358,22 @@ return /******/ (function(modules) { // webpackBootstrap ...@@ -355,6 +358,22 @@ return /******/ (function(modules) { // webpackBootstrap
request_data.parse_response = this.parseAllResponse; request_data.parse_response = this.parseAllResponse;
this.performRequest(request_data); 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', key: 'getAccount',
value: function getAccount(identifier, callback) { value: function getAccount(identifier, callback) {
...@@ -552,6 +571,22 @@ return /******/ (function(modules) { // webpackBootstrap ...@@ -552,6 +571,22 @@ return /******/ (function(modules) { // webpackBootstrap
this.remove('Account', resource_data, callback); 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 // Remove Account
}, { }, {
...@@ -13561,10 +13596,15 @@ return /******/ (function(modules) { // webpackBootstrap ...@@ -13561,10 +13596,15 @@ return /******/ (function(modules) { // webpackBootstrap
} }
(0, _createClass3.default)(Account, [{ (0, _createClass3.default)(Account, [{
key: 'addAccountAlias',
value: function addAccountAlias(alias, callback) {
this.api.addAccountAlias(this.id, alias, callback);
}
}, {
key: 'cosName', key: 'cosName',
value: function cosName(callback) { value: function cosName(callback) {
if (this.attrs.zimbraCOSId) { 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); if (e) return callback(e);
return callback(null, d.name); return callback(null, d.name);
}); });
...@@ -13590,6 +13630,11 @@ return /******/ (function(modules) { // webpackBootstrap ...@@ -13590,6 +13630,11 @@ return /******/ (function(modules) { // webpackBootstrap
return callback(null, d.size); return callback(null, d.size);
}); });
} }
}, {
key: 'removeAccountAlias',
value: function removeAccountAlias(alias, callback) {
this.api.removeAccountAlias(this.id, alias, callback);
}
}]); }]);
return Account; return Account;
}(_zimbra2.default); // Copyright (c) 2016 ZBox, Spa. All Rights Reserved. }(_zimbra2.default); // Copyright (c) 2016 ZBox, Spa. All Rights Reserved.
This diff is collapsed.
...@@ -34,7 +34,7 @@ export default class ZimbraAdminApi { ...@@ -34,7 +34,7 @@ export default class ZimbraAdminApi {
this._client = new jszimbra.Communication({url: auth_object.url}); this._client = new jszimbra.Communication({url: auth_object.url});
this.parseAllResponse = this.parseAllResponse.bind(this); this.parseAllResponse = this.parseAllResponse.bind(this);
this.parseResponse = this.parseResponse.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.parseCountAccountResponse = this.parseCountAccountResponse.bind(this);
this.parseSearchResponse = this.parseSearchResponse.bind(this); this.parseSearchResponse = this.parseSearchResponse.bind(this);
this.parseGrantsResponse = this.parseGrantsResponse.bind(this); this.parseGrantsResponse = this.parseGrantsResponse.bind(this);
...@@ -148,7 +148,8 @@ export default class ZimbraAdminApi { ...@@ -148,7 +148,8 @@ export default class ZimbraAdminApi {
return callback(null, result); 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]; const response_object = data.get()[request_data.response_name];
return callback(null, response_object); return callback(null, response_object);
} }
...@@ -205,7 +206,7 @@ export default class ZimbraAdminApi { ...@@ -205,7 +206,7 @@ export default class ZimbraAdminApi {
request_data.params.name = `${request_data.request_name}Request`; request_data.params.name = `${request_data.request_name}Request`;
request_data.resource = resource; request_data.resource = resource;
request_data.callback = callback; request_data.callback = callback;
request_data.parse_response = this.parseRemoveResponse; request_data.parse_response = this.parseEmptyResponse;
request_data.params.params = resource_data; request_data.params.params = resource_data;
this.performRequest(request_data); this.performRequest(request_data);
} }
...@@ -253,6 +254,20 @@ export default class ZimbraAdminApi { ...@@ -253,6 +254,20 @@ export default class ZimbraAdminApi {
this.performRequest(request_data); 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) { getAccount(identifier, callback) {
this.get('Account', identifier, callback); this.get('Account', identifier, callback);
} }
...@@ -411,6 +426,19 @@ export default class ZimbraAdminApi { ...@@ -411,6 +426,19 @@ export default class ZimbraAdminApi {
this.remove('Account', resource_data, callback); 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 // Remove Account
removeDomain(zimbra_id, callback) { removeDomain(zimbra_id, callback) {
let resource_data = { id: zimbra_id }; let resource_data = { id: zimbra_id };
......
...@@ -8,9 +8,13 @@ export default class Account extends Zimbra { ...@@ -8,9 +8,13 @@ export default class Account extends Zimbra {
super(account_obj, zimbra_api_client); super(account_obj, zimbra_api_client);
} }
addAccountAlias(alias, callback) {
this.api.addAccountAlias(this.id, alias, callback);
}
cosName(callback) { cosName(callback) {
if (this.attrs.zimbraCOSId) { 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); if (e) return callback(e);
return callback(null, d.name); return callback(null, d.name);
}); });
...@@ -34,4 +38,8 @@ export default class Account extends Zimbra { ...@@ -34,4 +38,8 @@ export default class Account extends Zimbra {
}); });
} }
removeAccountAlias(alias, callback) {
this.api.removeAccountAlias(this.id, alias, callback);
}
} }
...@@ -283,6 +283,48 @@ ...@@ -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 @@ ...@@ -356,7 +398,7 @@
it('should counts of account for the Domain', function(done){ it('should counts of account for the Domain', function(done){
let api = new ZimbraAdminApi(auth_data); 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); if (err) console.error(err);
expect(data.default.used).to.be.above(1); expect(data.default.used).to.be.above(1);
done(); done();
...@@ -366,7 +408,7 @@ ...@@ -366,7 +408,7 @@
it('domain.countAccounts() should return the counts', function(done){ it('domain.countAccounts() should return the counts', function(done){
let api = new ZimbraAdminApi(auth_data); 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); if (err) console.error(err);
let domain = data; let domain = data;
domain.countAccounts(function(e, d){ 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