Skip to content

Latest commit

 

History

History
350 lines (264 loc) · 6.28 KB

README.md

File metadata and controls

350 lines (264 loc) · 6.28 KB

Lean Testing Ruby SDK

Gem Version

Ruby client for Lean Testing API

You can sign up for a Lean Testing account at https://leantesting.com.

Requirements

  • Ruby 2.0 or greater

Installation

Add this line to your application's Gemfile:

gem 'leantesting'

And then execute:

$ bundle

Or install it yourself as:

$ gem install leantesting

Usage

require 'leantesting'

leantesting = LeanTesting::Client.new
leantesting.attachToken('<token>')

# Listing projects
projects = leantesting.projects.all()

# Fetching project bugs
bugs = leantesting.projects.find(123).bugs.all()

Methods

  • Get Current Token
leantesting.getCurrentToken
  • Attach New Token
leantesting.attachToken('<token>')
  • Generate Authorization URL
generatedURL = leantesting.auth.generateAuthLink(
	'<client id>',
	'<redirect URL>',
	'<scope>',
	'<random string>'
)
p generatedURL
  • Exchange authorization code For access token
token = leantesting.auth.exchangeAuthCode(
	'<client id>',
	'<client secret>',
	'authorization_code',
	'<auth code>',
	'<redirect URL>'
)
p token

  • Get User Information
leantesting.user.getInformation
  • Get User Organizations
leantesting.user.organizations.all.toArray

  • List All Projects
leantesting.projects.all.toArray
  • Create A New Project
newProject = leantesting.projects.create({
	'name' => 'Project135',
	'organization_id' => 5779
})
p newProject.data
  • Retrieve An Existing Project
leantesting.projects.find(3515).data
  • List Project Sections
leantesting.projects.find(3515).sections.all.toArray
  • Adding A Project Section
newSection = leantesting.projects.find(3515).sections.create({
	'name' => 'SectionName'
})
p newSection.data
  • List Project Versions
leantesting.projects.find(3515).versions.all.toArray
  • Adding A Project Version
newVersion = leantesting.projects.find(3515).versions.create({
	'number' => 'v0.3.1104'
})
p newVersion.data
  • List Project Users
leantesting.projects.find(3515).users.all.toArray
  • List Bug Type Scheme
leantesting.projects.find(3515).bugTypeScheme.all.toArray
  • List Bug Status Scheme
leantesting.projects.find(3515).bugStatusScheme.all.toArray
  • List Bug Severity Scheme
leantesting.projects.find(3515).bugSeverityScheme.all.toArray
  • List Bug Reproducibility Scheme
leantesting.projects.find(3515).bugReproducibilityScheme.all.toArray

  • List All Bugs In A Project
leantesting.projects.find(3515).bugs.all.toArray
  • Create A New Bug
newBug = leantesting.projects.find(3515).bugs.create({
	'title' => 'Something bad happened...',
	'status_id' => 1,
	'severity_id' => 2,
	'project_version_id' => 10242
})
p newBug.data
  • Retrieve Existing Bug
leantesting.bugs.find(38483).data
  • Update A Bug
updatedBug = leantesting.bugs.update(118622, {
	'title' => 'Updated title',
	'status_id' => 1,
	'severity_id' => 2,
	'project_version_id' => 10242
})
p updatedBug.data
  • Delete A Bug
leantesting.bugs.delete(118622)

  • List Bug Comments
leantesting.bugs.find(38483).comments.all.toArray

  • List Bug Attachments
leantesting.bugs.find(38483).attachments.all.toArray
  • Upload An Attachment
filePath = '/place/Downloads/Images/1370240743_2294218.jpg'
newAttachment = leantesting.bugs.find(38483).attachments.upload(filePath)
p newAttachment.data
  • Retrieve An Existing Attachment
leantesting.attachments.find(21515).data
  • Delete An Attachment
leantesting.attachments.delete(75258)

  • List Platform Types
leantesting.platform.types.all.toArray
  • Retrieve Platform Type
leantesting.platform.types.find(1).data
  • List Platform Devices
leantesting.platform.types.find(1).devices.all.toArray
  • Retrieve Existing Device
leantesting.platform.devices.find(11).data
  • List OS
leantesting.platform.os.all.toArray
  • Retrieve Existing OS
leantesting.platform.os.find(1).data
  • List OS Versions
leantesting.platform.os.find(1).versions.all.toArray
  • List Browsers
leantesting.platform.browsers.all.toArray
  • Retrieve Existing Browser
leantesting.platform.browsers.find(1).data
  • List Browser Versions
leantesting.platform.browsers.find(1).versions.all.toArray

  • Using Filters
leantesting.projects.find(3515).bugs.all({'limit' => 2, 'page' => 5}).toArray
  • Entity List Functions
browsers = leantesting.platform.browsers.all
p browsers.total
p browsers.totalPages
p browsers.count
p browsers.toArray
  • Entity List Iterator When used in for loops, entity lists will automatically cycle to first page, regardless of page filter. After ending the loop, the entity list will NOT revert to first page or the initial instancing page filter setting in order not to cause useless API request calls.
comments = leantesting.bugs.find(38483).comments.all({'limit' => 1})
comments.each{ |page| p page }
  • Entity List Manual Iteration
comments = leantesting.bugs.find(38483).comments.all({'limit' => 1})
p comments.toArray

# Will return false if unable to move forwards
comments.next;      p comments.toArray

# Will return false if already on last page
comments.last;      p comments.toArray

# Will return false if unable to move backwards
comments.previous;  p comments.toArray

# Will return false if already on first page
comments.first;     p comments.toArray

Security

Need to report a security vulnerability? Send us an email to [email protected] or go directly to our security bug bounty site https://hackerone.com/leantesting.

Development

Install dependencies:

bundle install

Tests

Install dependencies as mentioned above, then you can run the test suite:

rake test