foca-integrity 0.1.9.1 → 0.1.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/.gitignore +12 -0
  2. data/CHANGES +28 -0
  3. data/README.markdown +6 -0
  4. data/Rakefile +44 -83
  5. data/config/heroku/.gems +0 -3
  6. data/config/heroku/integrity-config.rb +4 -1
  7. data/integrity.gemspec +18 -6
  8. data/lib/integrity.rb +9 -5
  9. data/lib/integrity/app.rb +8 -8
  10. data/lib/integrity/build.rb +14 -7
  11. data/lib/integrity/commit.rb +0 -8
  12. data/lib/integrity/helpers/authorization.rb +1 -1
  13. data/lib/integrity/helpers/breadcrumbs.rb +1 -1
  14. data/lib/integrity/helpers/rendering.rb +8 -2
  15. data/lib/integrity/helpers/urls.rb +33 -23
  16. data/lib/integrity/installer.rb +18 -17
  17. data/lib/integrity/notifier/base.rb +12 -3
  18. data/lib/integrity/project.rb +6 -6
  19. data/lib/integrity/project_builder.rb +35 -35
  20. data/test/acceptance/api_test.rb +1 -1
  21. data/test/acceptance/browse_project_builds_test.rb +1 -1
  22. data/test/acceptance/browse_project_test.rb +1 -1
  23. data/test/acceptance/build_notifications_test.rb +1 -1
  24. data/test/acceptance/create_project_test.rb +1 -1
  25. data/test/acceptance/delete_project_test.rb +1 -1
  26. data/test/acceptance/edit_project_test.rb +1 -1
  27. data/test/acceptance/error_page_test.rb +1 -1
  28. data/test/acceptance/installer_test.rb +2 -6
  29. data/test/acceptance/manual_build_project_test.rb +1 -1
  30. data/test/acceptance/not_found_page_test.rb +29 -0
  31. data/test/acceptance/notifier_test.rb +1 -1
  32. data/test/acceptance/project_syndication_test.rb +1 -1
  33. data/test/acceptance/stylesheet_test.rb +10 -2
  34. data/test/acceptance/unauthorized_page_test.rb +20 -0
  35. data/test/helpers.rb +20 -7
  36. data/test/helpers/acceptance.rb +1 -0
  37. data/test/unit/build_test.rb +33 -0
  38. data/test/unit/commit_test.rb +0 -21
  39. data/test/unit/helpers_test.rb +67 -20
  40. data/test/unit/integrity_test.rb +23 -6
  41. data/test/unit/migrations_test.rb +2 -2
  42. data/test/unit/notifier_test.rb +5 -0
  43. data/test/unit/project_builder_test.rb +8 -1
  44. data/test/unit/project_test.rb +7 -0
  45. data/views/home.haml +2 -2
  46. data/views/layout.haml +6 -5
  47. data/views/new.haml +1 -1
  48. data/views/not_found.haml +2 -2
  49. data/views/unauthorized.haml +4 -4
  50. metadata +105 -6
  51. data/test/acceptance/helpers.rb +0 -2
  52. data/vendor/sinatra-ditties/README.rdoc +0 -3
  53. data/vendor/sinatra-ditties/lib/sinatra/ditties.rb +0 -12
  54. data/vendor/sinatra-ditties/lib/sinatra/ditties/authorization.rb +0 -61
  55. data/vendor/sinatra-ditties/lib/sinatra/ditties/mailer.rb +0 -146
@@ -1,4 +1,4 @@
1
- %form{ :method => "post", :action => (@project.new_record? ? "/" : project_path(@project)) }
1
+ %form{ :method => "post", :action => (@project.new_record? ? root_path("/") : project_path(@project)) }
2
2
  - unless @project.new_record?
3
3
  .hidden
4
4
  %input{ :name => "_method", :type => "hidden", :value => "put" }
@@ -1,7 +1,7 @@
1
1
  .error
2
2
  %h1
3
3
  Ehm, you seem a bit lost, sir. Maybe going to the
4
- %a{ :href => "/", :rel => "home" } list of projects
4
+ %a{ :href => root_path("/"), :rel => "home" } list of projects
5
5
  will help?
6
6
  %dl
7
7
  %dt Ouch. This is a 404 error-thingie, right?
@@ -14,7 +14,7 @@
14
14
  %strong DON'T PANIC
15
15
  / if you didn't get the reference you aren't as nerd as you should be
16
16
  You should probably just go back to
