How to use userApiWrapper method in devicefarmer-stf

Best JavaScript code snippet using devicefarmer-stf

users.js

Source:users.js Github

copy

Full Screen

...9const wire = require('../../../wire')10const wireutil = require('../../../wire/util')11const userapi = require('./user')12/* --------------------------------- PRIVATE FUNCTIONS --------------------------------------- */13function userApiWrapper(fn, req, res) {14 const email = req.swagger.params.email.value15 dbapi.loadUser(email).then(function(user) {16 if (!user) {17 apiutil.respond(res, 404, 'Not Found (user)')18 }19 else {20 req.user = user21 fn(req, res)22 }23 })24 .catch(function(err) {25 apiutil.internalError(res, 'Failed to wrap "%s": ', fn.name, err.stack)26 })27}28function getPublishedUser(user, userEmail, adminEmail, fields) {29 let publishedUser = apiutil.publishUser(user)30 if (userEmail !== adminEmail) {31 publishedUser = _.pick(user, 'email', 'name', 'privilege')32 }33 if (fields) {34 publishedUser = _.pick(publishedUser, fields.split(','))35 }36 return publishedUser37}38function removeUser(email, req, res) {39 const groupOwnerState = req.swagger.params.groupOwner.value40 const anyGroupOwnerState = typeof groupOwnerState === 'undefined'41 const lock = {}42 function removeGroupUser(owner, id) {43 const lock = {}44 return dbapi.lockGroupByOwner(owner, id).then(function(stats) {45 if (!stats.replaced) {46 return apiutil.lightComputeStats(res, stats)47 }48 lock.group = stats.changes[0].new_val49 return owner === email ?50 dbapi.deleteUserGroup(id) :51 dbapi.removeGroupUser(id, email)52 })53 .finally(function() {54 lockutil.unlockGroup(lock)55 })56 }57 function deleteUserInDatabase(channel) {58 return dbapi.removeUserAccessTokens(email).then(function() {59 return dbapi.deleteUser(email).then(function() {60 req.options.pushdev.send([61 channel62 , wireutil.envelope(new wire.DeleteUserMessage(63 email64 ))65 ])66 return 'deleted'67 })68 })69 }70 function computeUserGroupOwnership(groups) {71 if (anyGroupOwnerState) {72 return Promise.resolve(true)73 }74 return Promise.map(groups, function(group) {75 if (!groupOwnerState && group.owner.email === email) {76 return Promise.reject('filtered')77 }78 return !groupOwnerState || group.owner.email === email79 })80 .then(function(results) {81 return _.without(results, false).length > 082 })83 .catch(function(err) {84 if (err === 'filtered') {85 return false86 }87 throw err88 })89 }90 if (req.user.email === email) {91 return Promise.resolve('forbidden')92 }93 return dbapi.lockUser(email).then(function(stats) {94 if (!stats.replaced) {95 return apiutil.lightComputeStats(res, stats)96 }97 const user = lock.user = stats.changes[0].new_val98 return dbapi.getGroupsByUser(user.email).then(function(groups) {99 return computeUserGroupOwnership(groups).then(function(doContinue) {100 if (!doContinue) {101 return 'unchanged'102 }103 return Promise.each(groups, function(group) {104 return removeGroupUser(group.owner.email, group.id)105 })106 .then(function() {107 return deleteUserInDatabase(user.group)108 })109 })110 })111 })112 .finally(function() {113 lockutil.unlockUser(lock)114 })115}116/* --------------------------------- PUBLIC FUNCTIONS --------------------------------------- */117function getUserInfo(req, email) {118 const fields = req.swagger.params.fields.value119 return dbapi.loadUser(email).then(function(user) {120 if (user) {121 return dbapi.getRootGroup().then(function(group) {122 return getPublishedUser(user, req.user.email, group.owner.email, fields)123 })124 }125 return false126 })127}128function updateUserGroupsQuotas(req, res) {129 const email = req.swagger.params.email.value130 const duration =131 typeof req.swagger.params.duration.value !== 'undefined' ?132 req.swagger.params.duration.value :133 null134 const number =135 typeof req.swagger.params.number.value !== 'undefined' ?136 req.swagger.params.number.value :137 null138 const repetitions =139 typeof req.swagger.params.repetitions.value !== 'undefined' ?140 req.swagger.params.repetitions.value :141 null142 const lock = {}143 lockutil.lockUser(email, res, lock).then(function(lockingSuccessed) {144 if (lockingSuccessed) {145 return dbapi.updateUserGroupsQuotas(email, duration, number, repetitions)146 .then(function(stats) {147 if (stats.replaced) {148 return apiutil.respond(res, 200, 'Updated (user quotas)', {149 user: apiutil.publishUser(stats.changes[0].new_val)150 })151 }152 if ((duration === null || duration === lock.user.groups.quotas.allocated.duration) &&153 (number === null || number === lock.user.groups.quotas.allocated.number) &&154 (repetitions === null || repetitions === lock.user.groups.quotas.repetitions)155 ) {156 return apiutil.respond(res, 200, 'Unchanged (user quotas)', {user: {}})157 }158 return apiutil.respond(159 res160 , 400161 , 'Bad Request (quotas must be >= actual consumed resources)')162 })163 }164 return false165 })166 .catch(function(err) {167 apiutil.internalError(res, 'Failed to update user groups quotas: ', err.stack)168 })169 .finally(function() {170 lockutil.unlockUser(lock)171 })172}173function updateDefaultUserGroupsQuotas(req, res) {174 const duration =175 typeof req.swagger.params.duration.value !== 'undefined' ?176 req.swagger.params.duration.value :177 null178 const number =179 typeof req.swagger.params.number.value !== 'undefined' ?180 req.swagger.params.number.value :181 null182 const repetitions =183 typeof req.swagger.params.repetitions.value !== 'undefined' ?184 req.swagger.params.repetitions.value :185 null186 const lock = {}187 lockutil.lockUser(req.user.email, res, lock).then(function(lockingSuccessed) {188 if (lockingSuccessed) {189 return dbapi.updateDefaultUserGroupsQuotas(req.user.email, duration, number, repetitions)190 .then(function(stats) {191 if (stats.replaced) {192 return apiutil.respond(res, 200, 'Updated (user default quotas)', {193 user: apiutil.publishUser(stats.changes[0].new_val)194 })195 }196 return apiutil.respond(res, 200, 'Unchanged (user default quotas)', {user: {}})197 })198 }199 return false200 })201 .catch(function(err) {202 apiutil.internalError(res, 'Failed to update default user groups quotas: ', err.stack)203 })204 .finally(function() {205 lockutil.unlockUser(lock)206 })207}208function getUserByEmail(req, res) {209 const email = req.swagger.params.email.value210 getUserInfo(req, email).then(function(user) {211 if (user) {212 apiutil.respond(res, 200, 'User Information', {user: user})213 }214 else {215 apiutil.respond(res, 404, 'Not Found (user)')216 }217 })218 .catch(function(err) {219 apiutil.internalError(res, 'Failed to get user: ', err.stack)220 })221}222function getUsers(req, res) {223 const fields = req.swagger.params.fields.value224 dbapi.getUsers().then(function(users) {225 return dbapi.getRootGroup().then(function(group) {226 apiutil.respond(res, 200, 'Users Information', {227 users: users.map(function(user) {228 return getPublishedUser(user, req.user.email, group.owner.email, fields)229 })230 })231 })232 })233 .catch(function(err) {234 apiutil.internalError(res, 'Failed to get users: ', err.stack)235 })236}237function createUser(req, res) {238 const email = req.swagger.params.email.value239 const name = req.swagger.params.name.value240 dbapi.createUser(email, name, req.user.ip).then(function(stats) {241 if (!stats.inserted) {242 apiutil.respond(res, 403, 'Forbidden (user already exists)')243 }244 else {245 apiutil.respond(res, 201, 'Created (user)', {246 user: apiutil.publishUser(stats.changes[0].new_val)247 })248 }249 })250 .catch(function(err) {251 apiutil.internalError(res, 'Failed to create user: ', err.stack)252 })253}254function deleteUsers(req, res) {255 const emails = apiutil.getBodyParameter(req.body, 'emails')256 const target = apiutil.getQueryParameter(req.swagger.params.redirected) ? 'user' : 'users'257 function removeUsers(emails) {258 let results = []259 return Promise.each(emails, function(email) {260 return removeUser(email, req, res).then(function(result) {261 results.push(result)262 })263 })264 .then(function() {265 results = _.without(results, 'unchanged')266 if (!results.length) {267 return apiutil.respond(res, 200, `Unchanged (${target})`)268 }269 results = _.without(results, 'not found')270 if (!results.length) {271 return apiutil.respond(res, 404, `Not Found (${target})`)272 }273 results = _.without(results, 'forbidden')274 if (!results.length) {275 apiutil.respond(res, 403, `Forbidden (${target})`)276 }277 return apiutil.respond(res, 200, `Deleted (${target})`)278 })279 .catch(function(err) {280 if (err !== 'busy') {281 throw err282 }283 })284 }285 (function() {286 if (typeof emails === 'undefined') {287 return dbapi.getEmails().then(function(emails) {288 return removeUsers(emails)289 })290 }291 else {292 return removeUsers(_.without(emails.split(','), ''))293 }294 })()295 .catch(function(err) {296 apiutil.internalError(res, 'Failed to delete ${target}: ', err.stack)297 })298}299function deleteUser(req, res) {300 apiutil.redirectApiWrapper('email', deleteUsers, req, res)301}302function createUserAccessToken(req, res) {303 userApiWrapper(userapi.createAccessToken, req, res)304}305function deleteUserAccessToken(req, res) {306 userApiWrapper(userapi.deleteAccessToken, req, res)307}308function deleteUserAccessTokens(req, res) {309 userApiWrapper(userapi.deleteAccessTokens, req, res)310}311function getUserAccessToken(req, res) {312 userApiWrapper(userapi.getAccessToken, req, res)313}314function getUserAccessTokens(req, res) {315 userApiWrapper(userapi.getAccessTokens, req, res)316}317function getUserDevices(req, res) {318 userApiWrapper(userapi.getUserDevices, req, res)319}320function getUserDevice(req, res) {321 userApiWrapper(userapi.getUserDeviceBySerial, req, res)322}323function addUserDevice(req, res) {324 userApiWrapper(userapi.addUserDevice, req, res)325}326function deleteUserDevice(req, res) {327 userApiWrapper(userapi.deleteUserDeviceBySerial, req, res)328}329function remoteConnectUserDevice(req, res) {330 userApiWrapper(userapi.remoteConnectUserDeviceBySerial, req, res)331}332function remoteDisconnectUserDevice(req, res) {333 userApiWrapper(userapi.remoteDisconnectUserDeviceBySerial, req, res)334}335module.exports = {336 updateUserGroupsQuotas: updateUserGroupsQuotas337 , updateDefaultUserGroupsQuotas: updateDefaultUserGroupsQuotas338 , getUsers: getUsers339 , getUserByEmail: getUserByEmail340 , getUserInfo: getUserInfo341 , createUser: createUser342 , deleteUser: deleteUser343 , deleteUsers: deleteUsers344 , createUserAccessToken: createUserAccessToken345 , deleteUserAccessToken: deleteUserAccessToken346 , deleteUserAccessTokens: deleteUserAccessTokens347 , getUserAccessTokensV2: getUserAccessTokens...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;2var stfUserApi = require('devicefarmer-stf-client').stfUserApi;3var stfUserApi = require('devicefarmer-stf-client').stfUserApi;4var stfUserApi = require('devicefarmer-stf-client').stfUserApi;5var stfUserApi = require('devicefarmer-stf-client').stfUserApi;6var stfUserApi = require('devicefarmer-stf-client').stfUserApi;

Full Screen

Using AI Code Generation

copy

Full Screen

1var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;2userApi.getDevices().then(function(devices) {3 console.log(devices);4});5var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;6userApi.getDevices().then(function(devices) {7 console.log(devices);8});9var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;10userApi.getDevices().then(function(devices) {11 console.log(devices);12});13var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;14userApi.getDevices().then(function(devices) {15 console.log(devices);16});17var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;18userApi.getDevices().then(function(devices) {19 console.log(devices);20});21var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;22userApi.getDevices().then(function(devices) {23 console.log(devices);24});25var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;26userApi.getDevices().then(function(devices) {27 console.log(devices);28});

Full Screen

Using AI Code Generation

copy

Full Screen

1var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;2 userApi.getDevices(function (err, devices) {3 console.log(devices);4 });5});6var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;7 userApi.getDevices(function (err, devices) {8 console.log(devices);9 });10});11var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;12 userApi.getDevices(function (err, devices) {13 console.log(devices);14 });15});16var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;17 userApi.getDevices(function (err, devices) {18 console.log(devices);19 });20});21var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;22 userApi.getDevices(function (err, devices) {23 console.log(devices);24 });25});26var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;27 userApi.getDevices(function (err, devices) {28 console.log(devices);29 });30});31var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;32 userApi.getDevices(function (err, devices) {33 console.log(devices);34 });35});36var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;37 userApi.getDevices(function (err, devices) {38 console.log(devices);39 });40});41var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;42 userApi.getDevices(function (err, devices) {

Full Screen

Using AI Code Generation

copy

Full Screen

1var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;2api.getDevices().then(function (devices) {3 console.log(devices);4});5var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;6api.getDevices().then(function (devices) {7 console.log(devices);8});9var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;10api.getDevices().then(function (devices) {11 console.log(devices);12});13var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;14api.getDevices().then(function (devices) {15 console.log(devices);16});17var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;18api.getDevices().then(function (devices) {19 console.log(devices);20});21var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;22api.getDevices().then(function (devices) {23 console.log(devices);24});25var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;

Full Screen

Using AI Code Generation

copy

Full Screen

1var userApiWrapper = require('devicefarmer-stf-client').userApiWrapper;2client.getDevices().then(function (res) {3 console.log(res);4});5var Client = require('devicefarmer-stf-client').Client;6client.getDevices().then(function (res) {7 console.log(res);8});

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run devicefarmer-stf automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful