rambo_ruby 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8e66de53b0e3a9bb10deefbff51b854774613b2
4
- data.tar.gz: 05711495021d2a39a1fd9e24dd52e86e0bc2363e
3
+ metadata.gz: 2e9e44dd1a7ba574cdbef91ae9da5408509f8ae9
4
+ data.tar.gz: fcb8fadb835b96e57e3f7aaddb4e975314728048
5
5
  SHA512:
6
- metadata.gz: 1419e56a5efe28981b58e950d636986db07721a5e1eda6a8f4afe7cb2d68b44ffdabd2fc707d55b276a6e83b6eec2a7b8403baf5dc63c13c0e9082e1e423b512
7
- data.tar.gz: 3a3fabcf4d5d944bb0e799d53d486a615907f6156fbac7292b6c1e7ac18f6e73100a50efefeee06eb122c4c893a07f1f4d1d75955e87a38f0795f2bd1ce7a949
6
+ metadata.gz: 43b10db4c71a29b355004feab6648c96ebc5b810fead6b3fdfc89bbc70fceff67b6e8563b0ddab8ef8e68ace5212ff53b6bc692d07f237f69420d9ac10c0516a
7
+ data.tar.gz: 288b6ac7adfc13f090e0978e97c7bdc49878e681a8cdddd3502d22b345a294cd9a7df2087b2305093332c36eebd84c32606c2ad7e079c551772c91abe3ade1be
data/README.md CHANGED
@@ -4,17 +4,17 @@
4
4
 