17
- %a{ :href => "/", :rel => "home" } the projects list
17
+ %a{ :href => root_path("/"), :rel => "home" } the projects list
18
18
  or, alternatively, go
19
19
  = succeed "." do
20
20
  %a{ :href => request.referer } back from whence you came
@@ -1,10 +1,10 @@
1
1
  .error
2
2
  %h1
3
3
  So... you don't know the password? Hmm... You can
4
- %a{ :href => "/login" } try again
4
+ %a{ :href => root_path("/login") } try again
5
5
  or
6
6
  = succeed "." do
7
- %a{ :href => "/", :rel => "home" } go back
7
+ %a{ :href => root_path("/"), :rel => "home" } go back
8
8
 
9
9
  %dl
10
10
  %dt Er... So... I'm trying to login without a password...
@@ -19,12 +19,12 @@
19
19
  %dd
20
20
  This just means that you can't access some part of this Integrity
21
21
  server, but that shouldn't let you out of some of the
22
- %a{ :href => "/" } awesome projects
22
+ %a{ :href => root_path("/") } awesome projects
23
23
  hosted here. If this was just a misunderstanding and you
24
24
  %strong do
25
25
  have a password, then
26
26
  = succeed "." do
27
- %a{ :href => "/login" } click here to try again
27
+ %a{ :href => root_path("/login") } click here to try again
28
28
 
29
29
  %dt
30
30
  So what the hell is
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foca-integrity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9.1
4
+ version: 0.1.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Nicol\xC3\xA1s Sanguinetti"
@@ -23,6 +23,16 @@ dependencies:
23
23
  - !ruby/object:Gem::Version
24
24
  version: 0.9.1.1
25
25
  version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: sinatra-authorization
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ version:
26
36
  - !ruby/object:Gem::Dependency
27
37
  name: haml
28
38
  type: :runtime
@@ -83,6 +93,96 @@ dependencies:
83
93
  - !ruby/object:Gem::Version
84
94
  version: "0"
85
95
  version:
96
+ - !ruby/object:Gem::Dependency
97
+ name: rr
98
+ type: :development
99
+ version_requirement:
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
105
+ version:
106
+ - !ruby/object:Gem::Dependency
107
+ name: mocha
108
+ type: :development
109
+ version_requirement:
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: "0"
115
+ version:
116
+ - !ruby/object:Gem::Dependency
117
+ name: webrat
118
+ type: :development
119
+ version_requirement:
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
125
+ version:
126
+ - !ruby/object:Gem::Dependency
127
+ name: do_sqlite3
128
+ type: :development
129
+ version_requirement:
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: "0"
135
+ version:
136
+ - !ruby/object:Gem::Dependency
137
+ name: dm-sweatshop
138
+ type: :development
139
+ version_requirement:
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: "0"
145
+ version:
146
+ - !ruby/object:Gem::Dependency
147
+ name: ParseTree
148
+ type: :development
149
+ version_requirement:
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: "0"
155
+ version:
156
+ - !ruby/object:Gem::Dependency
157
+ name: jeremymcanally-context
158
+ type: :development
159
+ version_requirement:
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: "0"
165
+ version:
166
+ - !ruby/object:Gem::Dependency
167
+ name: jeremymcanally-pending
168
+ type: :development
169
+ version_requirement:
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: "0"
175
+ version:
176
+ - !ruby/object:Gem::Dependency
177
+ name: foca-storyteller
178
+ type: :development
179
+ version_requirement:
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: "0"
185
+ version:
86
186
  description: Your Friendly Continuous Integration server. Easy, fun and painless!
87
187
  email: info@integrityapp.com
88
188
  executables:
@@ -92,6 +192,8 @@ extensions: []
92
192
  extra_rdoc_files: []
93
193
 
94
194
  files:
195
+ - .gitignore
196
+ - CHANGES
95
197
  - README.markdown
96
198
  - Rakefile
97
199
  - bin/integrity
@@ -140,12 +242,13 @@ files:
140
242
  - test/acceptance/delete_project_test.rb
141
243
  - test/acceptance/edit_project_test.rb
142
244
  - test/acceptance/error_page_test.rb
143
- - test/acceptance/helpers.rb
144
245
  - test/acceptance/installer_test.rb
145
246
  - test/acceptance/manual_build_project_test.rb
247
+ - test/acceptance/not_found_page_test.rb
146
248
  - test/acceptance/notifier_test.rb
147
249
  - test/acceptance/project_syndication_test.rb
148
250
  - test/acceptance/stylesheet_test.rb
251
+ - test/acceptance/unauthorized_page_test.rb
149
252
  - test/helpers.rb
