module User
  extend self

  def create(name: 'unnameable', pass: 'Xxxxxxx09876')
    puts "Creating user: #{name}"
    privs = ['ADMIN',
              'ADMIN_USERS',
              'ADMIN_OPERATIONS',
              'ADMIN_TARGETS',
              'ADMIN_AUDIT',
              'ADMIN_LICENSE',
             'SYS',
              'SYS_FRONTEND',
              'SYS_BACKEND',
              'SYS_BACKUP',
              'SYS_INJECTORS',
              'SYS_CONNECTORS',
             'TECH',
              'TECH_FACTORIES',
              'TECH_BUILD',
              'TECH_CONFIG',
              'TECH_EXEC',
              'TECH_UPLOAD',
              'TECH_IMPORT',
              'TECH_NI_RULES',
             'VIEW',
              'VIEW_ALERTS',
              'VIEW_FILESYSTEM',
              'VIEW_EDIT',
              'VIEW_DELETE',
              'VIEW_EXPORT',
              'VIEW_PROFILES'
            ]
    u = {name: name, pass: pass, privs: privs, enabled: true, locale: 'en_US', timezone: 0}
    user = Session.post('/user', u)
    puts "User created with id: #{user['_id']}"
    return user
  end

  def update(id, params)
    puts "Updating user: #{id}"
    Session.post('/user/update', {_id: id}.merge(params))
  end

  def delete(id)
    puts "Deleting user: #{id}"
    Session.post('/user/destroy', {_id: id})
  end

  def search(name)
    users = Session.get('/user')
    u = users.select {|u| u['name'].eql? name}.first
    raise "User not found" unless u
    return u
  end

end