deveo-ruby-ldapserver 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,113 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ require 'ldap/server/schema'
3
+ require 'ldap/server/match'
4
+
5
+ class SchemaTest < Test::Unit::TestCase
6
+
7
+ def test_parse_attr
8
+ attr = <<ATTR
9
+ ( 2.5.4.3 NAME 'cn' OBSOLETE EQUALITY 1.2.3 ORDERING 4.5.678 SUBSTR 9.1.1 SYNTAX 4.3.2{58} SINGLE-VALUE COLLECTIVE NO-USER-MODIFICATION USAGE userApplications )
10
+ ATTR
11
+ a = LDAP::Server::Schema::AttributeType.new(attr)
12
+ assert_equal("2.5.4.3", a.oid)
13
+ assert_equal("cn", a.name)
14
+ assert_equal(["cn"], a.names)
15
+ assert(a.obsolete)
16
+ assert_equal("1.2.3", a.equality)
17
+ assert_equal("4.5.678", a.ordering)
18
+ assert_equal("9.1.1", a.substr)
19
+ assert_equal("4.3.2", a.syntax)
20
+ assert_equal(58, a.maxlen)
21
+ assert(a.singlevalue)
22
+ assert(a.collective)
23
+ assert(a.nousermod)
24
+ assert_equal(:userApplications, a.usage)
25
+ assert_equal(attr.chomp, a.to_def)
26
+
27
+ attr = <<ATTR
28
+ ( 2.5.4.3 NAME ( 'cn' 'commonName' ) DESC 'RFC2256: common name(s) for which the entity is known by' SUP name )
29
+ ATTR
30
+ a = LDAP::Server::Schema::AttributeType.new(attr)
31
+ assert_equal("2.5.4.3", a.oid)
32
+ assert_equal("cn", a.name)
33
+ assert_equal(["cn", "commonName"], a.names)
34
+ assert_equal("RFC2256: common name(s) for which the entity is known by", a.desc)
35
+ assert(! a.obsolete)
36
+ assert_equal("name", a.sup)
37
+ assert(! a.singlevalue)
38
+ assert(! a.collective)
39
+ assert(! a.nousermod)
40
+ assert_equal(attr.chomp, a.to_def)
41
+ end
42
+
43
+ def test_parse_objectclass
44
+ oc = <<OC
45
+ ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject' DESC 'RFC1274: simple security object' SUP top AUXILIARY MUST userPassword )
46
+ OC
47
+ a = LDAP::Server::Schema::ObjectClass.new(oc)
48
+ assert_equal("0.9.2342.19200300.100.4.19", a.oid)
49
+ assert_equal("simpleSecurityObject", a.name)
50
+ assert_equal(["simpleSecurityObject"], a.names)
51
+ assert(! a.obsolete)
52
+ assert_equal("RFC1274: simple security object", a.desc)
53
+ assert_equal(["top"], a.sup)
54
+ assert_equal(:auxiliary, a.struct)
55
+ assert_equal(["userPassword"], a.must)
56
+ assert_equal([], a.may)
57
+ assert_equal(oc.chomp, a.to_def)
58
+
59
+ oc = <<OC
60
+ ( 2.5.6.6 NAME 'person' DESC 'RFC2256: a person' SUP top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
61
+ OC
62
+ a = LDAP::Server::Schema::ObjectClass.new(oc)
63
+ assert_equal("2.5.6.6", a.oid)
64
+ assert_equal("person", a.name)
65
+ assert_equal(["person"], a.names)
66
+ assert(! a.obsolete)
67
+ assert_equal("RFC2256: a person", a.desc)
68
+ assert_equal(["top"], a.sup)
69
+ assert_equal(:structural, a.struct)
70
+ assert_equal(["sn", "cn"], a.must)
71
+ assert_equal(["userPassword","telephoneNumber","seeAlso","description"], a.may)
72
+ assert_equal(oc.chomp, a.to_def)
73
+ end
74
+
75
+ def test_loadschema
76
+ s = LDAP::Server::Schema.new
77
+ s.load_system
78
+ s.load_file(File.dirname(__FILE__) + "/core.schema")
79
+ s.resolve_oids
80
+ a = s.find_attrtype("objectclass")
81
+ assert_equal("objectClass", a.name)
82
+ a = s.find_attrtype("COMMONNAME")
83
+ assert_equal(LDAP::Server::Schema::AttributeType, a.class)
84
+ assert_equal("caseIgnoreMatch", a.equality.to_s)
85
+ assert_equal(LDAP::Server::MatchingRule, a.equality.class)
86
+ assert_equal("caseIgnoreSubstringsMatch", a.substr.to_s)
87
+ assert_equal(LDAP::Server::MatchingRule, a.substr.class)
88
+ assert_equal("1.3.6.1.4.1.1466.115.121.1.15", a.syntax.to_s)
89
+ assert_equal(LDAP::Server::Syntax, a.syntax.class)
90
+ assert_equal("cn", a.name)
91
+ a = s.find_attrtype("COUNTRYname")
92
+ assert_equal("c", a.name)
93
+ # I modified core.schema so that countryName has the appropriate syntax
94
+ assert(a.syntax.match("GB"))
95
+ assert(!a.syntax.match("ABC"))
96
+ end
97
+
98
+ def test_backwards_api
99
+ s = LDAP::Server::Schema.new
100
+ s.load_system
101
+ assert_equal(['subschema','OpenLDAProotDSE','referral','alias','extensibleObject','top'].sort,
102
+ s.names('objectClasses').sort)
103
+ assert_equal(['dITStructureRules','nameForms','ditContentRules','objectClasses','attributeTypes','matchingRules','matchingRuleUse'],
104
+ s.attr('subschema', 'may'))
105
+ assert_equal([], s.attr('subschema', 'must'))
106
+ assert_equal(nil, s.attr('foo', 'must'))
107
+ assert_equal(['top'], s.sup('extensibleObject'))
108
+ end
109
+
110
+ def test_validate
111
+ # FIXME
112
+ end
113
+ end
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ require 'ldap/server/syntax'
3
+
4
+ class SyntaxTest < Test::Unit::TestCase
5
+
6
+ def test_integer
7
+ s = LDAP::Server::Syntax.find("1.3.6.1.4.1.1466.115.121.1.27")
8
+ assert_equal(LDAP::Server::Syntax, s.class)
9
+ assert_equal("Integer", s.desc)
10
+ assert_equal("( 1.3.6.1.4.1.1466.115.121.1.27 DESC 'Integer' )", s.to_def)
11
+ assert(!s.nhr)
12
+ assert(s.match("123"))
13
+ assert(!s.match("12A"))
14
+ assert_equal(123, s.value_from_s("123"))
15
+ assert_equal("456", s.value_to_s(456))
16
+ assert_equal("789", s.value_to_s("789"))
17
+ end
18
+
19
+ def test_unknown
20
+ s = LDAP::Server::Syntax.find("1.4.7.1")
21
+ assert_equal(LDAP::Server::Syntax, s.class)
22
+ assert_equal("1.4.7.1", s.oid)
23
+ assert_equal("1.4.7.1", s.to_s)
24
+ assert_equal("( 1.4.7.1 )", s.to_def)
25
+ assert_equal("false", s.value_to_s(false)) # generic value_to_s
26
+ assert_equal("true", s.value_from_s("true")) # generic value_from_s
27
+ assert(s.match("123")) # match anything
28
+ end
29
+
30
+ def test_nil
31
+ s = LDAP::Server::Syntax.find(nil)
32
+ assert_equal(nil, s)
33
+ end
34
+
35
+ def test_from_def
36
+ s = LDAP::Server::Syntax.from_def("( 1.2.3 DESC 'foobar' )")
37
+ assert_equal("1.2.3", s.oid)
38
+ assert_equal("foobar", s.desc)
39
+ end
40
+ end
@@ -0,0 +1,2 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'test/unit'
@@ -0,0 +1,47 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ require 'ldap/server/util'
3
+
4
+ class TestLdapUtil < Test::Unit::TestCase
5
+ def test_split_dn
6
+ # examples from RFC 2253
7
+ assert_equal(
8
+ [{"cn"=>"Steve Kille"},{"o"=>"Isode Limited"},{"c"=>"GB"}],
9
+ LDAP::Server::Operation.split_dn("CN=Steve Kille , O=Isode Limited;C=GB")
10
+ )
11
+ assert_equal(
12
+ [{"ou"=>"Sales","cn"=>"J. Smith"},{"o"=>"Widget Inc."},{"c"=>"US"}],
13
+ LDAP::Server::Operation.split_dn("OU=Sales+CN=J. Smith,O=Widget Inc.,C=US")
14
+ )
15
+ assert_equal(
16
+ [{"cn"=>"L. Eagle"},{"o"=>"Sue, Grabbit and Runn"},{"c"=>"GB"}],
17
+ LDAP::Server::Operation.split_dn("CN=L. Eagle,O=Sue\\, Grabbit and Runn,C=GB")
18
+ )
19
+ assert_equal(
20
+ [{"cn"=>"Before\rAfter"},{"o"=>"Test"},{"c"=>"GB"}],
21
+ LDAP::Server::Operation.split_dn("CN=Before\\0DAfter,O=Test,C=GB")
22
+ )
23
+ res = LDAP::Server::Operation.split_dn("SN=Lu\\C4\\8Di\\C4\\87")
24
+ assert_equal([{"sn"=>"Lu\xc4\x8di\xc4\x87"}], res)
25
+ end
26
+
27
+ def test_join_dn
28
+ # examples from RFC 2253
29
+ assert_equal(
30
+ "cn=Steve Kille,o=Isode Limited,c=GB",
31
+ LDAP::Server::Operation.join_dn([{"cn"=>"Steve Kille"},{"o"=>"Isode Limited"},{"c"=>"GB"}])
32
+ )
33
+ # These are equivalent
34
+ d1 = "ou=Sales+cn=J. Smith,o=Widget Inc.,c=US"
35
+ d2 = "cn=J. Smith+ou=Sales,o=Widget Inc.,c=US"
36
+ assert_equal(d1,
37
+ LDAP::Server::Operation.join_dn([[["ou","Sales"],["cn","J. Smith"]],[["o","Widget Inc."]],["c","US"]])
38
+ )
39
+ r = LDAP::Server::Operation.join_dn([{"ou"=>"Sales","cn"=>"J. Smith"},{"o"=>"Widget Inc."},{"c"=>"US"}])
40
+ assert(r == d1 || r == d2, "got #{r.inspect}, expected #{d1.inspect} or #{d2.inspect}")
41
+ assert_equal(
42
+ "cn=L. Eagle,o=Sue\\, Grabbit and Runn,c=GB",
43
+ LDAP::Server::Operation.join_dn([{"cn"=>"L. Eagle"},{"o"=>"Sue, Grabbit and Runn"},{"c"=>"GB"}])
44
+ )
45
+ end
46
+ end
47
+
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: deveo-ruby-ldapserver
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.2
5
+ platform: ruby
6
+ authors:
7
+ - Brian Candler
8
+ - Juha-Pekka Laiho
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-09-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.3'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '10.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '10.0'
42
+ description: ruby-ldapserver is a lightweight, pure-Ruby skeleton for implementing
43
+ LDAP server applications.
44
+ email: "<jp@deveo.com"
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".gitignore"
50
+ - COPYING
51
+ - ChangeLog
52
+ - Gemfile
53
+ - README
54
+ - Rakefile
55
+ - examples/README
56
+ - examples/mkcert.rb
57
+ - examples/rbslapd1.rb
58
+ - examples/rbslapd2.rb
59
+ - examples/rbslapd2.sql
60
+ - examples/rbslapd3.rb
61
+ - examples/speedtest.rb
62
+ - lib/ldap/server.rb
63
+ - lib/ldap/server/connection.rb
64
+ - lib/ldap/server/filter.rb
65
+ - lib/ldap/server/match.rb
66
+ - lib/ldap/server/operation.rb
67
+ - lib/ldap/server/preforkserver.rb
68
+ - lib/ldap/server/result.rb
69
+ - lib/ldap/server/schema.rb
70
+ - lib/ldap/server/server.rb
71
+ - lib/ldap/server/syntax.rb
72
+ - lib/ldap/server/tcpserver.rb
73
+ - lib/ldap/server/util.rb
74
+ - lib/ldap/server/version.rb
75
+ - ruby-ldapserver.gemspec
76
+ - test/core.schema
77
+ - test/encoding_test.rb
78
+ - test/filter_test.rb
79
+ - test/match_test.rb
80
+ - test/schema_test.rb
81
+ - test/syntax_test.rb
82
+ - test/test_helper.rb
83
+ - test/util_test.rb
84
+ homepage: https://github.com/Deveo/ruby-ldapserver
85
+ licenses: []
86
+ metadata: {}
87
+ post_install_message:
88
+ rdoc_options:
89
+ - "--main"
90
+ - README.txt
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ requirements: []
104
+ rubyforge_project:
105
+ rubygems_version: 2.2.2
106
+ signing_key:
107
+ specification_version: 4
108
+ summary: A pure-Ruby framework for building LDAP servers
109
+ test_files:
110
+ - test/core.schema
111
+ - test/encoding_test.rb
112
+ - test/filter_test.rb
113
+ - test/match_test.rb
114
+ - test/schema_test.rb
115
+ - test/syntax_test.rb
116
+ - test/test_helper.rb
117
+ - test/util_test.rb