From bb8dc2473e5617fbcff021722f770512b5e2368e Mon Sep 17 00:00:00 2001 From: Tyler Pickett Date: Mon, 29 Apr 2013 09:16:25 -0500 Subject: [PATCH 1/6] place tickets spec inside Tickets' containing module Signed-off-by: Tyler Pickett --- spec/rubycas-server-core/tickets_spec.rb | 167 ++++++++++++----------- 1 file changed, 84 insertions(+), 83 deletions(-) diff --git a/spec/rubycas-server-core/tickets_spec.rb b/spec/rubycas-server-core/tickets_spec.rb index 224aebd..85bbac9 100644 --- a/spec/rubycas-server-core/tickets_spec.rb +++ b/spec/rubycas-server-core/tickets_spec.rb @@ -1,116 +1,117 @@ require "spec_helper" -describe RubyCAS::Server::Core::Tickets do - before do - RubyCAS::Server::Core.setup("spec/config/config.yml") - klass = Class.new { - include RubyCAS::Server::Core::Tickets - } - @cas = klass.new - @client_hostname = "myhost.test" - end - - Tickets = RubyCAS::Server::Core::Tickets - - describe "login ticket object" do +module RubyCAS::Server::Core + describe RubyCAS::Server::Core::Tickets do before do - @lt = @cas.generate_login_ticket(@client_hostname) + RubyCAS::Server::Core.setup("spec/config/config.yml") + klass = Class.new { + include RubyCAS::Server::Core::Tickets + } + @cas = klass.new + @client_hostname = "myhost.test" end - it "should return a login ticket" do - @lt.class.should == Tickets::LoginTicket - end + Tickets = RubyCAS::Server::Core::Tickets - it "should set the client_hostname" do - @lt.client_hostname.should == @client_hostname - end + describe "login ticket object" do + before do + @lt = @cas.generate_login_ticket(@client_hostname) + end - it "should set the ticket string" do - @lt.ticket.should_not be_nil - end + it "should return a login ticket" do + @lt.class.should == Tickets::LoginTicket + end - it "should set the ticket string starting with 'LT'" do - @lt.ticket.should match /^LT/ - end + it "should set the client_hostname" do + @lt.client_hostname.should == @client_hostname + end - it "should not mark the ticket as consumed" do - @lt.consumed.should be_nil - end - end + it "should set the ticket string" do + @lt.ticket.should_not be_nil + end - describe "#generate_ticket_granting_ticket(username, extra_attributes = {})" do - before do - @username = 'myuser' - @client_hostname = "myhost.test" - @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) - end + it "should set the ticket string starting with 'LT'" do + @lt.ticket.should match /^LT/ + end - it "should return a TicketGrantingTicket" do - @tgt.class.should == Tickets::TicketGrantingTicket + it "should not mark the ticket as consumed" do + @lt.consumed.should be_nil + end end - it "should set the tgt's ticket string" do - @tgt.ticket.should_not be_nil - end + describe "#generate_ticket_granting_ticket(username, extra_attributes = {})" do + before do + @username = 'myuser' + @client_hostname = "myhost.test" + @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) + end - it "should generate a ticket string starting with 'TGC'" do - @tgt.ticket.should match /^TGC/ - end + it "should return a TicketGrantingTicket" do + @tgt.class.should == Tickets::TicketGrantingTicket + end - it "should set the tgt's username string" do - @tgt.username.should == @username - end + it "should set the tgt's ticket string" do + @tgt.ticket.should_not be_nil + end - it "should set the tgt's client_hostname" do - @tgt.client_hostname.should == @client_hostname - end + it "should generate a ticket string starting with 'TGC'" do + @tgt.ticket.should match /^TGC/ + end - end + it "should set the tgt's username string" do + @tgt.username.should == @username + end - describe "#generate_service_ticket(service, username, tgt)" do - before do - @username = 'testuser' - @client_hostname = "myhost.test" - @service = 'myservice.test' - @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) - @st = @cas.generate_service_ticket(@service, @username, @tgt, @client_hostname) - end + it "should set the tgt's client_hostname" do + @tgt.client_hostname.should == @client_hostname + end - it "should return a ServiceTicket" do - @st.class.should == Tickets::ServiceTicket end - it "should not include the service identifer in the ticket string" do - @st.ticket.should_not match /#{@service}/ - end + describe "#generate_service_ticket(service, username, tgt)" do + before do + @username = 'testuser' + @client_hostname = "myhost.test" + @service = 'myservice.test' + @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) + @st = @cas.generate_service_ticket(@service, @username, @tgt, @client_hostname) + end - it "should not mark the ST as consumed" do - @st.consumed.should be_nil - end + it "should return a ServiceTicket" do + @st.class.should == Tickets::ServiceTicket + end - it "must generate a ticket that starts with 'ST-'" do - @st.ticket.should match /^ST-/ - end + it "should not include the service identifer in the ticket string" do + @st.ticket.should_not match /#{@service}/ + end - it "should assoicate the ST with the supplied TGT" do - @st.ticket_granting_ticket.id.should == @tgt.id - end + it "should not mark the ST as consumed" do + @st.consumed.should be_nil + end - end + it "must generate a ticket that starts with 'ST-'" do + @st.ticket.should match /^ST-/ + end - describe "#generate_proxy_ticket(target_service, pgt)" do + it "should assoicate the ST with the supplied TGT" do + @st.ticket_granting_ticket.id.should == @tgt.id + end - it "should return a ProxyGrantingTicket" do - pending("Proxy ticket is not implemented yet") end - it "should not consume the generated ticket" do - pending("Proxy ticket is not implemented yet") - end + describe "#generate_proxy_ticket(target_service, pgt)" do - it "should start the ticket string with PT-" do - pending("Proxy ticket is not implemented yet") + it "should return a ProxyGrantingTicket" do + pending("Proxy ticket is not implemented yet") + end + + it "should not consume the generated ticket" do + pending("Proxy ticket is not implemented yet") + end + + it "should start the ticket string with PT-" do + pending("Proxy ticket is not implemented yet") + end end end - end From 2b10c002410768284dc7a565801b64928017ef89 Mon Sep 17 00:00:00 2001 From: Tyler Pickett Date: Mon, 29 Apr 2013 09:39:56 -0500 Subject: [PATCH 2/6] move login ticket generation to a module method Signed-off-by: Tyler Pickett --- lib/rubycas-server-core/tickets.rb | 2 +- spec/rubycas-server-core/tickets_spec.rb | 20 +++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/lib/rubycas-server-core/tickets.rb b/lib/rubycas-server-core/tickets.rb index 6cb0564..b94fc31 100644 --- a/lib/rubycas-server-core/tickets.rb +++ b/lib/rubycas-server-core/tickets.rb @@ -6,7 +6,7 @@ module Core module Tickets # One time login ticket for given client - def generate_login_ticket(client) + def self.generate_login_ticket(client) lt = LoginTicket.new lt.ticket = "LT-" + Util.random_string lt.client_hostname = client diff --git a/spec/rubycas-server-core/tickets_spec.rb b/spec/rubycas-server-core/tickets_spec.rb index 85bbac9..b02bb7c 100644 --- a/spec/rubycas-server-core/tickets_spec.rb +++ b/spec/rubycas-server-core/tickets_spec.rb @@ -2,6 +2,8 @@ module RubyCAS::Server::Core describe RubyCAS::Server::Core::Tickets do + let(:client_hostname) { 'myhost.test' } + before do RubyCAS::Server::Core.setup("spec/config/config.yml") klass = Class.new { @@ -11,31 +13,27 @@ module RubyCAS::Server::Core @client_hostname = "myhost.test" end - Tickets = RubyCAS::Server::Core::Tickets - - describe "login ticket object" do - before do - @lt = @cas.generate_login_ticket(@client_hostname) - end + describe '.generate_login_ticket(client_hostname)', focus: true do + let(:lt) { Tickets.generate_login_ticket(client_hostname) } it "should return a login ticket" do - @lt.class.should == Tickets::LoginTicket + lt.class.should == Tickets::LoginTicket end it "should set the client_hostname" do - @lt.client_hostname.should == @client_hostname + lt.client_hostname.should == client_hostname end it "should set the ticket string" do - @lt.ticket.should_not be_nil + lt.ticket.should_not be_nil end it "should set the ticket string starting with 'LT'" do - @lt.ticket.should match /^LT/ + lt.ticket.should match /^LT/ end it "should not mark the ticket as consumed" do - @lt.consumed.should be_nil + lt.consumed.should be_nil end end From c3d620cbc17ca654d0f968b5c2da285fae2ce360 Mon Sep 17 00:00:00 2001 From: Tyler Pickett Date: Mon, 29 Apr 2013 09:45:30 -0500 Subject: [PATCH 3/6] move TGT generation to module method Signed-off-by: Tyler Pickett --- lib/rubycas-server-core/tickets.rb | 2 +- spec/rubycas-server-core/tickets_spec.rb | 22 +++++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/rubycas-server-core/tickets.rb b/lib/rubycas-server-core/tickets.rb index b94fc31..b113aab 100644 --- a/lib/rubycas-server-core/tickets.rb +++ b/lib/rubycas-server-core/tickets.rb @@ -24,7 +24,7 @@ def self.generate_login_ticket(client) # The optional 'extra_attributes' parameter takes a hash of additional attributes # that will be sent along with the username in the CAS response to subsequent # validation requests from clients. - def generate_ticket_granting_ticket(username, client, extra_attributes = {}) + def self.generate_ticket_granting_ticket(username, client, extra_attributes = {}) tgt = TicketGrantingTicket.new tgt.ticket = "TGC-" + Util.random_string tgt.username = username diff --git a/spec/rubycas-server-core/tickets_spec.rb b/spec/rubycas-server-core/tickets_spec.rb index b02bb7c..1364222 100644 --- a/spec/rubycas-server-core/tickets_spec.rb +++ b/spec/rubycas-server-core/tickets_spec.rb @@ -3,6 +3,7 @@ module RubyCAS::Server::Core describe RubyCAS::Server::Core::Tickets do let(:client_hostname) { 'myhost.test' } + let(:username) { 'myuser' } before do RubyCAS::Server::Core.setup("spec/config/config.yml") @@ -13,7 +14,7 @@ module RubyCAS::Server::Core @client_hostname = "myhost.test" end - describe '.generate_login_ticket(client_hostname)', focus: true do + describe '.generate_login_ticket(client_hostname)' do let(:lt) { Tickets.generate_login_ticket(client_hostname) } it "should return a login ticket" do @@ -37,33 +38,28 @@ module RubyCAS::Server::Core end end - describe "#generate_ticket_granting_ticket(username, extra_attributes = {})" do - before do - @username = 'myuser' - @client_hostname = "myhost.test" - @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) - end + describe ".generate_ticket_granting_ticket(username, extra_attributes = {})" do + let(:tgt) { Tickets.generate_ticket_granting_ticket(username, client_hostname) } it "should return a TicketGrantingTicket" do - @tgt.class.should == Tickets::TicketGrantingTicket + tgt.class.should == Tickets::TicketGrantingTicket end it "should set the tgt's ticket string" do - @tgt.ticket.should_not be_nil + tgt.ticket.should_not be_nil end it "should generate a ticket string starting with 'TGC'" do - @tgt.ticket.should match /^TGC/ + tgt.ticket.should match /^TGC/ end it "should set the tgt's username string" do - @tgt.username.should == @username + tgt.username.should == username end it "should set the tgt's client_hostname" do - @tgt.client_hostname.should == @client_hostname + tgt.client_hostname.should == client_hostname end - end describe "#generate_service_ticket(service, username, tgt)" do From 460af12506cc4d790219cda928f63e80e10a65c9 Mon Sep 17 00:00:00 2001 From: Tyler Pickett Date: Mon, 29 Apr 2013 09:49:35 -0500 Subject: [PATCH 4/6] move Service Ticket generation to module method Signed-off-by: Tyler Pickett --- lib/rubycas-server-core/tickets.rb | 2 +- spec/rubycas-server-core/tickets_spec.rb | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/lib/rubycas-server-core/tickets.rb b/lib/rubycas-server-core/tickets.rb index b113aab..da97aa6 100644 --- a/lib/rubycas-server-core/tickets.rb +++ b/lib/rubycas-server-core/tickets.rb @@ -40,7 +40,7 @@ def self.generate_ticket_granting_ticket(username, client, extra_attributes = {} end end - def generate_service_ticket(service, username, tgt, client) + def self.generate_service_ticket(service, username, tgt, client) st = ServiceTicket.new st.ticket = "ST-" + Util.random_string st.service = service diff --git a/spec/rubycas-server-core/tickets_spec.rb b/spec/rubycas-server-core/tickets_spec.rb index 1364222..1e1e293 100644 --- a/spec/rubycas-server-core/tickets_spec.rb +++ b/spec/rubycas-server-core/tickets_spec.rb @@ -4,6 +4,7 @@ module RubyCAS::Server::Core describe RubyCAS::Server::Core::Tickets do let(:client_hostname) { 'myhost.test' } let(:username) { 'myuser' } + let(:service) { 'https://myservice.test' } before do RubyCAS::Server::Core.setup("spec/config/config.yml") @@ -62,35 +63,29 @@ module RubyCAS::Server::Core end end - describe "#generate_service_ticket(service, username, tgt)" do - before do - @username = 'testuser' - @client_hostname = "myhost.test" - @service = 'myservice.test' - @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) - @st = @cas.generate_service_ticket(@service, @username, @tgt, @client_hostname) - end + describe ".generate_service_ticket(service, username, tgt)" do + let(:tgt) { Tickets.generate_ticket_granting_ticket(username, client_hostname) } + let(:st) { Tickets.generate_service_ticket(service, username, tgt, client_hostname) } it "should return a ServiceTicket" do - @st.class.should == Tickets::ServiceTicket + st.class.should == Tickets::ServiceTicket end it "should not include the service identifer in the ticket string" do - @st.ticket.should_not match /#{@service}/ + st.ticket.should_not match /#{service}/ end it "should not mark the ST as consumed" do - @st.consumed.should be_nil + st.consumed.should be_nil end it "must generate a ticket that starts with 'ST-'" do - @st.ticket.should match /^ST-/ + st.ticket.should match /^ST-/ end it "should assoicate the ST with the supplied TGT" do - @st.ticket_granting_ticket.id.should == @tgt.id + st.ticket_granting_ticket.id.should == tgt.id end - end describe "#generate_proxy_ticket(target_service, pgt)" do From 8a06335b0dbef6338aee8faaaa3267f866155f6c Mon Sep 17 00:00:00 2001 From: Tyler Pickett Date: Mon, 29 Apr 2013 09:50:05 -0500 Subject: [PATCH 5/6] move unimplemented proxy ticket generation to a module method Signed-off-by: Tyler Pickett --- lib/rubycas-server-core/tickets.rb | 5 ++--- spec/rubycas-server-core/tickets_spec.rb | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/rubycas-server-core/tickets.rb b/lib/rubycas-server-core/tickets.rb index da97aa6..34708d6 100644 --- a/lib/rubycas-server-core/tickets.rb +++ b/lib/rubycas-server-core/tickets.rb @@ -56,14 +56,13 @@ def self.generate_service_ticket(service, username, tgt, client) end end - def generate_proxy_ticket(target_service, pgt, client) + def self.generate_proxy_ticket(target_service, pgt, client) raise NotImplementedError end - def generate_proxy_granting_ticket(pgt_url, st, client) + def self.generate_proxy_granting_ticket(pgt_url, st, client) raise NotImplementedError end - end end end diff --git a/spec/rubycas-server-core/tickets_spec.rb b/spec/rubycas-server-core/tickets_spec.rb index 1e1e293..e798d9b 100644 --- a/spec/rubycas-server-core/tickets_spec.rb +++ b/spec/rubycas-server-core/tickets_spec.rb @@ -88,8 +88,7 @@ module RubyCAS::Server::Core end end - describe "#generate_proxy_ticket(target_service, pgt)" do - + describe ".generate_proxy_ticket(target_service, pgt)" do it "should return a ProxyGrantingTicket" do pending("Proxy ticket is not implemented yet") end From 25a38def368f078e11c018db57295f3ebc028caf Mon Sep 17 00:00:00 2001 From: Robert Mitwicki Date: Wed, 1 May 2013 13:40:59 +0200 Subject: [PATCH 6/6] Use module method in validations spec for ticket generation --- spec/rubycas-server-core/tickets/validations_spec.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/spec/rubycas-server-core/tickets/validations_spec.rb b/spec/rubycas-server-core/tickets/validations_spec.rb index bfa5ea1..3833dbc 100644 --- a/spec/rubycas-server-core/tickets/validations_spec.rb +++ b/spec/rubycas-server-core/tickets/validations_spec.rb @@ -9,11 +9,12 @@ } @cas = klass.new @client_hostname = "myhost.test" + Tickets = RubyCAS::Server::Core::Tickets end describe "validate login ticket" do it "should validate login ticket" do - @lt = @cas.generate_login_ticket(@client_hostname) + @lt = Tickets.generate_login_ticket(@client_hostname) success, error = @cas.validate_login_ticket(@lt.ticket) success.should be_true error.should be_nil @@ -24,7 +25,7 @@ before do @username = 'myuser' @client_hostname = "myhost.test" - @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) + @tgt = Tickets.generate_ticket_granting_ticket(@username, @client_hostname) end it "should validate ticket granting ticket" do @@ -39,8 +40,8 @@ @username = 'testuser' @client_hostname = "myhost.test" @service = 'myservice.test' - @tgt = @cas.generate_ticket_granting_ticket(@username, @client_hostname) - @st = @cas.generate_service_ticket(@service, @username, @tgt, @client_hostname) + @tgt = Tickets.generate_ticket_granting_ticket(@username, @client_hostname) + @st = Tickets.generate_service_ticket(@service, @username, @tgt, @client_hostname) end it "should validate service ticket" do