Commit 4086c4b6 authored by Patricio Bruna's avatar Patricio Bruna

Modify Resources

parent 3b7130db
......@@ -8,6 +8,7 @@
- [Zimbra Resources](#zimbra-resources)
- [Common Functions](#common-functions)
- [Creating Resources](#creating-resources)
- [Modify Resources](#modify-resources)
## Example
......@@ -209,5 +210,28 @@ var zimbra_attributes = {
zimbraMailQuota: 53687091200
}
zimbraApi.createAccount('user@example.com', 'SuP3rS3cur3P4ss', zimbra_attributes, callback);
// Account {name: "user@customer.dev", id: "1919c856-08cc-43c9-b927-0c4cf88f50c7", attrs: Object}
// Account {name: "user@example.com", id: "1919c856-08cc-43c9-b927-0c4cf88f50c7", attrs: Object}
```
## Modify Resources
For updating resources **you have** to use the `ZimbraId`
* `modifyAccount(zimbra_id, attributes, callback)`,
* `modifyDomain(zimbra_id, attributes, callback)`,
* `modifyDistributionList(zimbra_id, attributes, callback)`
For example:
```javascript
// Attributes to modify
var zimbra_attributes = {
givenName: 'Tom',
sn: 'Hanks'
}
// user@example.com
var zimbraId = "1919c856-08cc-43c9-b927-0c4cf88f50c7";
zimbraApi.modifyAccount(zimbraId, zimbra_attributes, callback);
// Account {name: "user@example.com", id: "1919c856-08cc-43c9-b927-0c4cf88f50c7", attrs: Object}
```
## Todos los Resourcers
* [ ] Poder Modificar
* [X] Poder Modificar
* [ ] Poder Elmininar
## Accounts
* [ ] Que Dominios administra
## Domains
* [ ] Devolver casillas segun el tipo de plan, cantidad asignadas y cantidad utilizadas para un dominio
......
......@@ -264,6 +264,20 @@ return /******/ (function(modules) { // webpackBootstrap
request_data.params.params = resource_data;
this.performRequest(request_data);
}
}, {
key: 'modify',
value: function modify(resource, resource_data, callback) {
var request_data = {};
request_data.params = this.requestParams();
request_data.request_name = 'Modify' + resource;
request_data.response_name = 'Modify' + resource + 'Response';
request_data.params.name = request_data.request_name + 'Request';
request_data.resource = resource;
request_data.callback = callback;
request_data.parse_response = this.parseResponse;
request_data.params.params = resource_data;
this.performRequest(request_data);
}
}, {
key: 'get',
value: function get(resource, resource_identifier, callback) {
......@@ -386,7 +400,42 @@ return /******/ (function(modules) { // webpackBootstrap
this.performRequest(request_data);
}
// TODO: Fix this fucking code
// Modify Account
}, {
key: 'modifyAccount',
value: function modifyAccount(zimbra_id, attributes, callback) {
var resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('Account', resource_data, callback);
}
// Modify Domain
}, {
key: 'modifyDomain',
value: function modifyDomain(zimbra_id, attributes, callback) {
var resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('Domain', resource_data, callback);
}
// Modify DistributionList
}, {
key: 'modifyDistributionList',
value: function modifyDistributionList(zimbra_id, attributes, callback) {
var resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('DistributionList', resource_data, callback);
}
// Search the Directory
// search_object = {
// query: An LDAP query or null for everything,
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -169,6 +169,19 @@ export default class ZimbraAdminApi {
this.performRequest(request_data);
}
modify(resource, resource_data, callback){
let request_data = { };
request_data.params = this.requestParams();
request_data.request_name = `Modify${resource}`;
request_data.response_name = `Modify${resource}Response`;
request_data.params.name = `${request_data.request_name}Request`;
request_data.resource = resource;
request_data.callback = callback;
request_data.parse_response = this.parseResponse;
request_data.params.params = resource_data;
this.performRequest(request_data);
}
get(resource, resource_identifier, callback){
let request_data = { };
request_data.params = this.requestParams();
......@@ -266,7 +279,33 @@ export default class ZimbraAdminApi {
this.performRequest(request_data);
}
// TODO: Fix this fucking code
// Modify Account
modifyAccount(zimbra_id, attributes, callback) {
let resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('Account', resource_data, callback);
}
// Modify Domain
modifyDomain(zimbra_id, attributes, callback) {
let resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('Domain', resource_data, callback);
}
// Modify DistributionList
modifyDistributionList(zimbra_id, attributes, callback) {
let resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('DistributionList', resource_data, callback);
}
// Search the Directory
// search_object = {
// query: An LDAP query or null for everything,
......
......@@ -231,78 +231,56 @@
});
});
it('should modify Account attributes', function(done){
let api = new ZimbraAdminApi(auth_data);
let description = Date.now().toString();
let physicalDeliveryOfficeName = Date.now().toString();
let attributes = {
physicalDeliveryOfficeName: physicalDeliveryOfficeName,
description: description
};
api.getAccount('admin@zboxapp.dev', function(err, data){
if (err) return console.log(err);
api.modifyAccount(data.id, attributes, function(err, data){
if (err) return console.log(err);
expect(data.attrs.description).to.be.equal(description);
expect(data.attrs.physicalDeliveryOfficeName).to.be.equal(physicalDeliveryOfficeName);
done();
});
});
});
it('should modify Domain attributes', function(done){
let api = new ZimbraAdminApi(auth_data);
let description = Date.now().toString();
let attributes = {
description: description
};
api.getDomain('zboxapp.dev', function(err, data){
if (err) console.log(err);
api.modifyDomain(data.id, attributes, function(err, data){
expect(data.attrs.description).to.be.equal(description);
done();
});
});
});
it('should modify DistributionList attributes', function(done){
let api = new ZimbraAdminApi(auth_data);
let description = Date.now().toString();
let attributes = {
description: description
};
api.getDistributionList('abierta@customer.dev', function(err, data){
if (err) console.log(err);
api.modifyDistributionList(data.id, attributes, function(err, data){
expect(data.attrs.description).to.be.equal(description);
done();
});
});
});
});
})();
// it('should get all domains', function() {
// let api = new ZimbraAdminApi(auth_data);
// var success = function(d){
// d.forEach(function(v){
// console.log(v.name);
// })
// };
// var error = function(d){console.log(d);};
// // sucess, err (Why)?
// api.getAllAccounts(function(data, err){
// if (err) return console.log(err);
// data.forEach(function(v){
// console.log(v.id + ' ' + v.name);
// })
// });
//
// });
//
//
// describe('Using callbacks', function() {
// it('should get a track', function() {
// var callback = sinon.spy();
// let api = new SpotifyWebApi();
// api.getTrack('3Qm86XLflmIXVm1wcwkgDK', callback);
// that.requests[0].respond(200,
// {'Content-Type':'application/json'},
// JSON.stringify(that.fixtures.track)
// );
// expect(callback.calledWith(null, that.fixtures.track)).to.be.ok;
// expect(that.requests).to.have.length(1);
// expect(that.requests[0].url).to.equal('https://api.spotify.com/v1/tracks/3Qm86XLflmIXVm1wcwkgDK');
// });
//
// it('should get multiple tracks', function() {
// var callback = sinon.spy();
// let api = new SpotifyWebApi();
// api.getTracks(['0eGsygTp906u18L0Oimnem', '1lDWb6b6ieDQ2xT7ewTC3G'], callback);
// that.requests[0].respond(200,
// {'Content-Type':'application/json'},
// JSON.stringify(that.fixtures.tracks)
// );
// expect(callback.calledWith(null, that.fixtures.tracks)).to.be.ok;
// expect(that.requests).to.have.length(1);
// expect(that.requests[0].url).to.equal('https://api.spotify.com/v1/tracks/?ids=0eGsygTp906u18L0Oimnem%2C1lDWb6b6ieDQ2xT7ewTC3G');
// });
//
// it('should get an album', function() {
// var callback = sinon.spy();
// let api = new SpotifyWebApi();
// api.getAlbum('0sNOF9WDwhWunNAHPD3Baj', callback);
// that.requests[0].respond(200,
// {'Content-Type':'application/json'},
// JSON.stringify(that.fixtures.album)
// );
// expect(callback.calledWith(null, that.fixtures.album)).to.be.ok;
// expect(that.requests).to.have.length(1);
// expect(that.requests[0].url).to.equal('https://api.spotify.com/v1/albums/0sNOF9WDwhWunNAHPD3Baj');
// });
//
// it('should get an albums\'s tracks', function() {
// var callback = sinon.spy();
// let api = new SpotifyWebApi();
// api.getAlbumTracks('0sNOF9WDwhWunNAHPD3Baj', callback);
// that.requests[0].respond(200,
// {'Content-Type':'application/json'},
// JSON.stringify(that.fixtures.album_tracks)
// );
// expect(callback.calledWith(null, that.fixtures.album_tracks)).to.be.ok;
// expect(that.requests).to.have.length(1);
// expect(that.requests[0].url).to.equal('https://api.spotify.com/v1/albums/0sNOF9WDwhWunNAHPD3Baj/tracks');
// });
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