lurker 0.6.0 → 0.6.1

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: 6c6082ee72faafa413ba71d30980598f2524c41d
4
- data.tar.gz: e17f9251086892abc27a9621f53ac2ec17527e47
3
+ metadata.gz: a914bcb615ccfdd4b68d8596ddf908d406003045
4
+ data.tar.gz: 0914a12a0879b48ee724accf0e574ee52c4de24c
5
5
  SHA512:
6
- metadata.gz: 8f5053abff9bfbd14b87307d89004deafc64396a6f9270ad06b54015f955699d75505136dfdc3763811f0b059f1d137d36bbd0fc079710268f84e8989f79ce37
7
- data.tar.gz: 09c1cc7157084b90a9880cde056244d14b01687aa859f3b0050fef4337ebb694840776ad50b48852b6433f5fb0989968bb656cb520ac95b70e28bdccb5f765cd
6
+ metadata.gz: 0a2e411348e7c483a2d9984dabd476a6136bfcad6c9cef8b42afa7288149f447505e86d0fe77fbb578f70bd414a65057c6a8a1f1b5cd23871393d70b88cd8a06
7
+ data.tar.gz: 81e866b271eb19fd2550865e4b6998c20f3717237060ca24b55343b90adc4e65e1e1ea445cad32dd32b20e020fd1b4b1b5cc4a1c4806c52d7846aef88f5b110d
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
Binary file
data/.hound.yml ADDED
@@ -0,0 +1,15 @@
1
+ StringLiterals:
2
+ Enabled: false
3
+
4
+ SignalException:
5
+ Enabled: false
6
+
7
+ AlignParameters:
8
+ Enabled: false
9
+
10
+ MultilineTernaryOperator:
11
+ Enabled: false
12
+
13
+ LineLength:
14
+ Enabled: false
15
+
data/.rubocop.yml ADDED
@@ -0,0 +1,15 @@
1
+ StringLiterals:
2
+ Enabled: false
3
+
4
+ SignalException:
5
+ Enabled: false
6
+
7
+ AlignParameters:
8
+ Enabled: false
9
+
10
+ MultilineTernaryOperator:
11
+ Enabled: false
12
+
13
+ LineLength:
14
+ Enabled: false
15
+
data/README.md CHANGED
@@ -10,11 +10,18 @@ Works on Rails 3.2, 4.0, 4.1 & Ruby 1.9.3, 2.0.0, 2.1.1.
10
10
 
11
11
  ## Installation
12
12
 
