rambo_ruby 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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