Skip to content

Commit 5e85348

Browse files
committed
Bundler etc
1 parent 432d0be commit 5e85348

9 files changed

+869
-1
lines changed

Gemfile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
source 'https://rubygems.org'
2+
gemspec
3+
4+
group :development do
5+
gem 'smart_proxy', :github => 'theforeman/smart-proxy', :branch => 'develop'
6+
end

Gemfile.lock

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
GIT
2+
remote: git://github.com/theforeman/smart-proxy.git
3+
revision: 0e0050af9ee0a57fc8e5ebc4199188fe7aeb0e7a
4+
branch: develop
5+
specs:
6+
smart_proxy (1.16.0.develop)
7+
json
8+
rack (>= 1.1)
9+
sinatra
10+
11+
PATH
12+
remote: .
13+
specs:
14+
smart_proxy_realm_ad_plugin (0.1)
15+
16+
GEM
17+
remote: https://rubygems.org/
18+
specs:
19+
json (2.1.0)
20+
metaclass (0.0.4)
21+
mocha (1.2.1)
22+
metaclass (~> 0.0.1)
23+
mustermann (1.0.0)
24+
power_assert (1.0.2)
25+
rack (2.0.3)
26+
rack-protection (2.0.0)
27+
rack
28+
rake (12.0.0)
29+
rake-compiler (1.0.4)
30+
rake
31+
rkerberos (0.1.5)
32+
rake-compiler
33+
sinatra (2.0.0)
34+
mustermann (~> 1.0)
35+
rack (~> 2.0)
36+
rack-protection (= 2.0.0)
37+
tilt (~> 2.0)
38+
test-unit (3.2.5)
39+
power_assert
40+
tilt (2.0.8)
41+
42+
PLATFORMS
43+
ruby
44+
45+
DEPENDENCIES
46+
mocha
47+
rake
48+
rkerberos
49+
smart_proxy!
50+
smart_proxy_realm_ad_plugin!
51+
test-unit
52+
53+
BUNDLED WITH
54+
1.13.6

LICENSE

+675
Large diffs are not rendered by default.

README.md

+27
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,33 @@ To enable this realm provider, edit `/etc/foreman-proxy/settings.d/realm.yml` an
1212

1313
:use_provider: realm_ad
1414

15+
## Testing
16+
17+
bundle exec rake test
18+
19+
## Install dependencies
20+
21+
### rkerberos
22+
```
23+
sudo gem install rkerberos
24+
```
25+
26+
### radcli
27+
28+
#### radcli prereqs (ubuntu)
29+
```
30+
sudo apt-get install ruby gem ruby-dev
31+
sudo gem install rake bundler rakecompiler rspec
32+
sudo apt-get install automake autoconf xmlto xsltproc libkrb5-dev libldap2-dev libsasl2-dev
33+
```
34+
35+
```
36+
git clone https://github.com/martencassel/radcli
37+
cd radcli
38+
rake build
39+
gem install pkg/radcli-0.0.1.gem
40+
```
41+
1542
## Contributing
1643

1744
Fork and send a Pull Request. Thanks!

Rakefile

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
require 'rake'
3+
require 'rake/testtask'
4+
5+
desc 'Default: run unit tests.'
6+
task :default => :test
7+
8+
desc 'Test the Foreman Proxy plugin.'
9+
Rake::TestTask.new(:test) do |t|
10+
t.libs << '.'
11+
t.libs << 'lib'
12+
t.libs << 'test'
13+
t.test_files = FileList['test/**/*_test.rb']
14+
t.verbose = true
15+
end

bundler.d/realm_ad_plugin.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
gem 'smart_proxy_realm_ad_plugin'
1+
gem 'smart_proxy_realm_ad_plugin'
2+
gem 'rkerberos'

smart_proxy_realm_ad_plugin.gemspec

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
require File.expand_path('../lib/smart_proxy_realm_ad/version', __FILE__)
2+
require 'date'
3+
4+
Gem::Specification.new do |s|
5+
s.name = 'smart_proxy_realm_ad_plugin'
6+
s.version = Proxy::AdRealm::VERSION
7+
s.date = Date.today.to_s
8+
s.license = 'GPL-3.0'
9+
s.authors = ['Mårten Cassel']
10+
s.email = ['marten.cassel@gmail.com']
11+
s.homepage = 'https://github.com/martencassel/smart_proxy_realm_ad_plugin'
12+
13+
s.summary = "A realm ad provider plugin for Foreman's smart proxy"
14+
s.description = "A realm ad provider plugin for Foreman's smart proxy"
15+
16+
s.files = Dir['{config,lib,bundler.d}/**/*'] + ['README.md', 'LICENSE']
17+
s.test_files = Dir['test/**/*']
18+
19+
s.add_development_dependency('rake')
20+
s.add_development_dependency('mocha')
21+
s.add_development_dependency('test-unit')
22+
s.add_development_dependency('rkerberos')
23+
s.add_development_dependency('radcli')
24+
end

test/ad_provider_test.rb

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
require 'test_helper'
2+
require 'smart_proxy_realm_ad/provider'
3+
4+
class RealmAdTest < Test::Unit::TestCase
5+
def setup
6+
@realm = 'test_realm'
7+
@provider = Proxy::AdRealm::Provider.new('test_realm', 'keytab_path', 'principal', 'domain-controller')
8+
end
9+
10+
def test_create_host
11+
hostname = 'hostname'
12+
password = 'a_password'
13+
params = {}
14+
params[:rebuild] = "false"
15+
@provider.expects(:check_realm).with(@realm)
16+
@provider.expects(:kinit_radcli_connect)
17+
@provider.expects(:generate_password).returns(password)
18+
@provider.expects(:radcli_join)
19+
@provider.create(@realm, hostname, params)
20+
end
21+
22+
def test_create_with_unrecognized_realm_raises_exception
23+
assert_raises(Exception) { @provider.create('unknown_realm', 'a_host', {})}
24+
end
25+
26+
def test_create_rebuild
27+
hostname = 'hostname'
28+
password = 'a_password'
29+
params = {}
30+
params[:rebuild] = "true"
31+
@provider.expects(:check_realm).with(@realm)
32+
@provider.expects(:kinit_radcli_connect)
33+
@provider.expects(:generate_password).returns(password)
34+
@provider.expects(:radcli_password)
35+
@provider.create(@realm, hostname, params)
36+
end
37+
38+
def test_rebuild_with_unrecognized_realm_raises_exception
39+
params = {}
40+
params[:rebuild] = "true"
41+
assert_raises(Exception) { @provider.create('unknown_realm', 'a_host', params) }
42+
end
43+
44+
def test_find
45+
assert_true @provider.find('a_host_fqdn')
46+
end
47+
48+
def test_delete
49+
@provider.expects(:check_realm).with(@realm)
50+
@provider.expects(:kinit_radcli_connect)
51+
@provider.expects(:radcli_delete)
52+
@provider.delete(@realm, 'a_host')
53+
end
54+
55+
def test_delete_unrecognized_realm_raises_exception
56+
@provider.expects(:kinit_radcli_connect)
57+
assert_raises(Exception) { @provider.delete('unkown_realm', 'a_host') }
58+
end
59+
end

test/test_helper.rb

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require 'test/unit'
2+
require 'mocha/setup'
3+
4+
require 'smart_proxy_for_testing'
5+
6+
# create log directory in our (not smart-proxy) directory
7+
FileUtils.mkdir_p File.dirname(Proxy::SETTINGS.log_file)

0 commit comments

Comments
 (0)