summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@leap.se>2012-12-18 02:29:45 +0100
committerAzul <azul@leap.se>2012-12-18 02:29:45 +0100
commitcd0c59ae6177b8b93971735887657314b6888a3c (patch)
treed39b06cd424e3345a3cba97f56a44c920c06ec97
parentbe2d8fbd65f4ed2e1e97b19a3322da20e2fb4eda (diff)
parente899e5c3f33acb3228fac295013d7cc8b6e4eb04 (diff)
Merge branch 'master' into feature/removing-email-aliases
-rw-r--r--app/assets/javascripts/application.js13
-rw-r--r--app/views/layouts/application.html.haml1
-rw-r--r--certs/app/controllers/certs_controller.rb7
-rw-r--r--certs/app/models/cert.rb57
-rw-r--r--certs/app/models/leap_ca/cert.rb56
-rw-r--r--certs/config/locales/en.yml2
-rw-r--r--certs/test/functional/certs_controller_test.rb6
-rw-r--r--certs/test/unit/cert_pool_test.rb35
-rw-r--r--certs/test/unit/cert_test.rb46
-rw-r--r--core/lib/leap_web_core/dependencies.rb1
-rw-r--r--core/lib/leap_web_core/ui_dependencies.rb1
-rw-r--r--help/app/controllers/tickets_controller.rb8
-rw-r--r--help/app/views/tickets/_new_comment.html.haml2
-rw-r--r--help/app/views/tickets/index.html.haml5
-rw-r--r--help/app/views/tickets/new.html.haml2
-rw-r--r--help/app/views/tickets/show.html.haml2
-rw-r--r--help/test/functional/tickets_controller_test.rb4
-rw-r--r--ui_dependencies.rb1
18 files changed, 115 insertions, 134 deletions
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 3fd641c..e6f6024 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -13,17 +13,14 @@
//= require jquery
//= require jquery_ujs
//= require srp
-//= require users
-//= require_tree .
//= require bootstrap
//= require bootstrap-editable
//= require bootstrap-editable-rails
//= require bootstrap-editable-inline
-//= require jquery.pjax
-//= require tickets
-
-$(function() {
- $('a:not([data-remote]):not([data-behavior]):not([data-skip-pjax])').pjax('[data-pjax-container]');
-});
//= require rails.validations
//= require rails.validations.simple_form
+
+//= require tickets
+//= require users
+
+//= require_tree .
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index bd03477..e6d22f0 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -19,6 +19,5 @@
.row
.span12
= render 'layouts/messages'
- %div{"data-pjax-container" => ""}
= yield
%footer
diff --git a/certs/app/controllers/certs_controller.rb b/certs/app/controllers/certs_controller.rb
index 402bef3..d81aea0 100644
--- a/certs/app/controllers/certs_controller.rb
+++ b/certs/app/controllers/certs_controller.rb
@@ -4,8 +4,11 @@ class CertsController < ApplicationController
# GET /cert
def show
- @cert = Cert.pick_from_pool
- render :text => @cert.zipped, :content_type => 'text/plain'
+ @cert = LeapCA::Cert.pick_from_pool
+ render :text => @cert.key + @cert.cert, :content_type => 'text/plain'
+ rescue RECORD_NOT_FOUND
+ flash[:error] = t(:cert_pool_empty)
+ redirect_to root_path
end
end
diff --git a/certs/app/models/cert.rb b/certs/app/models/cert.rb
deleted file mode 100644
index 9a6c98d..0000000
--- a/certs/app/models/cert.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-class Cert < CouchRest::Model::Base
-
- use_database 'client_certificates'
-
- timestamps!
-
- property :random, Float, :accessible => false
-
- before_validation :set_random, :attach_zip, :on => :create
-
- validates :random, :presence => true,
- :numericality => {:greater_than => 0, :less_than => 1}
-
- validates :zip_attachment, :presence => true
-
- design do
- view :by_random
- end
-
- class << self
- def sample
- self.by_random.startkey(rand).first || self.by_random.first
- end
-
- def pick_from_pool
- cert = self.sample || self.create!
- cert.destroy
- return cert
- rescue RESOURCE_NOT_FOUND
- retry if Cert.by_random.count > 0
- raise RECORD_NOT_FOUND
- end
-
- end
-
- def set_random
- self.random = rand
- end
-
- def attach_zip
- file = File.open(Rails.root.join("config", "cert"))
- self.create_attachment :file => file, :name => zipname
- end
-
- def zipname
- 'cert.txt'
- end
-
- def zip_attachment
- attachments[zipname]
- end
-
- def zipped
- read_attachment(zipname)
- end
-
-end
diff --git a/certs/app/models/leap_ca/cert.rb b/certs/app/models/leap_ca/cert.rb
new file mode 100644
index 0000000..9d4f15e
--- /dev/null
+++ b/certs/app/models/leap_ca/cert.rb
@@ -0,0 +1,56 @@
+#
+# Model for certificates stored in CouchDB.
+#
+# This file must be loaded after Config has been loaded.
+#
+
+module LeapCA
+ class Cert < CouchRest::Model::Base
+
+# No config yet. use_database LeapCA::Config.db_name
+ use_database 'client_certificates'
+
+ timestamps!
+
+ property :key, String # the client private RSA key
+ property :cert, String # the client x509 certificate, signed by the CA
+ property :valid_until, Time # expiration time of the client certificate
+ property :random, Float, :accessible => false # used to help pick a random cert by the webapp
+
+ before_validation :set_random, :on => :create
+
+ validates :key, :presence => true
+ validates :cert, :presence => true
+ validates :random, :presence => true
+ validates :random, :numericality => {:greater_than => 0, :less_than => 1}
+
+ design do
+ view :by_random
+ end
+
+ def set_random
+ self.random = rand
+ end
+
+ class << self
+ def sample
+ self.by_random.startkey(rand).first || self.by_random.first
+ end
+
+ def pick_from_pool
+ cert = self.sample
+ raise RECORD_NOT_FOUND unless cert
+ cert.destroy
+ return cert
+ rescue RESOURCE_NOT_FOUND
+ retry if self.by_random.count > 0
+ raise RECORD_NOT_FOUND
+ end
+
+ def valid_attributes_hash
+ {:key => "ABCD", :cert => "A123"}
+ end
+ end
+
+ end
+end
diff --git a/certs/config/locales/en.yml b/certs/config/locales/en.yml
new file mode 100644
index 0000000..18e4f47
--- /dev/null
+++ b/certs/config/locales/en.yml
@@ -0,0 +1,2 @@
+en:
+ cert_pool_empty: "Sorry the Cert pool is empty, please check back later."
diff --git a/certs/test/functional/certs_controller_test.rb b/certs/test/functional/certs_controller_test.rb
index 9bba8c0..3d6946e 100644
--- a/certs/test/functional/certs_controller_test.rb
+++ b/certs/test/functional/certs_controller_test.rb
@@ -12,10 +12,10 @@ class CertsControllerTest < ActionController::TestCase
test "should send cert" do
login
- cert = stub :zipped => "adsf", :zipname => "cert_stub.zip"
- Cert.expects(:pick_from_pool).returns(cert)
+ cert = stub :cert => "adsf", :key => "key"
+ LeapCA::Cert.expects(:pick_from_pool).returns(cert)
get :show
assert_response :success
- assert_equal cert.zipped, @response.body
+ assert_equal cert.key + cert.cert, @response.body
end
end
diff --git a/certs/test/unit/cert_pool_test.rb b/certs/test/unit/cert_pool_test.rb
index 24ace57..06f7ce0 100644
--- a/certs/test/unit/cert_pool_test.rb
+++ b/certs/test/unit/cert_pool_test.rb
@@ -3,49 +3,50 @@ require 'test_helper'
class CertPoolTest < ActiveSupport::TestCase
setup do
- 2.times { Cert.create! }
+ 2.times { LeapCA::Cert.create(LeapCA::Cert.valid_attributes_hash) }
end
teardown do
- Cert.all.each {|c| c.destroy}
+ LeapCA::Cert.all.each {|c| c.destroy}
end
test "picks random sample" do
- Cert.create! # with 3 certs chances are pretty low we pick the same one 40 times.
+ # with 3 certs chances are pretty low we pick the same one 40 times.
+ LeapCA::Cert.create! LeapCA::Cert.valid_attributes_hash
picked = []
- first = Cert.sample.id
- current = Cert.sample.id
+ first = LeapCA::Cert.sample.id
+ current = LeapCA::Cert.sample.id
40.times do
break if current != first
- current = Cert.sample.id
+ current = LeapCA::Cert.sample.id
end
assert_not_equal current, first
end
test "picks cert from the pool" do
- assert_difference "Cert.count", -1 do
- cert = Cert.pick_from_pool
+ assert_difference "LeapCA::Cert.count", -1 do
+ cert = LeapCA::Cert.pick_from_pool
end
end
test "err's out if all certs have been destroyed" do
- sample = Cert.first.tap{|c| c.destroy}
- Cert.all.each {|c| c.destroy}
+ sample = LeapCA::Cert.first.tap{|c| c.destroy}
+ LeapCA::Cert.all.each {|c| c.destroy}
assert_raises RECORD_NOT_FOUND do
- Cert.expects(:sample).returns(sample)
- cert = Cert.pick_from_pool
+ LeapCA::Cert.expects(:sample).returns(sample)
+ cert = LeapCA::Cert.pick_from_pool
end
end
test "picks other cert if first pick has been destroyed" do
- first = Cert.first.tap{|c| c.destroy}
- second = Cert.first
- Cert.expects(:sample).at_least_once.
+ first = LeapCA::Cert.first.tap{|c| c.destroy}
+ second = LeapCA::Cert.first
+ LeapCA::Cert.expects(:sample).at_least_once.
returns(first).
then.returns(second)
- cert = Cert.pick_from_pool
+ cert = LeapCA::Cert.pick_from_pool
assert_equal second, cert
- assert_nil Cert.first
+ assert_nil LeapCA::Cert.first
end
end
diff --git a/certs/test/unit/cert_test.rb b/certs/test/unit/cert_test.rb
index 9362da2..0b21d0b 100644
--- a/certs/test/unit/cert_test.rb
+++ b/certs/test/unit/cert_test.rb
@@ -3,47 +3,37 @@ require 'test_helper'
class CertTest < ActiveSupport::TestCase
setup do
- @sample = Cert.new
- @sample.set_random
- @sample.attach_zip
+ @sample = LeapCA::Cert.new LeapCA::Cert.valid_attributes_hash
end
- test "certs come with attachments" do
- assert @sample.has_attachment? "cert.txt"
- end
-
- test "cert.zip_attachment returns couchDB attachment" do
- assert_equal "text/plain", @sample.zip_attachment["content_type"]
- end
-
- test "cert.zipped returns the actual data" do
- @sample.save # This is required !
- assert lines = @sample.zipped.split("\n")
- assert_equal 56, lines.count
- assert_equal "-----BEGIN RSA PRIVATE KEY-----", lines.first.chomp
- assert_equal "-----END CERTIFICATE-----", lines.last.chomp
- end
-
- test "cert.zipname returns name for the zip file" do
- assert_equal "cert.txt", @sample.zipname
+ test "stub cert for testing is valid" do
+ assert @sample.valid?
end
- test "test data is valid" do
+ test "setting random on create validation" do
+ @sample.random = "asdf"
assert @sample.valid?
+ assert @sample.random.is_a? Float
+ assert @sample.random >= 0
+ assert @sample.random < 1
end
test "validates random" do
- @sample.stubs(:set_random)
- [0, 1, nil, "asdf"].each do |invalid|
+ @sample.save # make sure we are past the on_create
+ assert @sample.valid?
+ ["asdf", 1, 2, -0.1, nil, "asdf"].each do |invalid|
@sample.random = invalid
assert !@sample.valid?, "#{invalid} should not be a valid value for random"
end
end
- test "validates attachment" do
- @sample.stubs(:attach_zip)
- @sample.delete_attachment(@sample.zipname)
- assert !@sample.valid?, "Cert should require zipped attachment"
+ test "validates key" do
+ @sample.key = nil
+ assert !@sample.valid?, "Cert should require key"
end
+ test "validates cert" do
+ @sample.cert = nil
+ assert !@sample.valid?, "Cert should require cert"
+ end
end
diff --git a/core/lib/leap_web_core/dependencies.rb b/core/lib/leap_web_core/dependencies.rb
index 00ef515..7f6ca87 100644
--- a/core/lib/leap_web_core/dependencies.rb
+++ b/core/lib/leap_web_core/dependencies.rb
@@ -11,7 +11,6 @@ module LeapWebCore
"haml" => "~> 3.1.7",
"bootstrap-sass" => "~> 2.0.4",
"jquery-rails" => nil,
- "pjax_rails" => nil,
"simple_form" => nil
}
diff --git a/core/lib/leap_web_core/ui_dependencies.rb b/core/lib/leap_web_core/ui_dependencies.rb
index 8ca9b91..e0a0b86 100644
--- a/core/lib/leap_web_core/ui_dependencies.rb
+++ b/core/lib/leap_web_core/ui_dependencies.rb
@@ -2,7 +2,6 @@ require "haml"
require "bootstrap-sass"
require "jquery-rails"
require "simple_form"
-require "pjax_rails"
if Rails.env == "development"
require "haml-rails"
diff --git a/help/app/controllers/tickets_controller.rb b/help/app/controllers/tickets_controller.rb
index db9bc82..297de30 100644
--- a/help/app/controllers/tickets_controller.rb
+++ b/help/app/controllers/tickets_controller.rb
@@ -39,6 +39,7 @@ class TicketsController < ApplicationController
def show
@ticket = Ticket.find(params[:id])
+ @comment = TicketComment.new
if !@ticket
redirect_to tickets_path, :alert => "No such ticket"
return
@@ -53,9 +54,7 @@ class TicketsController < ApplicationController
if !ticket_access_denied?
if params[:post] #currently changes to title or is_open status
- if @ticket.update_attributes(params[:post]) #this saves ticket, so @ticket.changed? will be false
- tick_updated = true
- end
+ @ticket.attributes = params[:post]
# TODO: do we want to keep the history of title changes? one possibility was adding a comment that said something like 'user changed the title from a to b'
else
@@ -64,9 +63,8 @@ class TicketsController < ApplicationController
@ticket.close if params[:commit] == @reply_close_str #this overrides is_open selection
# what if there is an update and no new comment? Confirm that there is a new comment to update posted_by:
@ticket.comments.last.posted_by = (current_user ? current_user.id : nil) if @ticket.comments_changed? #protecting posted_by isn't working, so this should protect it.
- tick_updated = true if @ticket.changed? and @ticket.save
end
- if tick_updated
+ if @ticket.changed? and @ticket.save
flash[:notice] = 'Ticket was successfully updated.'
if @ticket.is_open
respond_with @ticket
diff --git a/help/app/views/tickets/_new_comment.html.haml b/help/app/views/tickets/_new_comment.html.haml
index b216311..5697854 100644
--- a/help/app/views/tickets/_new_comment.html.haml
+++ b/help/app/views/tickets/_new_comment.html.haml
@@ -1,2 +1,2 @@
-= f.simple_fields_for :comments, comment_object do |c|
+= f.simple_fields_for :comments, @comment do |c|
= c.input :body, :label => 'Comment', :as => :text
diff --git a/help/app/views/tickets/index.html.haml b/help/app/views/tickets/index.html.haml
index fdbeec5..23a503d 100644
--- a/help/app/views/tickets/index.html.haml
+++ b/help/app/views/tickets/index.html.haml
@@ -15,8 +15,3 @@ Create a
= render @tickets.all
= paginate @tickets
-%div{"data-pjax-container" => ""}
- / PJAX updates will go here
- hmmm
-
-
diff --git a/help/app/views/tickets/new.html.haml b/help/app/views/tickets/new.html.haml
index 0ee47ff..ca036a5 100644
--- a/help/app/views/tickets/new.html.haml
+++ b/help/app/views/tickets/new.html.haml
@@ -2,7 +2,7 @@
= simple_form_for(@ticket, :html => {:novalidate => true}) do |f| #turn off html5 validations to test
= f.input :title
= f.input :email if !current_user #hmm--might authenticated users want to submit an alternate email?
- = render :partial => 'new_comment', :locals => {:f => f, :comment_object => nil}
+ = render :partial => 'new_comment', :locals => {:f => f}
= # regarding_user if not logged in
= # email if not logged in
= f.button :submit
diff --git a/help/app/views/tickets/show.html.haml b/help/app/views/tickets/show.html.haml
index b9f2ce6..a4f3b5f 100644
--- a/help/app/views/tickets/show.html.haml
+++ b/help/app/views/tickets/show.html.haml
@@ -25,7 +25,7 @@
= #render @ticket.comments should work if view is in /app/views/comments/_comment
= simple_form_for(@ticket, :html => {:novalidate => true}) do |f| #turn off html5 validations to test
- = render :partial => 'new_comment', :locals => {:f => f, :comment_object => TicketComment.new}
+ = render :partial => 'new_comment', :locals => {:f => f}
= f.button :submit, @post_reply_str
- if @ticket.is_open
= f.button :submit, @reply_close_str
diff --git a/help/test/functional/tickets_controller_test.rb b/help/test/functional/tickets_controller_test.rb
index b29fa17..7060936 100644
--- a/help/test/functional/tickets_controller_test.rb
+++ b/help/test/functional/tickets_controller_test.rb
@@ -177,9 +177,9 @@ class TicketsControllerTest < ActionController::TestCase
login :is_admin? => true, :email => nil
get :index, {:admin_status => "all", :open_status => "open"}
- assert assigns(:all_tickets).count > 1 # at least 2 tickets
+ assert assigns(:all_tickets).count > 1
- # if we close one ticket, the admin should have 1 less open ticket they admin
+ # if we close one ticket, the admin should have 1 less open ticket
assert_difference('assigns[:all_tickets].count', -1) do
assigns(:tickets).first.close
assigns(:tickets).first.save
diff --git a/ui_dependencies.rb b/ui_dependencies.rb
index 10eac67..c0779c0 100644
--- a/ui_dependencies.rb
+++ b/ui_dependencies.rb
@@ -2,7 +2,6 @@ gem "haml", "~> 3.1.7"
gem "bootstrap-sass", "~> 2.1.0"
gem "jquery-rails"
gem "simple_form"
-gem "pjax_rails"
gem 'client_side_validations'
gem 'client_side_validations-simple_form'
gem 'kaminari', "0.13.0" # for pagination. trying 0.13.0 as there seem to be issues with 0.14.0 when using couchrest