cmis-ruby 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/spec/helper.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'cmis-ruby'
2
+ require 'json'
3
+
4
+ META = CMIS::Server.new.repository('meta')
5
+
6
+ def create_repository(id)
7
+ delete_repository(id)
8
+
9
+ repo_type = META.type('repository')
10
+ property_definitions = repo_type.property_definitions.keys
11
+
12
+ f = repo_type.new_object
13
+ f.name = id
14
+ f.properties[:id] = id
15
+ f.properties[:supportsRelationships] = true if property_definitions.include?('supportsRelationships')
16
+ f.properties[:supportsPolicies] = true if property_definitions.include?('supportsPolicies')
17
+ f.properties[:supportsItems] = true if property_definitions.include?('supportsItems')
18
+ f.properties[:realtime] = true if property_definitions.include?('realtime')
19
+ META.root.create(f)
20
+
21
+ CMIS::Server.new.repository(id)
22
+ end
23
+
24
+ def delete_repository(id)
25
+ META.object(id).delete
26
+ rescue CMIS::CMISRequestError => ex
27
+ end
@@ -0,0 +1,100 @@
1
+ require_relative './helper'
2
+
3
+ describe CMIS::Object do
4
+
5
+ before :all do
6
+ @repo = create_repository('test')
7
+ end
8
+
9
+ after :all do
10
+ delete_repository('test')
11
+ end
12
+
13
+ it 'repository' do
14
+ doc = create_document
15
+ doc.repository.should be_a_kind_of CMIS::Repository
16
+ doc.repository.id.should eq 'test'
17
+ doc.delete
18
+ end
19
+
20
+ it 'object_type' do
21
+ doc = create_document
22
+ doc.object_type.should be_a_kind_of CMIS::Type
23
+ doc.object_type.id.should eq 'cmis:document'
24
+ doc.delete
25
+ end
26
+
27
+ it 'delete' do
28
+ doc = create_document
29
+ doc.delete
30
+ # TODO check
31
+ end
32
+
33
+ it 'allowable actions' do
34
+ doc = create_document
35
+ actions = doc.allowable_actions
36
+ actions.should_not be_nil
37
+ actions.should_not be_empty
38
+ actions.values.each { |v| [true, false].should include v }
39
+ doc.delete
40
+ end
41
+
42
+ it 'relationships' do
43
+ doc = create_document
44
+ rels = doc.relationships
45
+ rels.should_not be_nil
46
+ rels.each do |r|
47
+ r.should be_a_kind_of CMIS::Relationship
48
+ end
49
+ doc.delete
50
+ end
51
+
52
+ it 'policies' do
53
+ doc = create_document
54
+ pols = doc.policies
55
+ pols.should_not be_nil
56
+ pols.each do |p|
57
+ p.should be_a_kind_of CMIS::Policy
58
+ end
59
+ doc.delete
60
+ end
61
+
62
+ it 'unfile' do
63
+ doc = create_document
64
+ doc.unfile
65
+ # TODO check
66
+ doc.delete
67
+ end
68
+
69
+ it 'acls' do
70
+ doc = create_document
71
+ acls = doc.acls
72
+ acls.should_not be_nil
73
+ acls.should_not be_empty
74
+ acls.should have_key :aces
75
+ acls.should have_key :isExact
76
+ [true, false].should include acls[:isExact]
77
+ doc.delete
78
+ end
79
+
80
+ # it 'add aces' do
81
+ # doc = create_document
82
+ # doc.add_aces({})
83
+ # #TODO check
84
+ # doc.delete
85
+ # end
86
+
87
+ # it 'remove aces' do
88
+ # doc = create_document
89
+ # doc.remove_aces({})
90
+ # #TODO check
91
+ # doc.delete
92
+ # end
93
+
94
+ def create_document
95
+ new_object = @repo.new_document
96
+ new_object.name = 'doc'
97
+ new_object.object_type_id = 'cmis:document'
98
+ @repo.root.create(new_object)
99
+ end
100
+ end
@@ -0,0 +1,19 @@
1
+ require_relative './helper'
2
+
3
+ describe CMIS::Relationship do
4
+
5
+ before :all do
6
+ @dummy = CMIS::Server.new.repository('meta')
7
+ end
8
+
9
+ it 'should make properties accessible through method' do
10
+ new_object = CMIS::Relationship.new({ succinctProperties: { myProp: 'myValue' } }, @dummy)
11
+ new_object.properties['myProp'].should eq 'myValue'
12
+ end
13
+
14
+ it 'should raise methodmissing for unknown property' do
15
+ new_object = CMIS::Relationship.new({ succinctProperties: { 'myProp' => 'myValue' } }, @dummy)
16
+ expect { new_object.myOtherProp }.to raise_error(NoMethodError, /undefined method `myOtherProp'/)
17
+ end
18
+
19
+ end
@@ -0,0 +1,150 @@
1
+ require_relative './helper'
2
+
3
+ describe CMIS::Repository do
4
+
5
+ context 'generic' do
6
+
7
+ before do
8
+ @id = 'meta'
9
+ @repo = CMIS::Server.new.repository(@id)
10
+ end
11
+
12
+ it 'id' do
13
+ @repo.id.should.eql? @id
14
+ end
15
+
16
+ it 'fields' do
17
+ @repo.id.should_not be_nil
18
+ @repo.name.should_not be_nil
19
+ @repo.product_version.should_not be_nil
20
+ @repo.description.should_not be_nil
21
+ @repo.root_folder_id.should_not be_nil
22
+ @repo.capabilities.should_not be_nil
23
+ @repo.url.should_not be_nil
24
+ @repo.changes_on_type.should_not be_nil
25
+ @repo.root_folder_url.should_not be_nil
26
+ @repo.product_name.should_not be_nil
27
+ @repo.product_version.should_not be_nil
28
+
29
+ %w(1.0 1.1).should include @repo.cmis_version_supported
30
+ end
31
+
32
+ it 'new object' do
33
+ @repo.new_folder.should be_a_kind_of CMIS::Folder
34
+ @repo.new_document.should be_a_kind_of CMIS::Document
35
+ @repo.new_relationship.should be_a_kind_of CMIS::Relationship
36
+ @repo.new_policy.should be_a_kind_of CMIS::Policy
37
+ @repo.new_item.should be_a_kind_of CMIS::Item
38
+ end
39
+
40
+ it 'repositories' do
41
+ CMIS::Server.new.repositories
42
+ end
43
+
44
+ it 'repository' do
45
+ r = CMIS::Server.new.repository('generali')
46
+ r.name.should eq 'generali'
47
+ end
48
+
49
+ it 'root' do
50
+ root = @repo.root
51
+ root.should be_a_kind_of CMIS::Folder
52
+ root.cmis_object_id.should eq @repo.root_folder_id
53
+ end
54
+
55
+ it 'object' do
56
+ id = @repo.root_folder_id
57
+ object = @repo.object(id)
58
+ object.should be_a_kind_of CMIS::Folder
59
+ object.cmis_object_id.should eq id
60
+ end
61
+
62
+ it 'type - document' do
63
+ document = @repo.type('cmis:document')
64
+ document.should be_a_kind_of CMIS::Type
65
+ document.id.should eq 'cmis:document'
66
+ end
67
+
68
+ it 'type - folder' do
69
+ folder = @repo.type('cmis:folder')
70
+ folder.should be_a_kind_of CMIS::Type
71
+ folder.id.should eq 'cmis:folder'
72
+ end
73
+ end
74
+
75
+ context 'upn' do
76
+
77
+ before :all do
78
+ @repo = create_repository('testrepository')
79
+ end
80
+
81
+ after :all do
82
+ delete_repository('testrepository')
83
+ end
84
+
85
+ it 'type - relationship' do
86
+ relationship = @repo.type('cmis:relationship')
87
+ relationship.should be_a_kind_of CMIS::Type
88
+ relationship.id.should eq 'cmis:relationship'
89
+ end
90
+
91
+ it 'type - policy' do
92
+ policy = @repo.type('cmis:policy')
93
+ policy.should be_a_kind_of CMIS::Type
94
+ policy.id.should eq 'cmis:policy'
95
+ end
96
+
97
+ it 'type - item' do
98
+ begin
99
+ item = @repo.type('cmis:item')
100
+ item.should be_a_kind_of CMIS::Type
101
+ item.id.should eq 'cmis:item'
102
+ end unless @repo.cmis_version_supported < '1.1'
103
+ end
104
+
105
+ it 'create, get, delete type - document' do
106
+ type_id = 'apple'
107
+
108
+ type = CMIS::Type.new
109
+ type.id = type_id
110
+ type.local_name = 'apple'
111
+ type.query_name = 'apple'
112
+ type.display_name = 'apple'
113
+ type.parent_id = 'cmis:document'
114
+ type.base_id = 'cmis:document'
115
+ type.description = 'appel'
116
+ type.creatable = true
117
+ type.fileable = true
118
+ type.queryable = true
119
+ type.controllable_policy = true
120
+ type.controllable_acl = true
121
+ type.fulltext_indexed = true
122
+ type.included_in_supertype_query = true
123
+ type.content_stream_allowed = 'allowed'
124
+ type.versionable = false
125
+
126
+ type.add_property_definition(id: 'color',
127
+ localName: 'color',
128
+ queryName: 'color',
129
+ displayName: 'color',
130
+ description: 'color',
131
+ propertyType: 'string',
132
+ cardinality: 'single',
133
+ updatability: 'readwrite',
134
+ inherited: false,
135
+ required: false,
136
+ queryable: true,
137
+ orderable: true)
138
+
139
+ @repo.create_type(type)
140
+
141
+ @repo.type(type_id).tap do |t|
142
+ t.should be_a_kind_of CMIS::Type
143
+ t.id.should eq type_id
144
+ end
145
+
146
+ @repo.type(type_id).delete
147
+ end
148
+
149
+ end
150
+ end
@@ -0,0 +1,22 @@
1
+ require_relative './helper'
2
+
3
+ describe CMIS::Server do
4
+
5
+ before :all do
6
+ @server = CMIS::Server.new
7
+ end
8
+
9
+ it 'repositories' do
10
+ @server.repositories.each do |repo|
11
+ repo.should be_a_kind_of CMIS::Repository
12
+ end
13
+ end
14
+
15
+ it 'repository' do
16
+ id = 'meta'
17
+ repo = @server.repository(id)
18
+ repo.should be_a_kind_of CMIS::Repository
19
+ repo.id.should eq id
20
+ end
21
+
22
+ end
data/spec/type_spec.rb ADDED
@@ -0,0 +1,69 @@
1
+ require_relative './helper'
2
+
3
+ describe CMIS::Type do
4
+
5
+ before :all do
6
+ @repo = create_repository('test')
7
+ end
8
+
9
+ after :all do
10
+ delete_repository('test')
11
+ end
12
+
13
+ it 'shoud update types' do
14
+ type = CMIS::Type.new
15
+ type.id = 'apple'
16
+ type.local_name = 'apple'
17
+ type.query_name = 'apple'
18
+ type.display_name = 'Apple'
19
+ type.parent_id = 'cmis:document'
20
+ type.base_id = 'cmis:document'
21
+ type.description = 'The apple fruit.'
22
+ type.creatable = true
23
+ type.fileable = true
24
+ type.queryable = true
25
+ type.controllable_policy = true
26
+ type.controllable_acl = true
27
+ type.fulltext_indexed = true
28
+ type.included_in_supertype_query = true
29
+ type.content_stream_allowed = 'allowed'
30
+ type.versionable = false
31
+
32
+ type.add_property_definition(
33
+ id: 'color',
34
+ localName: 'color',
35
+ queryName: 'color',
36
+ displayName: 'Color',
37
+ description: 'The color.',
38
+ propertyType: 'string',
39
+ cardinality: 'single',
40
+ updatability: 'readwrite',
41
+ inherited: false,
42
+ required: false,
43
+ queryable: true,
44
+ orderable: true
45
+ )
46
+
47
+ full_type = @repo.create_type(type)
48
+
49
+ new_prop = CMIS::PropertyDefinition.new(
50
+ id: 'taste',
51
+ localName: 'taste',
52
+ queryName: 'taste',
53
+ displayName: 'Taste',
54
+ description: 'The taste.',
55
+ propertyType: 'string',
56
+ cardinality: 'single',
57
+ updatability: 'readwrite',
58
+ inherited: false,
59
+ required: false,
60
+ queryable: true,
61
+ orderable: true
62
+ )
63
+
64
+ full_type.update([new_prop])
65
+
66
+ full_type.delete
67
+ end
68
+
69
+ end
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cmis-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.2'
5
+ platform: ruby
6
+ authors:
7
+ - Kenneth Geerts
8
+ - Michael Brackx
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: typhoeus
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '0.6'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '0.6'
28
+ - !ruby/object:Gem::Dependency
29
+ name: multipart-post
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.1'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.1'
42
+ - !ruby/object:Gem::Dependency
43
+ name: multi_json
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.5'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.5'
56
+ - !ruby/object:Gem::Dependency
57
+ name: activesupport
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '3.2'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '3.2'
70
+ description: |
71
+ CMIS browser binding client library in ruby.
72
+ email:
73
+ - gem@up-nxt.com
74
+ executables: []
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - ".gitignore"
79
+ - Gemfile
80
+ - LICENSE
81
+ - Rakefile
82
+ - cmis-ruby.gemspec
83
+ - lib/cmis-ruby.rb
84
+ - lib/cmis/children.rb
85
+ - lib/cmis/connection.rb
86
+ - lib/cmis/document.rb
87
+ - lib/cmis/folder.rb
88
+ - lib/cmis/helpers.rb
89
+ - lib/cmis/item.rb
90
+ - lib/cmis/object.rb
91
+ - lib/cmis/object_factory.rb
92
+ - lib/cmis/policy.rb
93
+ - lib/cmis/property_definition.rb
94
+ - lib/cmis/query.rb
95
+ - lib/cmis/query_result.rb
96
+ - lib/cmis/relationship.rb
97
+ - lib/cmis/repository.rb
98
+ - lib/cmis/server.rb
99
+ - lib/cmis/type.rb
100
+ - lib/cmis/version.rb
101
+ - readme.md
102
+ - spec/document_spec.rb
103
+ - spec/folder_spec.rb
104
+ - spec/helper.rb
105
+ - spec/object_spec.rb
106
+ - spec/relationship_spec.rb
107
+ - spec/repository_spec.rb
108
+ - spec/server_spec.rb
109
+ - spec/type_spec.rb
110
+ homepage: https://github.com/UP-nxt
111
+ licenses: []
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.2.1
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Ruby client for CMIS
133
+ test_files:
134
+ - spec/document_spec.rb
135
+ - spec/folder_spec.rb
136
+ - spec/helper.rb
137
+ - spec/object_spec.rb
138
+ - spec/relationship_spec.rb
139
+ - spec/repository_spec.rb
140
+ - spec/server_spec.rb
141
+ - spec/type_spec.rb