rubycas-server-activerecord 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ef0616d8ecd08c4ef9bda30c78c7d7cbf642919a
4
+ data.tar.gz: 640fe2aecf21bf96c7cadfff3b94448b8b941d6d
5
+ SHA512:
6
+ metadata.gz: c86faa58db661b782c2da2a4d6a1d4e7d7be82f70ee0bee1021ea86db97ad7335ce14142246a2986e33d6351bca4f604cc5b495585db1eeede2cf7c11a54bf25
7
+ data.tar.gz: 44d84572bab3b64791c46d0a4192d082e62a3a51ee7f38821a145dfc5d86bb7c6ffad54a9310d61570e9cbe6d13e0b94b6685d4961fb88be5c4f27c5e1ebe79f
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.3"
4
+ script:
5
+ - RAILS_ENV=test bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rubycas-server-activerecord.gemspec
4
+ gemspec
5
+
6
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Filippos Vasilakis
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # Rubycas::Server::Activerecord
2
+ [![Build Status](https://travis-ci.org/kollegorna/rubycas-server-activerecord.png?branch=master)](https://travis-ci.org/kollegorna/rubycas-server-activerecord)
3
+ [![Code Climate](https://codeclimate.com/github/kollegorna/rubycas-server-activerecord)](https://codeclimate.com/github/kollegorna/rubycas-server-activerecord)
4
+ [![Coverage Status](https://coveralls.io/repos/kollegorna/rubycas-server-activerecord/badge.png)](https://coveralls.io/r/kollegorna/rubycas-server-activerecord)
5
+
6
+ ActiveRecord adapter for RubyCAS Server Core (RubyCAS2.0)
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ gem 'rubycas-server-activerecord'
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install rubycas-server-activerecord
21
+
22
+ ## Tests
23
+
24
+ To run the tests execute:
25
+ rspec spec
26
+
27
+ ## Contributing
28
+
29
+ 1. Fork it
30
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
31
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
32
+ 4. Push to the branch (`git push origin my-new-feature`)
33
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require "active_record"
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ desc 'Run specs'
8
+ task :default => :spec
9
+
10
+
@@ -0,0 +1,11 @@
1
+ class CreateLoginTickets < ActiveRecord::Migration
2
+ def change
3
+ create_table :login_tickets do |t|
4
+ t.string :ticket
5
+ t.datetime :consumed
6
+ t.string :client_hostname
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ class CreateProxyGrantingTickets < ActiveRecord::Migration
2
+ def change
3
+ create_table :proxy_granting_tickets do |t|
4
+ t.string :ticket
5
+ t.string :client_hostname
6
+ t.string :iou
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ class CreateServiceTickets < ActiveRecord::Migration
2
+ def change
3
+ create_table :service_tickets do |t|
4
+ t.string :ticket
5
+ t.text :service
6
+ t.datetime :consumed
7
+ t.string :username
8
+ t.string :client_hostname
9
+
10
+ t.belongs_to :ticket_granting_ticket
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ class CreateTicketGrantingTickets < ActiveRecord::Migration
2
+ def change
3
+ create_table :ticket_granting_tickets do |t|
4
+ t.string :ticket
5
+ t.string :client_hostname
6
+ t.string :username
7
+ t.boolean :remember_me, default: false
8
+ t.text :extra_attributes #ONLY postgresql supports JSON
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module RubyCAS::Server::Core::Tickets
2
+ module CleanUp
3
+ def self.cleanup(max_lifetime)
4
+ transaction do
5
+ conditions = ["created_at < ?", Time.now - max_lifetime]
6
+ expired_tickets_count = count(:conditions => conditions)
7
+
8
+ $LOG.debug("Destroying #{expired_tickets_count} expired #{self.name.demodulize}"+
9
+ "#{'s' if expired_tickets_count > 1}.") if expired_tickets_count > 0
10
+
11
+ destroy_all(conditions)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ # NOT USED YET
2
+ module RubyCAS::Server::Core
3
+ module Consumable
4
+ def consume!
5
+ self.consumed = Time.now
6
+ self.save!
7
+ end
8
+
9
+ def self.included(mod)
10
+ mod.extend(ClassMethods)
11
+ end
12
+
13
+ module ClassMethods
14
+ def cleanup(max_lifetime, max_unconsumed_lifetime)
15
+ transaction do
16
+ conditions = ["created_on < ? OR (consumed IS NULL AND created_on < ?)",
17
+ Time.now - max_lifetime,
18
+ Time.now - max_unconsumed_lifetime]
19
+
20
+ expired_tickets_count = count(:conditions => conditions)
21
+
22
+ $LOG.debug("Destroying #{expired_tickets_count} expired #{self.name.demodulize}"+
23
+ "#{'s' if expired_tickets_count > 1}.") if expired_tickets_count > 0
24
+
25
+ destroy_all(conditions)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ require 'rubycas/server/activerecord/model/ticket'
2
+ require 'rubycas/server/activerecord/model/consumable'
3
+
4
+ module RubyCAS::Server::Core::Tickets
5
+ class LoginTicket < ActiveRecord::Base
6
+ include RubyCAS::Server::Core::Ticket
7
+ #include RubyCAS::Server::Core::Consumable
8
+
9
+
10
+ validates :ticket, :client_hostname, presence: true
11
+
12
+ def expired?(max_lifetime)
13
+ lifetime = Time.now.to_i - created_at.to_time.to_i
14
+ lifetime > max_lifetime
15
+ end
16
+ def consumed?
17
+ consumed
18
+ end
19
+
20
+ def consume!
21
+ consumed = true
22
+ self.save
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,11 @@
1
+ require 'rubycas/server/activerecord/model/ticket'
2
+ require 'rubycas/server/activerecord/model/consumable'
3
+
4
+ module RubyCAS::Server::Core::Tickets
5
+ class ProxyGrantingTicket < ActiveRecord::Base
6
+ belongs_to :service_ticket
7
+ has_many :proxy_tickets
8
+
9
+ validates :ticket, :client_hostname, :iou, presence: true
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ require 'rubycas/server/activerecord/model/ticket'
2
+ require 'rubycas/server/activerecord/model/consumable'
3
+
4
+ module RubyCAS::Server::Core::Tickets
5
+ class ProxyTicket < ActiveRecord::Base
6
+ belongs_to :proxy_granting_ticket
7
+
8
+ end
9
+ end
@@ -0,0 +1,27 @@
1
+ require 'rubycas/server/activerecord/model/ticket'
2
+ #require 'rubycas/server/activerecord/model/consumable'
3
+
4
+ module RubyCAS::Server::Core::Tickets
5
+ class ServiceTicket < ActiveRecord::Base
6
+ include RubyCAS::Server::Core::Ticket
7
+ #include RubyCAS::Server::Core::Consumable
8
+
9
+ has_one :proxy_granting_ticket
10
+ belongs_to :ticket_granting_ticket
11
+
12
+ validates :ticket, :service, :ticket_granting_ticket_id, presence: true
13
+
14
+ def expired?(max_lifetime)
15
+ lifetime = Time.now.to_i - created_at.to_time.to_i
16
+ lifetime > max_lifetime
17
+ end
18
+ def consumed?
19
+ consumed
20
+ end
21
+
22
+ def consume!
23
+ consumed = true
24
+ self.save
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,7 @@
1
+ module RubyCAS::Server::Core
2
+ module Ticket
3
+ def to_s
4
+ ticket
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,49 @@
1
+ require 'rubycas/server/activerecord/model/ticket'
2
+ #require 'rubycas/server/activerecord/model/consumable'
3
+
4
+ module RubyCAS::Server::Core::Tickets
5
+ class TicketGrantingTicket < ActiveRecord::Base
6
+ include RubyCAS::Server::Core::Ticket
7
+ #include RubyCAS::Server::Core::Consumable
8
+ has_many :service_tickets, dependent: :destroy
9
+
10
+ validates :ticket, :username, :client_hostname, presence: true
11
+ #validates :remember_me, :inclusion => {:in => [true, false]}
12
+
13
+ #before_create :default_remember_me
14
+ before_validation :default_remember_me
15
+
16
+ def expired?(max_lifetime)
17
+ lifetime = Time.now.to_i - created_at.to_time.to_i
18
+ lifetime > max_lifetime
19
+ end
20
+ def consumed?
21
+ consumed
22
+ end
23
+
24
+ def consume!
25
+ consumed = true
26
+ self.save
27
+ end
28
+
29
+ def self.cleanup(max_lifetime)
30
+ transaction do
31
+ conditions = ["created_at < ?", Time.now - max_lifetime]
32
+ expired_tickets_count = count(:conditions => conditions)
33
+
34
+ $LOG.debug("Destroying #{expired_tickets_count} expired #{self.name.demodulize}"+
35
+ "#{'s' if expired_tickets_count > 1}.") if expired_tickets_count > 0
36
+
37
+ destroy_all(conditions)
38
+ end
39
+ end
40
+
41
+ protected
42
+ def default_remember_me
43
+ self.remember_me = false
44
+ #If your callback function returns false, then rails won't save the object
45
+ #as it cancels all callbacks !!
46
+ return true
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubycas/server/activerecord/model/login_ticket'
2
+ require 'rubycas/server/activerecord/model/proxy_granting_ticket'
3
+ require 'rubycas/server/activerecord/model/proxy_ticket'
4
+ require 'rubycas/server/activerecord/model/service_ticket'
5
+ require 'rubycas/server/activerecord/model/ticket_granting_ticket'
6
+
7
+
8
+ module RubyCAS::Server::Core::Database
9
+
10
+ end
@@ -0,0 +1,7 @@
1
+ module RubyCAS
2
+ module Server
3
+ module Core
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ require "active_record"
2
+ require "rubycas/server/activerecord/model"
3
+ require "rubycas/server/activerecord/version"
4
+
5
+ module RubyCAS::Server::Core::Database
6
+ extend self
7
+ def setup(config_file)
8
+ return true
9
+ end
10
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rubycas/server/activerecord/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rubycas-server-activerecord"
8
+ spec.version = RubyCAS::Server::Core::VERSION
9
+ spec.authors = ["Filippos Vasilakis"]
10
+ spec.email = ["vasilakisfil@gmail.com"]
11
+ spec.description = %q{Activerecord adapter for RubyCAS Server}
12
+ spec.summary = spec.description
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "activerecord"
22
+
23
+ spec.add_development_dependency "bundler"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "sqlite3"
27
+ end
@@ -0,0 +1,168 @@
1
+ require "spec_helper"
2
+
3
+ include RubyCAS::Server::Core::Tickets
4
+
5
+ describe RubyCAS::Server::Core::Tickets do
6
+
7
+ before(:all) do
8
+ ActiveRecord::Base.establish_connection(
9
+ adapter: "sqlite3",
10
+ database: ":memory:"
11
+ )
12
+ ActiveRecord::Migrator.migrate('db/migrate')
13
+ end
14
+
15
+ describe LoginTicket do
16
+ before do
17
+ @login_ticket = LoginTicket.new(
18
+ ticket: "Example Ticket",
19
+ consumed: Time.at(rand * Time.now.to_i),
20
+ client_hostname: "Example Client",
21
+ )
22
+ end
23
+
24
+ it "responds to properties" do
25
+ expect(@login_ticket).to respond_to(:ticket)
26
+ expect(@login_ticket).to respond_to(:consumed)
27
+ expect(@login_ticket).to respond_to(:client_hostname)
28
+ expect(@login_ticket).to respond_to(:consume!)
29
+
30
+ expect(@login_ticket).to be_valid
31
+ end
32
+
33
+ it "is invalid whithout ticket" do
34
+ @login_ticket.ticket = " "
35
+ expect(@login_ticket).not_to be_valid
36
+ end
37
+
38
+ it "is invalid without client_hostname" do
39
+ @login_ticket.client_hostname = " "
40
+ expect(@login_ticket).not_to be_valid
41
+ end
42
+ end
43
+
44
+ describe ProxyGrantingTicket do
45
+ before do
46
+ @proxy_granting_ticket = ProxyGrantingTicket.new(
47
+ ticket: "Example Ticket",
48
+ client_hostname: "Example Client",
49
+ iou: "Example IOU"
50
+ )
51
+ end
52
+
53
+ it "responds to properties" do
54
+ expect(@proxy_granting_ticket).to respond_to(:ticket)
55
+ expect(@proxy_granting_ticket).to respond_to(:client_hostname)
56
+ expect(@proxy_granting_ticket).to respond_to(:iou)
57
+
58
+ expect(@proxy_granting_ticket).to be_valid
59
+ end
60
+
61
+ it "is invalid without ticket" do
62
+ @proxy_granting_ticket.ticket = " "
63
+ expect(@proxy_granting_ticket).not_to be_valid
64
+ end
65
+
66
+ it "is invalid without client_hostname" do
67
+ @proxy_granting_ticket.client_hostname = " "
68
+ expect(@proxy_granting_ticket).not_to be_valid
69
+ end
70
+
71
+ it "is invalid without iou" do
72
+ @proxy_granting_ticket.iou = " "
73
+ expect(@proxy_granting_ticket).not_to be_valid
74
+ end
75
+ end
76
+
77
+
78
+ describe TicketGrantingTicket do
79
+ before do
80
+ @ticket_granting_ticket = TicketGrantingTicket.new(
81
+ ticket: "Example Ticket",
82
+ client_hostname: "Example Client",
83
+ username: "Example Username",
84
+ )
85
+ end
86
+
87
+ it "responds to properties" do
88
+ expect(@ticket_granting_ticket).to respond_to(:ticket)
89
+ expect(@ticket_granting_ticket).to respond_to(:client_hostname)
90
+ expect(@ticket_granting_ticket).to respond_to(:username)
91
+ expect(@ticket_granting_ticket).to respond_to(:remember_me)
92
+
93
+ expect(@ticket_granting_ticket).to be_valid
94
+ end
95
+
96
+ it "is invalid without ticket" do
97
+ @ticket_granting_ticket.ticket = " "
98
+ expect(@ticket_granting_ticket).not_to be_valid
99
+ end
100
+
101
+ it "is invalid without client_hostname" do
102
+ @ticket_granting_ticket.client_hostname = " "
103
+ expect(@ticket_granting_ticket).not_to be_valid
104
+ end
105
+
106
+ it "is invalid without username" do
107
+ @ticket_granting_ticket.username = " "
108
+ expect(@ticket_granting_ticket).not_to be_valid
109
+ end
110
+
111
+ it "is valid without remember_me" do
112
+ expect(@ticket_granting_ticket).to be_valid
113
+ end
114
+
115
+ it "remember_me gets the default value false" do
116
+ @ticket_granting_ticket = TicketGrantingTicket.new(
117
+ ticket: "Example Ticket",
118
+ client_hostname: "Example Client",
119
+ username: "Example Username",
120
+ )
121
+ @ticket_granting_ticket.save!
122
+ expect(@ticket_granting_ticket.remember_me).to be_false
123
+ end
124
+ end
125
+
126
+ describe ServiceTicket do
127
+ before do
128
+ @ticket_granting_ticket = TicketGrantingTicket.new(
129
+ ticket: "Example Ticket",
130
+ client_hostname: "Example Client",
131
+ username: "Example Username",
132
+ )
133
+ @ticket_granting_ticket.save!
134
+
135
+ @service_ticket = @ticket_granting_ticket.service_tickets.build(
136
+ ticket: "Example Ticket",
137
+ service: "Example Service",
138
+ consumed: Time.at(rand * Time.now.to_i)
139
+ )
140
+ end
141
+
142
+ subject {@service_ticket}
143
+ its(:ticket_granting_ticket) { should eq(@ticket_granting_ticket) }
144
+
145
+ it "responds to properties" do
146
+ expect(@service_ticket).to respond_to(:ticket)
147
+ expect(@service_ticket).to respond_to(:service)
148
+ expect(@service_ticket).to respond_to(:consumed)
149
+ expect(@service_ticket).to respond_to(:ticket_granting_ticket_id)
150
+ end
151
+
152
+ it "is invalid without :ticket" do
153
+ @service_ticket.ticket = nil
154
+ expect(@service_ticket).not_to be_valid
155
+ end
156
+
157
+ it "is invalid without :service" do
158
+ @service_ticket.service = nil
159
+ expect(@service_ticket).not_to be_valid
160
+ end
161
+
162
+ it "is invalid without foreign key" do
163
+ @service_ticket.ticket_granting_ticket_id = nil
164
+ expect(@service_ticket).not_to be_valid
165
+ end
166
+ end
167
+
168
+ end
@@ -0,0 +1,15 @@
1
+ require "rubycas/server/activerecord"
2
+ require "rubycas/server/activerecord/model/login_ticket"
3
+ require 'rspec'
4
+
5
+ RSpec.configure do |config|
6
+ config.treat_symbols_as_metadata_keys_with_true_values = true
7
+ config.run_all_when_everything_filtered = true
8
+ config.filter_run :focus
9
+
10
+ # Run specs in random order to surface order dependencies. If you find an
11
+ # order dependency and want to debug it, you can fix the order by providing
12
+ # the seed, which is printed after each run.
13
+ # --seed 1234
14
+ # config.order = 'random'
15
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubycas-server-activerecord
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Filippos Vasilakis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
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
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Activerecord adapter for RubyCAS Server
84
+ email:
85
+ - vasilakisfil@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - Gemfile
94
+ - LICENSE.txt
95
+ - README.md
96
+ - Rakefile
97
+ - db/migrate/001_create_login_tickets.rb
98
+ - db/migrate/002_create_proxy_granting_tickets.rb
99
+ - db/migrate/003_create_service_tickets.rb
100
+ - db/migrate/005_create_ticket_granting_tickets.rb
101
+ - lib/rubycas/server/activerecord.rb
102
+ - lib/rubycas/server/activerecord/model.rb
103
+ - lib/rubycas/server/activerecord/model/clean_up.rb
104
+ - lib/rubycas/server/activerecord/model/consumable.rb
105
+ - lib/rubycas/server/activerecord/model/login_ticket.rb
106
+ - lib/rubycas/server/activerecord/model/proxy_granting_ticket.rb
107
+ - lib/rubycas/server/activerecord/model/proxy_ticket.rb
108
+ - lib/rubycas/server/activerecord/model/service_ticket.rb
109
+ - lib/rubycas/server/activerecord/model/ticket.rb
110
+ - lib/rubycas/server/activerecord/model/ticket_granting_ticket.rb
111
+ - lib/rubycas/server/activerecord/version.rb
112
+ - rubycas-server-activerecord.gemspec
113
+ - spec/rubycas-server-activerecord_spec.rb
114
+ - spec/spec_helper.rb
115
+ homepage: ''
116
+ licenses:
117
+ - MIT
118
+ metadata: {}
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubyforge_project:
135
+ rubygems_version: 2.2.2
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: Activerecord adapter for RubyCAS Server
139
+ test_files:
140
+ - spec/rubycas-server-activerecord_spec.rb
141
+ - spec/spec_helper.rb