gaf-mobile
Version:
GAF mobile Web site
72 lines (59 loc) • 1.9 kB
JavaScript
/**
* This file contains a so-called 'page object' that is used
* by Protractor to run end-to-end tests against profile page.
* It's just a way to keep code clean and readable: we could do
* all this directly in our spec files but it would easily
* become a mess.
*/
/* global protractor */
function Facebook() {
var request = require('request');
var response;
function handleResponse(error, message, defer) {
if (error || message.statusCode >= 400) {
// Some strange bug where reject is throwing an error
// will fulfill the promise for now
response = JSON.parse(message.body);
defer.fulfill(response);
} else {
response = JSON.parse(message.body);
defer.fulfill(response);
}
}
function get(url) {
var defer = protractor.promise.defer();
request.get(url, function(error, message) {
handleResponse(error, message, defer);
});
return defer.promise;
}
function del(url, params) {
var defer = protractor.promise.defer();
request.del({
url: url,
form: params
}, function(error, message) {
handleResponse(error, message, defer);
});
return defer.promise;
}
function createNewFacebookAccount() {
return get('https://graph.facebook.com/120131118061981/accounts/' +
'test-users?installed=true&name=mobile2etest&permissions=read_stream' +
'&method=post&access_token=120131118061981|' +
'K9wFGJCkZ7xu2LQkUkNx2JuQ7bo');
}
function deleteFacebookAccount() {
return del('https://graph.facebook.com/' + response.id,
{access_token : response.access_token});
}
var flow = protractor.promise.controlFlow();
this.getNewUser = function() {
return flow.execute(createNewFacebookAccount);
};
this.deleteFbUser = function() {
return flow.execute(deleteFacebookAccount);
};
}
module.exports = Facebook;
;