summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorrautenberg <rautenberg@in-silico.ch>2012-03-22 12:23:09 +0100
committerrautenberg <rautenberg@in-silico.ch>2012-03-22 12:23:09 +0100
commit3bf0e33c86cd4cd460412c01eed9a37afacad4d5 (patch)
treecfea007af3a8ae883117ed2beeb4ed4bdf34920c /test
parentb9249a71bc4fd6323f2ec879018f497027a4545a (diff)
add policy-lib mods from feature/policy and add policy tests
Diffstat (limited to 'test')
-rw-r--r--test/policy.rb120
1 files changed, 120 insertions, 0 deletions
diff --git a/test/policy.rb b/test/policy.rb
new file mode 100644
index 0000000..eb7e2b6
--- /dev/null
+++ b/test/policy.rb
@@ -0,0 +1,120 @@
+require 'test/unit'
+$LOAD_PATH << File.join(File.dirname(__FILE__),'..','lib')
+require File.expand_path(File.join(File.dirname(__FILE__),'..','lib','opentox-client.rb'))
+
+TEST_URI = "http://only_a_test/test/" + rand(1000000).to_s
+USER_TYPE = "LDAPUsers"
+USER_VALUE = "uid=guest,ou=people,dc=opentox,dc=org"
+USER_GROUP = "member"
+GROUP_TYPE = "LDAPGroups"
+GROUP_VALUE = "cn=member,ou=groups,dc=opentox,dc=org"
+POLICY_NAME = "test_policy_#{rand(100000)}"
+RULE_NAME = "test_rule_#{rand(100000)}"
+SUBJECT_NAME = "test_subject_#{rand(100000)}"
+
+AA ||= "https://opensso.in-silico.ch"
+AA_USER = "guest"
+AA_PASS = "guest"
+
+@@subjectid = OpenTox::Authorization.authenticate(AA_USER,AA_PASS)
+
+class PolicyTest < Test::Unit::TestCase
+
+ def test_01_class
+ policies = OpenTox::Policies.new()
+ assert_equal(policies.class, OpenTox::Policies)
+ assert_kind_of Array, policies.names
+ assert_kind_of Array, policies.uris
+ assert_kind_of Array, policies.names
+ end
+
+ def test_02_subclasses
+ policies = OpenTox::Policies.new()
+ policies.new_policy(POLICY_NAME)
+ assert_equal(policies.names[0], POLICY_NAME)
+ assert_equal(policies.policies[policies.names[0]].class, OpenTox::Policy)
+ policy = policies.policies[policies.names[0]]
+ policy.rule.name = RULE_NAME
+ policy.uri = TEST_URI
+ assert_equal(policy.rule.class, OpenTox::Policy::Rule)
+ assert_equal(policy.rule.name, RULE_NAME)
+ assert_equal(policy.rule.uri, TEST_URI)
+ assert_equal(policy.uri, TEST_URI)
+ policy.subject.name = SUBJECT_NAME
+ policy.type = USER_TYPE
+ policy.value = USER_VALUE
+ assert_equal(policy.subject.class, OpenTox::Policy::Subject)
+ assert_equal(policy.subject.name, SUBJECT_NAME)
+ assert_equal(policy.subject.type, USER_TYPE)
+ assert_equal(policy.type, USER_TYPE)
+ assert_equal(policy.subject.value, USER_VALUE)
+ assert_equal(policy.value, USER_VALUE)
+ end
+
+ def test_03_read_readwrite
+ policies = OpenTox::Policies.new()
+ policies.new_policy(POLICY_NAME)
+ policy = policies.policies[policies.names[0]]
+ policy.rule.name = RULE_NAME
+ policy.uri = TEST_URI
+ policy.rule.get = "allow"
+ assert policy.rule.read
+ assert !policy.rule.readwrite
+ policy.rule.post = "allow"
+ policy.rule.put = "allow"
+ assert !policy.rule.read
+ assert policy.rule.readwrite
+ end
+
+ def test_04_group_user
+ policies = OpenTox::Policies.new()
+ policies.load_default_policy(AA_USER, TEST_URI, "member")
+ assert_equal "member", policies.policies["policy_group"].group
+ assert_equal AA_USER, policies.policies["policy_user"].user
+ end
+
+ def test_05_DN
+ policies = OpenTox::Policies.new()
+ policies.new_policy(POLICY_NAME)
+ policy = policies.policies[policies.names[0]]
+ policy.set_ot_user(AA_USER)
+ assert_equal USER_VALUE, policy.value
+ assert_equal USER_TYPE, policy.type
+ policy.set_ot_group(USER_GROUP)
+ assert_equal GROUP_VALUE, policy.value
+ assert_equal GROUP_TYPE, policy.type
+ end
+
+ def test_06_load_xml_and_check_defaults
+ policies = OpenTox::Policies.new()
+ xml = File.read(File.join(File.dirname(__FILE__), "../lib/templates/default_policy.xml"))
+ policies.load_xml(xml)
+ # check user policy
+ policy = policies.policies["policy_user"]
+ assert policy.name == "policy_user"
+ assert policy.rule.name == "rule_user"
+ assert policy.rule.uri == "uri"
+ assert policy.rule.get == "allow"
+ assert policy.rule.post == "allow"
+ assert policy.rule.delete == "allow"
+ assert policy.rule.put == "allow"
+ assert policy.subject_group == "subjects_user"
+ assert policy.subject.name == "subject_user"
+ assert policy.subject.type == USER_TYPE
+ assert policy.subject.value == USER_VALUE
+ # check group policy
+ policy = policies.policies["policy_group"]
+ assert policy.name == "policy_group"
+ assert policy.rule.name == "rule_group"
+ assert policy.rule.uri == "uri"
+ assert policy.rule.get == "allow"
+ assert !policy.rule.post
+ assert !policy.rule.delete
+ assert !policy.rule.put
+ assert policy.subject_group == "subjects_group"
+ assert policy.subject.name == "subject_group"
+ assert policy.subject.type == GROUP_TYPE
+ assert policy.subject.value == GROUP_VALUE
+ end
+
+end \ No newline at end of file