jellyfish-contrib 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,131 @@
1
+
2
+ require 'jellyfish/test'
3
+
4
+ describe Jellyfish do
5
+ paste :jellyfish
6
+
7
+ app = Rack::Builder.app do
8
+ eval File.read("#{File.dirname(__FILE__)}/../config.ru")
9
+ end
10
+
11
+ def string_keys hash
12
+ hash.inject({}){ |r, (k, v)| r[k.to_s] = v; r }
13
+ end
14
+
15
+ would '/swagger' do
16
+ status, headers, body = get('/swagger', app)
17
+ status .should.eq 200
18
+ headers['Content-Type'].should.eq 'application/json; charset=utf-8'
19
+ res = Jellyfish::Json.decode(body.to_a.join)
20
+ res['swaggerVersion'].should.eq '1.2'
21
+ res['info'] .should.eq string_keys(Jelly.info)
22
+ res['apiVersion'] .should.eq Jelly.swagger_apiVersion
23
+ res['apis'] .should.eq \
24
+ [{'path' => '/users'}, {'path' => '/posts'}]
25
+ end
26
+
27
+ would '/swagger/users' do
28
+ status, _, body = get('/swagger/users', app)
29
+ status .should.eq 200
30
+ res = Jellyfish::Json.decode(body.to_a.join)
31
+ res['basePath'] .should.eq 'https://localhost:8080'
32
+ res['resourcePath'].should.eq '/users'
33
+ res['apis'] .should.eq \
34
+ [{"path"=>"/users",
35
+ "operations"=>[{"summary"=>"List users",
36
+ "notes"=>"List users<br>Note that we do not really" \
37
+ " have users.",
38
+ "path"=>"/users",
39
+ "method"=>"GET",
40
+ "nickname"=>"/users",
41
+ "parameters"=>[]},
42
+ {"summary"=>"Create a user",
43
+ "notes"=>"Create a user<br>Here we demonstrate how" \
44
+ " to write the swagger doc.",
45
+ "parameters"=>[{"type"=>"string",
46
+ "required"=>true,
47
+ "description"=>"The name of the user",
48
+ "name"=>"name",
49
+ "paramType"=>"query"},
50
+ {"type"=>"boolean",
51
+ "description"=>"If the user is sane",
52
+ "name"=>"sane",
53
+ "required"=>false,
54
+ "paramType"=>"query"},
55
+ {"type"=>"string",
56
+ "description"=>"What kind of user",
57
+ "enum"=>["good", "neutral", "evil"],
58
+ "name"=>"type",
59
+ "required"=>false,
60
+ "paramType"=>"query"}],
61
+ "responseMessages"=>[{"code"=>400,
62
+ "message"=>"Invalid name"}],
63
+ "path"=>"/users",
64
+ "method"=>"POST",
65
+ "nickname"=>"/users"}]},
66
+ {"path"=>"/users/{id}",
67
+ "operations"=>[{"summary"=>"Update a user",
68
+ "parameters"=>[{"type"=>"integer",
69
+ "description"=>"The id of the user",
70
+ "name"=>"id",
71
+ "required"=>true,
72
+ "paramType"=>"path"}],
73
+ "path"=>"/users",
74
+ "method"=>"PUT",
75
+ "nickname"=>"/users/{id}",
76
+ "notes"=>"Update a user"},
77
+ {"path"=>"/users",
78
+ "method"=>"DELETE",
79
+ "nickname"=>"/users/{id}",
80
+ "summary"=>nil,
81
+ "notes"=>nil,
82
+ "parameters"=>[{"name"=>"id",
83
+ "type"=>"integer",
84
+ "required"=>true,
85
+ "paramType"=>"path"}]}]}]
86
+ end
87
+
88
+ swagger = Jellyfish::Swagger.new(Class.new{include Jellyfish})
89
+
90
+ would 'swagger_path' do
91
+ swagger.send(:swagger_path, '/') .should.eq '/'
92
+ swagger.send(:swagger_path, '/users/{id}').should.eq '/users'
93
+ end
94
+
95
+ would 'nickname' do
96
+ swagger.send(:nickname, '/') .should.eq '/'
97
+ swagger.send(:nickname, '/users/{id}') .should.eq '/users/{id}'
98
+ swagger.send(:nickname, %r{\A/users/(?<id>\d+)}).should.eq '/users/{id}'
99
+ swagger.send(:nickname, %r{^/users/(?<id>\d+)$}).should.eq '/users/{id}'
100
+ swagger.send(:nickname, %r{/(?<a>\d)/(?<b>\w)$}).should.eq '/{a}/{b}'
101
+ end
102
+
103
+ would 'notes' do
104
+ swagger.send(:notes, :summary => 'summary', :notes => 'notes').
105
+ should.eq 'summary<br>notes'
106
+ swagger.send(:notes, :summary => 'summary').
107
+ should.eq 'summary'
108
+ end
109
+
110
+ would 'path_parameters' do
111
+ swagger.send(:path_parameters, %r{/(?<a>\d)/(?<b>\w)/(?<c>\d)$},
112
+ :parameters => {:c => {:type => 'hash'}}).
113
+ should.eq([{:name => 'a', :type => 'integer',
114
+ :required => true, :paramType => 'path'},
115
+ {:name => 'b', :type => 'string',
116
+ :required => true, :paramType => 'path'},
117
+ {:name => 'c', :type => 'hash',
118
+ :required => true, :paramType => 'path'}])
119
+ end
120
+
121
+ would 'query_parameters' do
122
+ swagger.send(:query_parameters,
123
+ :parameters => {:c => {:type => 'hash'}}).
124
+ should.eq([:name => 'c', :type => 'hash',
125
+ :required => false, :paramType => 'query'])
126
+ swagger.send(:query_parameters,
127
+ :parameters => {:c => {:required => true}}).
128
+ should.eq([:name => 'c', :type => 'string',
129
+ :required => true, :paramType => 'query'])
130
+ end
131
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jellyfish-contrib
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Lin Jen-Shin (godfat)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jellyfish
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Extra [Jellyfish](https://github.com/godfat/jellyfish) extensions.
28
+ email:
29
+ - godfat (XD) godfat.org
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitmodules"
35
+ - ".travis.yml"
36
+ - CHANGES.md
37
+ - Gemfile
38
+ - LICENSE
39
+ - README.md
40
+ - Rakefile
41
+ - config.ru
42
+ - jellyfish-contrib.gemspec
43
+ - lib/jellyfish-contrib.rb
44
+ - lib/jellyfish/multi_actions.rb
45
+ - lib/jellyfish/sinatra.rb
46
+ - lib/jellyfish/swagger.rb
47
+ - public/css/screen.css
48
+ - public/index.html
49
+ - public/js/shred.bundle.js
50
+ - public/js/shred/content.js
51
+ - public/js/swagger-ui.js
52
+ - public/js/swagger.js
53
+ - task/README.md
54
+ - task/gemgem.rb
55
+ - test/test_from_readme.rb
56
+ - test/test_multi_actions.rb
57
+ - test/test_swagger.rb
58
+ homepage: https://github.com/godfat/jellyfish-contrib
59
+ licenses:
60
+ - Apache License 2.0
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 2.4.8
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: Extra [Jellyfish](https://github.com/godfat/jellyfish) extensions.
82
+ test_files:
83
+ - test/test_from_readme.rb
84
+ - test/test_multi_actions.rb
85
+ - test/test_swagger.rb