150
253
  - test/helpers/acceptance.rb
151
254
  - test/helpers/acceptance/email_notifier.rb
@@ -168,10 +271,6 @@ files:
168
271
  - test/unit/project_builder_test.rb
169
272
  - test/unit/project_test.rb
170
273
  - test/unit/scm_test.rb
171
- - vendor/sinatra-ditties/README.rdoc
172
- - vendor/sinatra-ditties/lib/sinatra/ditties.rb
173
- - vendor/sinatra-ditties/lib/sinatra/ditties/authorization.rb
174
- - vendor/sinatra-ditties/lib/sinatra/ditties/mailer.rb
175
274
  - views/_commit_info.haml
176
275
  - views/build.haml
177
276
  - views/error.haml
@@ -1,2 +0,0 @@
1
- require File.dirname(__FILE__) + "/../helpers"
2
- require File.dirname(__FILE__) / ".." / "helpers" / "acceptance"
@@ -1,3 +0,0 @@
1
- = Sinatra Ditties
2
-
3
- All those handy tunes in one elegant package.
@@ -1,12 +0,0 @@
1
- require "sinatra/base"
2
-
3
- module Sinatra
4
- module Ditties
5
- def self.version
6
- "0.0.2".freeze
7
- end
8
- end
9
-
10
- autoload :Authorization, File.dirname(__FILE__) + "/ditties/authorization"
11
- autoload :Mailer, File.dirname(__FILE__) + "/ditties/mailer"
12
- end
@@ -1,61 +0,0 @@
1
- module Sinatra
2
- # HTTP Authorization helpers for Sinatra.
3
- #
4
- # In your helpers module, include Sinatra::Authorization and then define
5
- # a +authorize(user, password)+ method to handle user provided
6
- # credentials.
7
- #
8
- # Inside your events, call +login_required+ to trigger the HTTP
9
- # Authorization window to pop up in the browser.
10
- #
11
- # Code adapted from Ryan Tomayko <http://tomayko.com> and Christopher
12
- # Schneid <http://gittr.com>, shared under an MIT License
13
- module Authorization
14
- # Redefine this method on your helpers block to actually contain
15
- # your authorization logic.
16
- def authorize(username, password)
17
- false
18
- end
19
-
20
- # From you app, call set :authorization_realm, "my app" to set this
21
- # or define a `authorization_realm` method in your helpers block.
22
- def authorization_realm
23
- Sinatra::Default.authorization_realm
24
- end
25
-
26
- # Call in any event that requires authentication
27
- def login_required
28
- return if authorized?
29
- unauthorized! unless auth.provided?
30
- bad_request! unless auth.basic?
31
- unauthorized! unless authorize(*auth.credentials)
32
- request.env['REMOTE_USER'] = auth.username
33
- end
34
-
35
- # Convenience method to determine if a user is logged in
36
- def authorized?
37
- !!request.env['REMOTE_USER']
38
- end
39
- alias :logged_in? :authorized?
40
-
41
- # Name provided by the current user to log in
42
- def current_user
43
- request.env['REMOTE_USER']
44
- end
45
-
46
- private
47
-
48
- def auth
49
- @auth ||= Rack::Auth::Basic::Request.new(request.env)
50
- end
51
-
52
- def unauthorized!(realm=authorization_realm)
53
- response["WWW-Authenticate"] = %(Basic realm="#{realm}")
54
- throw :halt, [ 401, 'Authorization Required' ]
55
- end
56
-
57
- def bad_request!
58
- throw :halt, [ 400, 'Bad Request' ]
59
- end
60
- end
61
- end
@@ -1,146 +0,0 @@
1
- # Shamelssly stolen from Merb::Mailer
2
- # http://merbivore.com
3
-
4
- require 'net/smtp'
5
- require 'rubygems'
6
- require 'mailfactory'
7
- require 'tlsmail'
8
-
9
- Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
10
-
11
- class MailFactory
12
- attr_reader :html, :text
13
- end
14
-
15
- module Sinatra
16
- # = Sinatra::Mailer
17
- #
18
- # Adds an #email method to your email handlers, that receives a hash of
19
- # values to create your email.
20
- #
21
- # For example:
22
- #
23
- # post "/signup" do
24
- # # sign up the user, and then:
25
- # email :to => @user.email,
26
- # :from => "awesomeness@example.com",
27
- # :subject => "Welcome to Awesomeness!",
28
- # :body => haml(:some_template)
29
- # end
30
- #
31
- # == Configuration
32
- #
33
- # This plugin is very dirty yet :) Since it's just a port to Sinatra of
34
- # Merb::Mailer[merbivore.com/documentation/1.0/doc/rdoc/merb-mailer-1.0].
35
- # So the configuration is not Sinatra-y, yet. But we'll get to that.
36
- #
37
- # == Using SMTP
38
- #
39
- # Sinatra::Mailer.config = {
40
- # :host => 'smtp.yourserver.com',
41
- # :port => '25',
42
- # :user => 'user',
43
- # :pass => 'pass',
44
- # :auth => :plain # :plain, :login, :cram_md5, the default is no auth
45
- # :domain => "localhost.localdomain" # HELO domain provided by the client
46
- # }
47
- #
48
- # == Using Gmail SMTP
49
- #
50
- # You need smtp-tls[http://github.com/ambethia/smtp-tls], a gem that improves
51
- # Net::HTTP to add support for secure servers such as Gmail.
52
- #
53
- # require "smtp-tls"
54
- #
55
- # Sinatra::Mailer.config = {
56
- # :host => 'smtp.gmail.com',
57
- # :port => '587',
58
- # :user => 'user@gmail.com',
59
- # :pass => 'pass',
60
- # :auth => :plain
61
- # }
62
- #
63
- # Make sure that when you call your #email method you pass the
64
- # +:text+ option and not +:body+.
65
- #
66
- # == Using sendmail
67
- #
68
- # Sinatra::Mailer.config = {:sendmail_path => '/somewhere/odd'}
69
- # Sinatra::Mailer.delivery_method = :sendmail
70
- #
71
- # == Credits
72
- #
73
- # This has been blatantly adapted from
74
- # Merb::Mailer[merbivore.com/documentation/1.0/doc/rdoc/merb-mailer-1.0]
75
- # so all credit is theirs, I just ported it to Sinatra.
76
- module Mailer
77
- class << self
78
- attr_accessor :config, :delivery_method
79
- end
80
-
81
- def email(mail_options={})
82
- Email.new(mail_options).deliver!
83
- end
84
-
85
- class Email
86
- attr_accessor :mail, :config
87
-
88
- # Sends the mail using sendmail.
89
- def sendmail
90
- sendmail = IO.popen("#{config[:sendmail_path]} #{@mail.to}", 'w+')
91
- sendmail.puts @mail.to_s
92
- sendmail.close
93
- end
94
-
95
- # Sends the mail using SMTP.
96
- def net_smtp
97
- Net::SMTP.start(config[:host], config[:port].to_i, config[:domain],
98
- config[:user], config[:pass], config[:auth]) { |smtp|
99
- smtp.send_message(@mail.to_s, @mail.from.first, @mail.to.to_s.split(/[,;]/))
100
- }
101
- end
102
-
103
- # Delivers the mail with the specified delivery method, defaulting to
104
- # net_smtp.
105
- def deliver!
106
- send(Mailer.delivery_method || :net_smtp)
107
- end
108
-
109
- # ==== Parameters
110
- # file_or_files<File, Array[File]>:: File(s) to attach.
111
- # filename<String>::
112
- # type<~to_s>::
113
- # The attachment MIME type. If left out, it will be determined from
114
- # file_or_files.
115
- # headers<String, Array>:: Additional attachment headers.
116
- #
117
- # ==== Raises
118
- # ArgumentError::
119
- # file_or_files was not a File or an Array of File instances.
120
- def attach(file_or_files, filename = file_or_files.is_a?(File) ? File.basename(file_or_files.path) : nil,
121
- type = nil, headers = nil)
122
- if file_or_files.is_a?(Array)
123
- file_or_files.each {|k,v| @mail.add_attachment_as k, *v}
124
- else
125
- raise ArgumentError, "You did not pass in a file. Instead, you sent a #{file_or_files.class}" if !file_or_files.is_a?(File)
126
- @mail.add_attachment_as(file_or_files, filename, type, headers)
127
- end
128
- end
129
-
130
- # ==== Parameters
131
- # o<Hash{~to_s => Object}>:: Configuration commands to send to MailFactory.
132
- def initialize(o={})
133
- self.config = Mailer.config || {:sendmail_path => '/usr/sbin/sendmail'}
134
- o[:rawhtml] = o.delete(:html)
135
- m = MailFactory.new()
136
- o.each { |k,v| m.send "#{k}=", v }
137
- @mail = m
138
- end
139
-
140
- end
141
- end
142
-
143
- class EventContext
144
- include Mailer
145
- end
146
- end