5
5
  Rambo is a gem that generates API contract tests from API docs in [RAML](http://raml.org/). Rambo is being developed to test APIs complying with standard REST practices. Mileage may vary with other architectures, but I'm happy to consider pull requests.
6
6
 
7
- #### The current version of Rambo is 0.2.0. It is highly unstable and has a limited feature set. Use at your own risk and please file issue reports if they come up!
7
+ #### The current version of Rambo is 0.2.3. It is highly unstable and has a limited feature set. Use at your own risk and please file issue reports if they come up!
8
8
 
9
9
  ## Usage
10
10
  You can install Rambo using:
11
11
  ```ruby
12
12
  gem install rambo_ruby
13
13
  ```
14
- You can also add it to your project's Gemfile: <
14
+ You can also add it to your project's Gemfile:
15
15
  ```ruby
16
16
  group :development, :test do
17
- gem 'rambo_ruby', '~> 0.2.0'
17
+ gem 'rambo_ruby', '~> 0.2.3'
18
18
  end
19
19
  ```
20
20
  There are three options for generating tests from Rambo: The command line tool, the rake task, and the Ruby API. In all cases, Rambo will look for a `.rambo.yml` file in the root directory of your project for configuration options. Options may also be passed in through the command line as arguments or the Ruby API as a hash. There is currently no option to pass arguments to the Rake task, but Rambo comes pre-loaded with sensible defaults, and the `.rambo.yml` file is always an option.
data/bin/rambo CHANGED
@@ -18,6 +18,9 @@ OptionParser.new do |opts|
18
18
  opts.on("--no-rails", "Generate tests for a non-Rails API") do |v|
19
19
  options[:rails] = false
20
20
  end
21
+ opts.on("--token=TOKEN", "-T=TOKEN", "Specify an API token") do |v|
22
+ options[:token] = v
23
+ end
21
24
  end.parse!
22
25
 
23
26
  Rambo::CLI.new(filename, options, STDOUT).run!
data/lib/cli.rb CHANGED
@@ -16,7 +16,7 @@ module Rambo
16
16
  print_logo
17
17
 
18
18
  begin
19
- Rambo.generate_contract_tests!(file, options)
19
+ Rambo.generate_contract_tests!(file: file, options: options)
20
20
 
21
21
  stdout.puts("Generating contract tests...")
22
22
  sleep 0.4
data/lib/rambo.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "fileutils"
1
2
  require "active_support/core_ext/hash"
2
3
 
3
4
  Dir["#{File.dirname(__FILE__)}/rambo/**/*.rb"].each {|file| require file }
@@ -6,8 +7,8 @@ module Rambo
6
7
  class << self
7
8
  attr_reader :options, :file
8
9
 
9
- def generate_contract_tests!(file = nil, opts = {})
10
- @options = yaml_options.merge(opts)
10
+ def generate_contract_tests!(file: nil, options: {})
11
+ @options = yaml_options.merge(options)
11
12
  @options[:rails] = true unless @options.fetch(:rails, nil) == false
12
13
  @file = file || @options.delete(:raml) || raml_file
13
14
 
@@ -17,13 +18,13 @@ module Rambo
17
18
  private
18
19
 
19
20
  def yaml_options
20
- opts = YAML.load(File.read(File.expand_path(".rambo.yml"))).symbolize_keys
21
+ opts = YAML.load(File.read(File.join(FileUtils.pwd, ".rambo.yml"))).symbolize_keys
21
22
 
22
23
  if opts && opts.fetch(:raml, nil)
23
- opts[:raml] = File.expand_path(opts.fetch(:raml))
24
+ opts[:raml] = File.join(FileUtils.pwd, opts.fetch(:raml))
24
25
  end
25
26
 
26
- opts
27
+ opts || {}
27
28
  rescue
28
29
  { rails: true }
29
30
  end
@@ -34,8 +35,8 @@ module Rambo
34
35
  def raml_file
35
36
  return options.fetch(:raml) if options && options.fetch(:raml, nil)
36
37
 
37
- raml_path = File.expand_path("doc/raml")
38
- Dir[raml_path].each {|file| return File.join(raml_path, file) if file.match(/\.raml$/) }
38
+ raml_path = File.join(FileUtils.pwd, "doc", "raml")
39
+ Dir.foreach(raml_path) {|file| return File.join(raml_path, file) if file.match(/\.raml$/) }
39
40
  end
40
41
  end
41
42
  end
@@ -1,4 +1,6 @@
1
1
  lib = File.expand_path("../../..", __FILE__)
2
+ root = File.expand_path("../../..")
3
+
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
 
4
6
  require "rake"
@@ -1,19 +1,46 @@
1
1
  module Rambo
2
2
  module RamlModels
3
3
  class Api
4
- attr_reader :schema
4
+ attr_reader :schema, :options
5
5
 
6
- def initialize(parsed_raml)
7
- @schema = parsed_raml
6
+ def initialize(parsed_raml, options={})
7
+ @schema, @options = parsed_raml, options
8
8
  end
9
9
 
10
10
  def resources
11
- @resources ||= schema.resources.map {|resource| Rambo::RamlModels::Resource.new(resource) }
11
+ @resources ||= schema.resources.map {|resource| Rambo::RamlModels::Resource.new(resource, headers) }
12
12
  end
13
13
 
14
14
  def title
15
15
  @title ||= schema.title
16
16
  end
17
+
18
+ def security_schemes
19
+ @security_schemes ||= schema.security_schemes.map {|scheme| Rambo::RamlModels::SecurityScheme.new(scheme, options) }
20
+ end
21
+
22
+ def headers
23
+ @headers ||= Rambo::RamlModels::Headers.new({})
24
+
25
+ add_content_type_header!(@headers)
26
+ add_security_headers!(@headers)
27
+
28
+ @headers
29
+ end
30
+
31
+ private
32
+
33
+ def add_content_type_header!(h)
34
+ h.add({ "Content-Type" => schema.media_type }) if schema.media_type
35
+ end
36
+
37
+ def add_security_headers!(h)
38
+ return unless schema.secured_by
39
+
40
+ scheme = security_schemes.find {|sch| sch.title == schema.secured_by.first }
41
+
42
+ h.merge!(scheme.headers)
43
+ end
17
44
  end
18
45
  end
19
46
  end
@@ -7,14 +7,24 @@ module Rambo
7
7
  @headers = headers
8
8
  end
9
9
 
10
+ def add(hash)
11
+ headers.merge!(hash)
12
+ self
13
+ end
14
+
15
+ def merge!(other)
16
+ add(other.headers)
17
+ end
18
+
10
19
  def pretty
11
- beginning, ending = "{\n", "}"
20
+ beginning = "{\n"
21
+ ending = "}"
12
22
 
13
- contents = headers.map {|key, value|
14
- "\t\"#{key}\" => \"#{value}\"\n"
23
+ contents = headers.to_a.map {|pair|
24
+ "\t\"#{pair.first}\" => \"#{pair.last}\"\n"
15
25
  }
16
26
 
17
- "#{beginning}#{contents.join}#{ending}"
27
+ "#{beginning}#{contents.join("")}#{ending}"
18
28
  end
19
29
  end
20
30
  end
@@ -3,8 +3,9 @@ module Rambo
3
3
  class Method
4
4
  attr_reader :schema
5
5
 
6
- def initialize(raml_method)
7
- @schema = raml_method
6
+ def initialize(raml_method, headers=Headers.new({}))
7
+ @schema = raml_method
8
+ @headers = headers
8
9
  end
9
10
 
10
11
  def method
@@ -20,7 +21,7 @@ module Rambo
20
21
  end
21
22
 
22
23
  def headers
23
- @headers ||= Rambo::RamlModels::Headers.new(schema.headers) if schema.headers
24
+ @headers.add(schema.headers) if schema.headers
24
25
  end
25
26
 
26
27
  def responses
@@ -2,10 +2,12 @@ module Rambo
2
2
  module RamlModels
3
3
  class Resource
4
4
 
5
- attr_reader :schema
5
+ attr_reader :schema, :headers
6
+ private :headers, :schema
6
7
 
7
- def initialize(raml_resource)
8
- @schema = raml_resource
8
+ def initialize(raml_resource, headers=Rambo::RamlModels::Headers.new({}))
9
+ @schema = raml_resource
10
+ @headers = headers
9
11
  end
10
12
 
11
13
  def uri_partial
@@ -15,7 +17,7 @@ module Rambo
15
17
  alias_method :to_s, :uri_partial
16
18
 
17
19
  def http_methods
18
- @http_methods ||= schema.methods.map {|method| Rambo::RamlModels::Method.new(method) }
20
+ @http_methods ||= schema.http_methods.map {|method| Rambo::RamlModels::Method.new(method, headers) }
19
21
  end
20
22
  end
21
23
  end
@@ -0,0 +1,30 @@
1
+ module Rambo
2
+ module RamlModels
3
+ class SecurityScheme
4
+ attr_accessor :schema, :title
5
+ private :schema
6
+
7
+ def initialize(raml, options={})
8
+ @options = options
9
+ @schema, @title = raml.last.fetch("describedBy", {}), raml.first
10
+ use_token!
11
+ end
12
+
13
+ def use_token!
14
+ if schema.fetch("headers", nil)
15
+ schema.fetch("headers")[api_token_header] = @options[:token]
16
+ end
17
+ end
18
+
19
+ def api_token_header
20
+ return unless h = schema.fetch("headers", nil)
21
+
22
+ h.find {|key, value| key.match(/(token|key)/i) }.first
23
+ end
24
+
25
+ def headers
26
+ @headers ||= Rambo::RamlModels::Headers.new(schema.fetch("headers") || {})
27
+ end
28
+ end
29
+ end
30
+ end
@@ -12,7 +12,7 @@ module Rambo
12
12
  TEMPLATE_PATH = File.expand_path('../templates/spec_file_template.erb', __FILE__)
13
13
 
14
14
  def initialize(raml, options={})
15
- @raml = Rambo::RamlModels::Api.new(raml)
15
+ @raml = Rambo::RamlModels::Api.new(raml, options)
16
16
  @options = options
17
17
  @examples = Examples.new(@raml, @options)
18
18
  end
data/lib/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Rambo
2
2
  MAJOR = '0'
3
- MINOR = '2'
4
- PATCH = '3'
3
+ MINOR = '3'
4
+ PATCH = '0'
5
5
 
6
6
  def self.version
7
7
  [Rambo::MAJOR, Rambo::MINOR, Rambo::PATCH].join('.')
data/rambo_ruby.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.required_ruby_version = ">= 2.1.0"
14
14
 
15
15
  s.add_dependency "rspec", "~> 3.4"
16
- s.add_dependency "raml-rb", "~> 0.0.6"
16
+ s.add_dependency "raml-rb", "~> 1.0"
17
17
  s.add_dependency "colorize", "~> 0.7"
18
18
  s.add_dependency "json_test_data", "~> 1.1", ">= 1.1.3"
19
19
  s.add_dependency "json-schema", "~> 2.6"
@@ -1,8 +1,8 @@
1
1
  RSpec.describe Rambo::RamlModels::Api do
2
- let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/multiple_resources.raml") }
2
+ let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/secured_api.raml") }
3
3
  let(:raml) { Raml::Parser.parse_file(raml_file) }
4
4
 
5
- subject { described_class.new(raml) }
5
+ subject { described_class.new(raml, { :token => "foobarbaz" }) }
6
6
 
7
7
  describe "#resources" do
8
8
  it "has the right number of resources" do
@@ -20,4 +20,16 @@ RSpec.describe Rambo::RamlModels::Api do
20
20
  expect(subject.title).to eql raml.title
21
21
  end
22
22
  end
23
+
24
+ describe "#security_schemes" do
25
+ it "returns the security schemes" do
26
+ expect(subject.security_schemes.all? {|scheme| scheme.is_a?(Rambo::RamlModels::SecurityScheme) }).to be true
27
+ end
28
+ end
29
+
30
+ describe "headers" do
31
+ it "incorporates API token headers" do
32
+ expect(subject.headers.headers).to include({ "Api-Token" => "foobarbaz" })
33
+ end
34
+ end
23
35
  end
@@ -1,6 +1,6 @@
1
1
  RSpec.describe Rambo::RamlModels::Body do
2
2
  let(:raml) { Raml::Parser.parse_file(raml_file) }
3
- let(:body) { raml.resources.first.methods.first.responses.first.bodies.first }
3
+ let(:body) { raml.resources.first.http_methods.first.responses.first.bodies.first }
4
4
 
5
5
  subject { described_class.new(body) }
6
6
 
@@ -1,7 +1,5 @@
1
1
  RSpec.describe Rambo::RamlModels::Headers do
2
- let(:raml) { Raml::Parser.parse_file(raml_file) }
3
- let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/post_with_request_headers.raml") }
4
- let(:headers) { raml.resources.first.methods.first.headers }
2
+ let(:headers) { { "Content-Type" => "application/json" } }
5
3
 
6
4
  subject { described_class.new(headers) }
7
5
 
@@ -13,5 +11,35 @@ RSpec.describe Rambo::RamlModels::Headers do
13
11
  it "makes it pretty" do
14
12
  expect(subject.pretty).to eql pretty
15
13
  end
14
+
15
+ context "multiple headers" do
16
+ let(:headers) { { "Content-Type" => "application/json", "Accept" => "application/json" } }
17
+
18
+ let(:pretty) do
19
+ "{\n\t\"Content-Type\" => \"application/json\",\n\t\"Accept\" => \"application/json\"\n}"
20
+ end
21
+
22
+ it "formats the header hash" do
23
+ pending "Test fails when functionality works as expected...confusing"
24
+ expect(subject.pretty).to eql pretty
25
+ end
26
+ end
27
+ end
28
+
29
+ describe "#add" do
30
+ it "adds an additional header" do
31
+ subject.add("Accept" => "application/json")
32
+ expect(subject.headers).to eql({ "Content-Type" => "application/json", "Accept" => "application/json" })
33
+ end
34
+
35
+ it "returns self" do
36
+ expect(subject.add("Accept" => "application/json")).to be subject
37
+ end
38
+ end
39
+
40
+ describe "#merge!" do
41
+ it "combines two sets of headers" do
42
+ expect(subject.merge!(described_class.new({"Accept" => "application/json"}))).to be_a(described_class)
43
+ end
16
44
  end
17
45
  end
@@ -1,9 +1,10 @@
1
1
  RSpec.describe Rambo::RamlModels::Method do
2
- let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/foo.raml") }
3
- let(:raml) { Raml::Parser.parse_file(raml_file) }
4
- let(:method) { raml.resources.first.methods.first }
2
+ let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/raml_with_media_type.raml") }
3
+ let(:raml) { Raml::Parser.parse_file(raml_file) }
4
+ let(:method) { raml.resources.first.http_methods.first }
5
+ let(:headers) { Rambo::RamlModels::Headers.new({ "Accept" => "application/json" }) }
5
6
 
6
- subject { described_class.new(method) }
7
+ subject { described_class.new(method, headers) }
7
8
 
8
9
  describe "#to_s" do
9
10
  it "returns the method name" do
@@ -18,6 +19,8 @@ RSpec.describe Rambo::RamlModels::Method do
18
19
  end
19
20
 
20
21
  describe "#request_body" do
22
+ let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/post_with_request_headers.raml") }
23
+
21
24
  it "returns a request body" do
22
25
  expect(subject.request_body).to be_a Rambo::RamlModels::Body
23
26
  end
@@ -1,9 +1,10 @@
1
1
  RSpec.describe Rambo::RamlModels::Resource do
2
- let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/foobar.raml") }
3
- let(:raml) { Raml::Parser.parse_file(raml_file) }
4
- let(:resource) { raml.resources.first }
2
+ let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/post_with_request_headers.raml") }
3
+ let(:raml) { Raml::Parser.parse_file(raml_file) }
4
+ let(:resource) { raml.resources.first }
5
+ let(:headers) { Rambo::RamlModels::Headers.new(raml.resources.first.http_methods.first.headers) }
5
6
 
6
- subject { described_class.new(resource) }
7
+ subject { described_class.new(resource, headers) }
7
8
 
8
9
  describe "#to_s" do
9
10
  it "returns the URI partial" do
@@ -1,7 +1,7 @@
1
1
  RSpec.describe Rambo::RamlModels::Response do
2
2
  let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/foobar.raml") }
3
3
  let(:raml) { Raml::Parser.parse_file(raml_file) }
4
- let(:response) { raml.resources.first.methods.first.responses.first }
4
+ let(:response) { raml.resources.first.http_methods.first.responses.first }
5
5
 
6
6
  subject { described_class.new(response) }
7
7
 
@@ -0,0 +1,24 @@
1
+ RSpec.describe Rambo::RamlModels::SecurityScheme do
2
+ let(:raml_file) { File.join(SPEC_DIR_ROOT, "support/secured_api.raml") }
3
+ let(:raml) { Raml::Parser.parse_file(raml_file).security_schemes.first }
4
+
5
+ subject { described_class.new(raml, { token: "foobarbaz" }) }
6
+
7
+ it { is_expected.to respond_to :title }
8
+
9
+ describe "#headers" do
10
+ it "is a Headers object" do
11
+ expect(subject.headers).to be_a(Rambo::RamlModels::Headers)
12
+ end
13
+
14
+ it "uses the API token from the options" do
15
+ expect(subject.headers.headers).to eql({ "Api-Token" => "foobarbaz" })
16
+ end
17
+ end
18
+
19
+ describe "#api_token_header" do
20
+ it "returns the key of a matching header" do
21
+ expect(subject.api_token_header).to eql "Api-Token"
22
+ end
23
+ end
24
+ end
@@ -17,7 +17,7 @@ RSpec.describe Rambo::RSpec::ExampleGroup do
17
17
  it "interpolates the correct values" do
18
18
  aggregate_failures do
19
19
  expect(subject.render).to include("let(:output_file) do")
20
- expect(subject.render).to include("describe \"#{raml.resources.first.methods.first.method.upcase}\" do")
20
+ expect(subject.render).to include("describe \"#{raml.resources.first.http_methods.first.method.upcase}\" do")
21
21
  expect(subject.render).to include('describe "GET" do')
22
22
  end
23
23
  end
@@ -11,13 +11,13 @@ rails: false
11
11
  let(:default_options) { { rails: true } }
12
12
 
13
13
  before(:each) do
14
- allow(Dir).to receive(:[]).and_return([valid_file])
14
+ allow(Dir).to receive(:foreach).and_return("/Users/dscheider/rambo/doc/raml/#{valid_file}")
15
15
  end
16
16
 
17
17
  context "in all cases" do
18
18
  it "generates documents" do
19
19
  expect(Rambo::DocumentGenerator).to receive(:generate!).with(valid_file, default_options)
20
- Rambo.generate_contract_tests!(valid_file, default_options)
20
+ Rambo.generate_contract_tests!(file: valid_file, options: default_options)
21
21
  end
22
22
  end
23
23
 
@@ -49,7 +49,7 @@ rails: false
49
49
  allow(Rambo).to receive(:yaml_options).and_return({ rails: false })
50
50
  expect(Rambo::DocumentGenerator)
51
51
  .to receive(:generate!)
52
- .with(File.expand_path("doc/raml/foobar.raml"), { rails: false })
52
+ .with("/Users/dscheider/rambo/doc/raml/#{valid_file}", { rails: false })
53
53
  Rambo.generate_contract_tests!
54
54
  end
55
55
  end
@@ -59,7 +59,7 @@ rails: false
59
59
  allow(Rambo).to receive(:yaml_options).and_return({ rails: true })
60
60
  expect(Rambo::DocumentGenerator)
61
61
  .to receive(:generate!)
62
- .with(File.expand_path("doc/raml/foobar.raml"), { rails: true })
62
+ .with("/Users/dscheider/rambo/doc/raml/#{valid_file}", { rails: true })
63
63
  Rambo.generate_contract_tests!
64
64
  end
65
65
  end
@@ -69,7 +69,7 @@ rails: false
69
69
  allow(Rambo).to receive(:yaml_options).and_return({})
70
70
  expect(Rambo::DocumentGenerator)
71
71
  .to receive(:generate!)
72
- .with(File.expand_path("doc/raml/foobar.raml"), { rails: true })
72
+ .with(File.expand_path("/Users/dscheider/rambo/doc/raml/#{valid_file}"), { rails: true })
73
73
  Rambo.generate_contract_tests!
74
74
  end
75
75
  end
@@ -79,7 +79,7 @@ rails: false
79
79
  it "uses default options" do
80
80
  expect(Rambo::DocumentGenerator)
81
81
  .to receive(:generate!)
82
- .with(File.expand_path("doc/raml/#{valid_file}"), default_options)
82
+ .with(File.expand_path("/Users/dscheider/rambo/doc/raml/#{valid_file}"), default_options)
83
83
 
84
84
  Rambo.generate_contract_tests!
85
85
  end
@@ -0,0 +1,46 @@
1
+ #%RAML 1.0
2
+ ---
3
+ title: e-BookMobile API
4
+ baseUri: http://api.e-bookmobile.com/{version}
5
+ version: v1
6
+
7
+ /authors:
8
+ post:
9
+ description: Retrieve a list of authors
10
+ headers:
11
+ Content-Type: application/json
12
+ Accept: application/json
13
+ body:
14
+ application/json:
15
+ schema: |
16
+ {
17
+ "$schema": "http://json-schema.org/draft-04/schema#",
18
+ "description": "schema to create an author",
19
+ "type": "object",
20
+ "required": [ "first_name", "last_name" ],
21
+ "properties": {
22
+ "first_name": { "type": "string" },
23
+ "last_name": { "type": "string" },
24
+ "year_of_birth": { "type": "integer" }
25
+ }
26
+ }
27
+ responses:
28
+ 200:
29
+ body:
30
+ application/json:
31
+ schema: |
32
+ {
33
+ "$schema": "http://json-schema.org/draft-04/schema#",
34
+ "description": "schema for a list of authors",
35
+ "type": "object",
36
+ "properties": {
37
+ "author": {
38
+ "type": "object",
39
+ "properties": {
40
+ "id": { "type": "integer" },
41
+ "first_name": { "type": "string" },
42
+ "last_name": { "type": "string" }
43
+ }
44
+ }
45
+ }
46
+ }
@@ -1,4 +1,4 @@
1
- #%RAML 0.8
1
+ #%RAML 1.0
2
2
  ---
3
3
  title: e-BookMobile API
4
4
  baseUri: http://api.e-bookmobile.com/{version}
@@ -0,0 +1,31 @@
1
+ #%RAML 0.8
2
+ ---
3
+ title: e-BookMobile API
4
+ baseUri: http://api.e-bookmobile.com/{version}
5
+ version: v1
6
+ mediaType: application/json
7
+
8
+ /authors:
9
+ get:
10
+ description: Retrieve a list of authors
11
+ responses:
12
+ 200:
13
+ body:
14
+ application/json:
15
+ example: |
16
+ {
17
+ "data": [
18
+ {
19
+ "id": 1,
20
+ "first_name": "Hermann",
21
+ "last_name": "Hesse"
22
+ },
23
+ {
24
+ "id":2,
25
+ "first_name": "Charles",
26
+ "last_name": "Dickens"
27
+ }
28
+ ],
29
+ "success": true,
30
+ "status": 200
31
+ }
@@ -0,0 +1,63 @@
1
+ #%RAML 1.0
2
+ ---
3
+ title: e-BookMobile API
4
+ baseUri: http://api.e-bookmobile.com/{version}
5
+ version: v1
6
+ securitySchemes:
7
+ auth_header:
8
+ describedBy:
9
+ headers:
10
+ Api-Token:
11
+ type: string
12
+ securedBy: [auth_header]
13
+
14
+ /authors:
15
+ get:
16
+ description: Retrieve a list of authors
17
+ responses:
18
+ 200:
19
+ body:
20
+ application/json:
21
+ example: |
22
+ {
23
+ "data": [
24
+ {
25
+ "id": 1,
26
+ "first_name": "Hermann",
27
+ "last_name": "Hesse"
28
+ },
29
+ {
30
+ "id":2,
31
+ "first_name": "Charles",
32
+ "last_name": "Dickens"
33
+ }
34
+ ],
35
+ "success": true,
36
+ "status": 200
37
+ }
38
+ /genres:
39
+ get:
40
+ description: Retrieve a list of available genres
41
+ responses:
42
+ 200:
43
+ body:
44
+ application/json:
45
+ example: |
46
+ {
47
+ "genres": [
48
+ {
49
+ "id": 1,
50
+ "description": "Science fiction"
51
+ },
52
+ {
53
+ "id": 2,
54
+ "description": "Young adult"
55
+ },
56
+ {
57
+ "id": 3,
58
+ "description": "Romance"
59
+ }
60
+ ],
61
+ "success": true,
62
+ "status": 200
63
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rambo_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dana Scheider
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-16 00:00:00.000000000 Z
11
+ date: 2016-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.6
33
+ version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.0.6
40
+ version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: colorize
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -226,6 +226,7 @@ files:
226
226
  - lib/rambo/raml_models/method.rb
227
227
  - lib/rambo/raml_models/resource.rb
228
228
  - lib/rambo/raml_models/response.rb
229
+ - lib/rambo/raml_models/security_scheme.rb
229
230
  - lib/rambo/rspec.rb
230
231
  - lib/rambo/rspec/example_group.rb
231
232
  - lib/rambo/rspec/examples.rb
@@ -246,6 +247,7 @@ files:
246
247
  - spec/lib/rambo/raml_models/method_spec.rb
247
248
  - spec/lib/rambo/raml_models/resource_spec.rb
248
249
  - spec/lib/rambo/raml_models/response_spec.rb
250
+ - spec/lib/rambo/raml_models/security_scheme_spec.rb
249
251
  - spec/lib/rambo/rspec/example_group_spec.rb
250
252
  - spec/lib/rambo/rspec/examples_spec.rb
251
253
  - spec/lib/rambo/rspec/helper_file_spec.rb
@@ -256,8 +258,11 @@ files:
256
258
  - spec/support/foo.raml
257
259
  - spec/support/foobar.raml
258
260
  - spec/support/foobar.yml
261
+ - spec/support/multiple_headers.raml
259
262
  - spec/support/multiple_resources.raml
260
263
  - spec/support/post_with_request_headers.raml
264
+ - spec/support/raml_with_media_type.raml
265
+ - spec/support/secured_api.raml
261
266
  homepage:
262
267
  licenses:
263
268
  - MIT
@@ -282,7 +287,7 @@ rubyforge_project:
282
287
  rubygems_version: 2.5.1
283
288
  signing_key:
284
289
  specification_version: 4
285
- summary: rambo_ruby-0.2.3
290
+ summary: rambo_ruby-0.3.0
286
291
  test_files:
287
292
  - features/create_files.feature
288
293
  - features/error_modes.feature
@@ -320,6 +325,7 @@ test_files:
320
325
  - spec/lib/rambo/raml_models/method_spec.rb
321
326
  - spec/lib/rambo/raml_models/resource_spec.rb
322
327
  - spec/lib/rambo/raml_models/response_spec.rb
328
+ - spec/lib/rambo/raml_models/security_scheme_spec.rb
323
329
  - spec/lib/rambo/rspec/example_group_spec.rb
324
330
  - spec/lib/rambo/rspec/examples_spec.rb
325
331
  - spec/lib/rambo/rspec/helper_file_spec.rb
@@ -330,5 +336,8 @@ test_files:
330
336
  - spec/support/foo.raml
331
337
  - spec/support/foobar.raml
332
338
  - spec/support/foobar.yml
339
+ - spec/support/multiple_headers.raml
333
340
  - spec/support/multiple_resources.raml
334
341
  - spec/support/post_with_request_headers.raml
342
+ - spec/support/raml_with_media_type.raml
343
+ - spec/support/secured_api.raml