13
- Add this line to your application's Gemfile:
13
+ Add my public key:
14
+
15
+ gem cert --add <(curl -Ls https://raw.github.com/razum2um/lurker/master/certs/razum2um.pem)
16
+
17
+ $ gem install lurker # without key
18
+ $ gem install lurker -P HighSecurity # secure, with key added
19
+
20
+ Or this line to your application's Gemfile:
14
21
 
15
22
  gem 'lurker'
16
23
 
17
- Add to `test_helper.rb` or `spec_helper.rb`:
24
+ Inject into `test_helper.rb` or `spec_helper.rb`:
18
25
 
19
26
  require 'lurker/spec_helper'
20
27
 
@@ -77,6 +84,12 @@ and it fails if your code changes the api!
77
84
  - The property '#/user/last_sign_in_at' of type String did not match the following type:
78
85
  null in schema file:///.../lurker/api/v1/users-POST.json.yml#
79
86
 
87
+ The generation of live-documentation is pretty simple:
88
+
89
+ bin/lurker convert # builds html under `Rails.root/html`
90
+ bin/lurker convert -o public/lurker # builds html under `Rails.root/public/lurker`
91
+ bin/lurker convert -f pdf -o html # builds `ServiceName.pdf` under `Rails.root/html`
92
+
80
93
  Let's run your `rails s` and visit [http://localhost:3000/lurker/](http://localhost:3000/lurker/)
81
94
  (or see [demo][demo_app2] for example)
82
95
 
@@ -104,10 +117,12 @@ For example:
104
117
  - [Pretty submit form to test API endpoints (live) based on schemas][demo_live] (enter a name & press "Submit")
105
118
  - [Handling URLs with dynamic segments][nested_controller_spec_example] (such as `api/v1/:user_id/repos`)
106
119
  - [JSON-Schema partials][partial_example], also in YAML format ([demo][partial_example_demo])
107
- - [Generation PDF documentation][pdf_example]
120
+ - [Generation PDF documentation][pdf_example] (add `gem 'pdfkit'` to Gemfile)
108
121
  - [Multiple docs for many usecases][suffixes_example] (e.g `:lurker => '...'`)
109
122
  - ERB support inside `.json.yml.erb`
110
- - HTTP-Auth authorization for your online docs
123
+ - Insert custom content in Markdown into `index.html` (add `gem 'kramdown'` to Gemfile)
124
+ - Syntax highlighting for sample response (add `gem 'execjs'` to Gemfile)
125
+ - HTTP-Auth authorization for docs (`mount Lurker::Server.to_rack username: '...', password: '...'`)
111
126
  - Separate API-services generated within one test suite
112
127
  - Capistrano integration
113
128
  - JSON-Schema draft-v4 support
data/Rakefile CHANGED
@@ -302,7 +302,7 @@ task :publish do
302
302
  system "git tag v#{version}"
303
303
  system "relish versions:add razum2um/lurker:#{version}"
304
304
  system "relish push razum2um/lurker:#{version}"
305
- system "gem build lurker.gemspec --sign"
305
+ system "gem build lurker.gemspec"
306
306
  system "git push --tags"
307
307
  system "gem push lurker-#{version}.gem"
308
308
  end
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApib2tv
3
+ di52bGFkMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
4
+ b20wHhcNMTQwNTIwMjAyOTAyWhcNMTUwNTIwMjAyOTAyWjBBMRMwEQYDVQQDDApi
5
+ b2tvdi52bGFkMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
6
+ FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCibrb/aiZX3kWo
7
+ Fmzo3gvGBFS9N18Q5rp9UTJRc4KxZQOay2WcgLjy1oU61r2Urjz3VDT4sg/yw3N3
8
+ YXIPqSTRl+OPIaafe45TVpF4mtMSsc1Gm/O3Sfoz6URiMd9iDtc2sTpaMgatL4pV
9
+ EExER9emjrmElRFknJD65E3gVDX7KXvrZYYAScJR33DADIGUgpuyHm29S7G/4WAy
10
+ ol6XfmPx+x5rM49QytGSNCQDYQ3SMMCo9wKkEm3Zcx0O4qhO8INevl/mvkAWLhOA
11
+ +0qldtuUx9wbBQ0D0wVR8LTafqWrIUHQjWXqrhWBqXhYeR3jj5aehBhpPFclHuKU
12
+ 5GeILZrFAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
13
+ BBSiidH2CEJmkza+NBBJNLcnzQX57TAfBgNVHREEGDAWgRRib2tvdi52bGFkQGdt
14
+ YWlsLmNvbTAfBgNVHRIEGDAWgRRib2tvdi52bGFkQGdtYWlsLmNvbTANBgkqhkiG
15
+ 9w0BAQUFAAOCAQEAVEyF63kQT9HKm3YIw1WzLvuOMvEUThzBomMMsTp9CGXWvem6
16
+ wZdMhxykwk1lga0OwsCn+wr1tWZ/cNeWqGSY00vTfLWdriK60xuRW7zT1Z5tmxbD
17
+ dq2ULdhII/qCFQlzDB/+IptO1rJLzfxTckoArmeYtkBV6LaVd7wpaRZnw0Apm93e
18
+ ph03YddPDbB34xTivvu4d6BBbKGxj/YN+1NLD9rMi6FspgcA4P1UlmKqyCluTbZj
19
+ vzKbYclpJ7gENr/xiTjGqA/Md3zJMzmsFrzUXt4RVmo5SaCyZjC6gFfhSr+PODc7
20
+ ZaSbckvH/+m4boAsg0JkGGFcS3j5fgNmdwgA1A==
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,138 @@
1
+ Feature: atom persistent within test suite
2
+ Background:
3
+ Given a file named "lurker/api/v2/users/__id-PATCH.json.yml" with:
4
+ """yml
5
+ ---
6
+ description: user updating
7
+ prefix: users management
8
+ requestParameters:
9
+ description: ''
10
+ type: object
11
+ additionalProperties: false
12
+ required: []
13
+ properties:
14
+ user:
15
+ description: ''
16
+ type: object
17
+ additionalProperties: false
18
+ required: []
19
+ properties:
20
+ name:
21
+ description: ''
22
+ type: string
23
+ example: NameIsPersistentInExaple
24
+ surname:
25
+ description: ''
26
+ type: string
27
+ example: SurnameIsPersistentInExaple
28
+ responseCodes:
29
+ - status: 200
30
+ successful: true
31
+ description: ''
32
+ responseParameters:
33
+ description: ''
34
+ type: object
35
+ additionalProperties: false
36
+ required: []
37
+ properties:
38
+ id:
39
+ description: ''
40
+ type: integer
41
+ example: 100
42
+ name:
43
+ description: ''
44
+ type: string
45
+ example: NameIsPersistentInExaple
46
+ surname:
47
+ description: ''
48
+ type: string
49
+ example: SurnameIsPersistentInExaple
50
+ extensions:
51
+ method: PATCH
52
+ path_info: "/api/v2/users/100"
53
+ path_params:
54
+ id: '100'
55
+ controller: api/v2/users
56
+ action: update
57
+ suffix: ''
58
+ """
59
+
60
+ Scenario: json schema tests response parameters and keep atom unchanged using "users/update"
61
+ Given a file named "spec/controllers/api/v2/users_controller_spec.rb" with:
62
+ """ruby
63
+ require "spec_helper"
64
+
65
+ describe Api::V2::UsersController, :lurker do
66
+ render_views
67
+
68
+ let(:user) do
69
+ User.where(name: 'razum2um', surname: 'Unknown').first_or_create!
70
+ end
71
+
72
+ it "updates a user surname as string" do
73
+ patch :update, id: user.id, user: { surname: 'Marley' }
74
+ expect(response).to be_success
75
+ end
76
+ end
77
+ """
78
+
79
+ When I run `bin/rspec spec/controllers/api/v2/users_controller_spec.rb`
80
+ Then the example should pass
81
+ Then a file named "lurker/api/v2/users/__id-PATCH.json.yml" should exist
82
+ Then the file "lurker/api/v2/users/__id-PATCH.json.yml" should contain exactly:
83
+ """yml
84
+ ---
85
+ description: user updating
86
+ prefix: users management
87
+ requestParameters:
88
+ description: ''
89
+ type: object
90
+ additionalProperties: false
91
+ required: []
92
+ properties:
93
+ user:
94
+ description: ''
95
+ type: object
96
+ additionalProperties: false
97
+ required: []
98
+ properties:
99
+ name:
100
+ description: ''
101
+ type: string
102
+ example: NameIsPersistentInExaple
103
+ surname:
104
+ description: ''
105
+ type: string
106
+ example: SurnameIsPersistentInExaple
107
+ responseCodes:
108
+ - status: 200
109
+ successful: true
110
+ description: ''
111
+ responseParameters:
112
+ description: ''
113
+ type: object
114
+ additionalProperties: false
115
+ required: []
116
+ properties:
117
+ id:
118
+ description: ''
119
+ type: integer
120
+ example: 100
121
+ name:
122
+ description: ''
123
+ type: string
124
+ example: NameIsPersistentInExaple
125
+ surname:
126
+ description: ''
127
+ type: string
128
+ example: SurnameIsPersistentInExaple
129
+ extensions:
130
+ method: PATCH
131
+ path_info: "/api/v2/users/100"
132
+ path_params:
133
+ id: '100'
134
+ controller: api/v2/users
135
+ action: update
136
+ suffix: ''
137
+
138
+ """
@@ -13,7 +13,7 @@ Feature: controller schema scaffolding
13
13
  render_views
14
14
 
15
15
  let!(:user) do
16
- User.where(name: 'razum2um').first_or_create!
16
+ User.where(name: 'razum2um', surname: 'Marley').first_or_create!
17
17
  end
18
18
 
19
19
  it "shows user" do
@@ -55,6 +55,10 @@ Feature: controller schema scaffolding
55
55
  description: ''
56
56
  type: string
57
57
  example: razum2um
58
+ surname:
59
+ description: ''
60
+ type: string
61
+ example: Marley
58
62
  extensions:
59
63
  method: GET
60
64
  path_info: "/api/v1/users/1.json"
@@ -0,0 +1,139 @@
1
+ Feature: multitype request support
2
+
3
+ If your API add new type for the same request parameter
4
+ and the new code isn't breaking it
5
+ you'll see nothing special, just passing specs
6
+
7
+ Background:
8
+ Given a file named "lurker/api/v2/users/__id-PATCH.json.yml" with:
9
+ """yml
10
+ ---
11
+ description: user updating
12
+ prefix: users management
13
+ requestParameters:
14
+ description: ''
15
+ type: object
16
+ additionalProperties: false
17
+ required: []
18
+ properties:
19
+ user:
20
+ description: ''
21
+ type: object
22
+ additionalProperties: false
23
+ required: []
24
+ properties:
25
+ surname:
26
+ description: ''
27
+ type: integer
28
+ example: 42
29
+ responseCodes:
30
+ - status: 200
31
+ successful: true
32
+ description: ''
33
+ responseParameters:
34
+ description: ''
35
+ type: object
36
+ additionalProperties: false
37
+ required: []
38
+ properties:
39
+ id:
40
+ description: ''
41
+ type: integer
42
+ example: 1
43
+ name:
44
+ description: ''
45
+ type: string
46
+ example: razum2um
47
+ surname:
48
+ description: ''
49
+ type: string
50
+ example: Marley
51
+ extensions:
52
+ method: PATCH
53
+ path_info: "/api/v2/users/1"
54
+ path_params:
55
+ id: '1'
56
+ controller: api/v2/users
57
+ action: update
58
+ suffix: ''
59
+ """
60
+
61
+ Scenario: json schema tests response parameters and update request parameters using "users/update"
62
+ Given a file named "spec/controllers/api/v2/users_controller_spec.rb" with:
63
+ """ruby
64
+ require "spec_helper"
65
+
66
+ describe Api::V2::UsersController, :lurker do
67
+ render_views
68
+
69
+ let(:user) do
70
+ User.where(name: 'razum2um', surname: 'Unknown').first_or_create!
71
+ end
72
+
73
+ it "updates a user surname as string" do
74
+ patch :update, id: user.id, user: { surname: 'Marley' }
75
+ expect(response).to be_success
76
+ end
77
+ end
78
+ """
79
+
80
+ When I run `bin/rspec spec/controllers/api/v2/users_controller_spec.rb`
81
+ Then the example should pass
82
+ Then a file named "lurker/api/v2/users/__id-PATCH.json.yml" should exist
83
+ Then the file "lurker/api/v2/users/__id-PATCH.json.yml" should contain exactly:
84
+ """yml
85
+ ---
86
+ description: user updating
87
+ prefix: users management
88
+ requestParameters:
89
+ description: ''
90
+ type: object
91
+ additionalProperties: false
92
+ required: []
93
+ properties:
94
+ user:
95
+ description: ''
96
+ type: object
97
+ additionalProperties: false
98
+ required: []
99
+ properties:
100
+ surname:
101
+ anyOf:
102
+ - description: ''
103
+ type: integer
104
+ example: 42
105
+ - description: ''
106
+ type: string
107
+ example: Marley
108
+ responseCodes:
109
+ - status: 200
110
+ successful: true
111
+ description: ''
112
+ responseParameters:
113
+ description: ''
114
+ type: object
115
+ additionalProperties: false
116
+ required: []
117
+ properties:
118
+ id:
119
+ description: ''
120
+ type: integer
121
+ example: 1
122
+ name:
123
+ description: ''
124
+ type: string
125
+ example: razum2um
126
+ surname:
127
+ description: ''
128
+ type: string
129
+ example: Marley
130
+ extensions:
131
+ method: PATCH
132
+ path_info: "/api/v2/users/1"
133
+ path_params:
134
+ id: '1'
135
+ controller: api/v2/users
136
+ action: update
137
+ suffix: ''
138
+
139
+ """
@@ -11,11 +11,11 @@ Feature: request schema scaffolding
11
11
 
12
12
  describe Api::V1::UsersController, :lurker do
13
13
  let!(:user) do
14
- User.where(name: 'razum2um').first_or_create!
14
+ User.where(name: 'razum2um', surname: 'Marley').first_or_create!
15
15
  end
16
16
 
17
17
  let!(:bot) do
18
- User.where(name: 'bot').first_or_create!
18
+ User.where(name: 'bot', surname: 'google').first_or_create!
19
19
  end
20
20
 
21
21
  it "lists all the users" do
@@ -64,6 +64,10 @@ Feature: request schema scaffolding
64
64
  description: ''
65
65
  type: string
66
66
  example: razum2um
67
+ surname:
68
+ description: ''
69
+ type: string
70
+ example: Marley
67
71
  extensions:
68
72
  method: GET
69
73
  path_info: "/api/v1/users.json"
@@ -75,5 +79,3 @@ Feature: request schema scaffolding
75
79
  suffix: ''
76
80
 
77
81
  """
78
-
79
-