pil 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ require 'forwardable'
2
+ require 'pil/pil'
3
+ require 'pil/password_list'
@@ -0,0 +1,35 @@
1
+ class Pil::PasswordList
2
+ extend Forwardable
3
+
4
+ attr_reader :passwords
5
+
6
+ DEFAULT_PASSWORD_FILE = File.expand_path('../../data/passwords.txt', __FILE__)
7
+
8
+ # ------------------------------ Instance Methods ------------------------------
9
+
10
+ def_delegator :@passwords, :count, :count
11
+
12
+ def initialize(datafile = DEFAULT_PASSWORD_FILE)
13
+ @datafile = datafile
14
+ @passwords = []
15
+
16
+ load_passwords
17
+ end
18
+
19
+ def include?(password)
20
+ @passwords.include?(password)
21
+ end
22
+
23
+ def exclude?(password)
24
+ !include?(password)
25
+ end
26
+
27
+ private
28
+
29
+ def load_passwords
30
+ return [] if @datafile.nil?
31
+
32
+ file = File.open(@datafile)
33
+ file.each_line { |line| @passwords << line.chop }
34
+ end
35
+ end
@@ -0,0 +1,23 @@
1
+ class Pil
2
+ extend Forwardable
3
+
4
+ def initialize
5
+ @password_list = PasswordList.new
6
+ end
7
+
8
+ # ------------------------------ Class Methods ------------------------------
9
+
10
+ def self.include?(password)
11
+ Pil.new.include?(password)
12
+ end
13
+
14
+ def self.exclude?(password)
15
+ !self.include?(password)
16
+ end
17
+
18
+ # ------------------------------ Instance Methods ------------------------------
19
+
20
+ def_delegator :@password_list, :include?, :include?
21
+ def_delegator :@password_list, :exclude?, :exclude?
22
+ end
23
+
@@ -0,0 +1,19 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+
16
+ require 'pil'
17
+
18
+ class Test::Unit::TestCase
19
+ end
@@ -0,0 +1,29 @@
1
+ require 'helper'
2
+
3
+ class PasswordListTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @in_list = 'peachy'
7
+ @not_in_list = 'notinlist'
8
+ @instance = Pil::PasswordList.new
9
+ end
10
+
11
+ def test_passwords
12
+ assert_instance_of(Array, @instance.passwords)
13
+ end
14
+
15
+ def test_include?
16
+ assert_equal( true, @instance.include?(@in_list) )
17
+ assert_equal( false, @instance.include?(@not_in_list) )
18
+ end
19
+
20
+ def test_exclude?
21
+ assert_equal( false, @instance.exclude?(@in_list) )
22
+ assert_equal( true, @instance.exclude?(@not_in_list) )
23
+ end
24
+
25
+ def test_count
26
+ assert_equal( 10000, @instance.count )
27
+ end
28
+
29
+ end
@@ -0,0 +1,31 @@
1
+ require 'helper'
2
+
3
+ class PilTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @in_list = 'peachy'
7
+ @not_in_list = 'notinlist'
8
+ @instance = Pil.new
9
+ end
10
+
11
+ def test_self_include?
12
+ assert_equal( true, Pil.include?(@in_list) )
13
+ assert_equal( false, Pil.include?(@not_in_list) )
14
+ end
15
+
16
+ def test_self_exlude?
17
+ assert_equal( false, Pil.exclude?(@in_list) )
18
+ assert_equal( true, Pil.exclude?(@not_in_list) )
19
+ end
20
+
21
+ def test_include?
22
+ assert_equal( true, @instance.include?(@in_list) )
23
+ assert_equal( false, @instance.include?(@not_in_list) )
24
+ end
25
+
26
+ def text_exclude?
27
+ assert_equal( false, @instance.exclude?(@in_list) )
28
+ assert_equal( true, @instance.exclude?(@not_in_list) )
29
+ end
30
+
31
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pil
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chris Cummer
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: shoulda
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rdoc
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '3.12'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.12'
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: jeweler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.8.4
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.8.4
78
+ - !ruby/object:Gem::Dependency
79
+ name: simplecov
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Checks a given plaintext password against an inclusion list of common
95
+ passwords. Returns TRUE if the user's password is in the list; FALSE if it isn't.
96
+ email: chriscummer@me.com
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files:
100
+ - LICENSE.txt
101
+ - README.md
102
+ files:
103
+ - .document
104
+ - Gemfile
105
+ - Gemfile.lock
106
+ - LICENSE.txt
107
+ - README.md
108
+ - Rakefile
109
+ - VERSION
110
+ - lib/data/passwords.txt
111
+ - lib/pil.rb
112
+ - lib/pil/password_list.rb
113
+ - lib/pil/pil.rb
114
+ - test/helper.rb
115
+ - test/test_password_list.rb
116
+ - test/test_pil.rb
117
+ homepage: http://github.com/senorprogrammer/pil
118
+ licenses:
119
+ - MIT
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ segments:
131
+ - 0
132
+ hash: -1597464662707451309
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ requirements: []
140
+ rubyforge_project:
141
+ rubygems_version: 1.8.24
142
+ signing_key:
143
+ specification_version: 3
144
+ summary: The Password Inclusion List
145
+ test_files: []