cmis-ruby 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +6 -0
- data/Gemfile +4 -2
- data/Rakefile +1 -1
- data/cmis-ruby.gemspec +17 -15
- data/lib/cmis/children.rb +1 -1
- data/lib/cmis/connection.rb +5 -6
- data/lib/cmis/document.rb +7 -4
- data/lib/cmis/folder.rb +14 -18
- data/lib/cmis/helpers.rb +8 -5
- data/lib/cmis/repository.rb +3 -3
- data/lib/cmis/server.rb +1 -2
- data/lib/cmis/version.rb +1 -1
- data/readme.md +9 -6
- data/spec/cmis-ruby/document_spec.rb +58 -0
- data/spec/cmis-ruby/folder_spec.rb +66 -0
- data/spec/cmis-ruby/object_spec.rb +75 -0
- data/spec/cmis-ruby/relationship_spec.rb +7 -0
- data/spec/cmis-ruby/repository_spec.rb +143 -0
- data/spec/cmis-ruby/server_spec.rb +39 -0
- data/spec/config.yml +17 -0
- data/spec/rspec.opts +2 -0
- data/spec/spec_helper.rb +35 -0
- metadata +22 -19
- data/spec/document_spec.rb +0 -47
- data/spec/folder_spec.rb +0 -77
- data/spec/helper.rb +0 -26
- data/spec/object_spec.rb +0 -100
- data/spec/relationship_spec.rb +0 -19
- data/spec/repository_spec.rb +0 -150
- data/spec/server_spec.rb +0 -22
- data/spec/type_spec.rb +0 -69
@@ -0,0 +1,143 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module CMIS
|
4
|
+
PRIMARY_BASE_TYPES = %w( cmis:document
|
5
|
+
cmis:folder
|
6
|
+
cmis:relationship
|
7
|
+
cmis:policy
|
8
|
+
cmis:item )
|
9
|
+
|
10
|
+
describe Repository do
|
11
|
+
it 'is supported by the library' do
|
12
|
+
expect(repository.cmis_version_supported).to eq('1.1')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'has the correct id' do
|
16
|
+
expect(repository.id).to eq(repository_id)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'has non null fields' do
|
20
|
+
expect(repository.id) .to_not be_nil
|
21
|
+
expect(repository.name) .to_not be_nil
|
22
|
+
expect(repository.product_version) .to_not be_nil
|
23
|
+
expect(repository.description) .to_not be_nil
|
24
|
+
expect(repository.root_folder_id) .to_not be_nil
|
25
|
+
expect(repository.capabilities) .to_not be_nil
|
26
|
+
expect(repository.url) .to_not be_nil
|
27
|
+
expect(repository.changes_on_type) .to_not be_nil
|
28
|
+
expect(repository.root_folder_url) .to_not be_nil
|
29
|
+
expect(repository.product_name) .to_not be_nil
|
30
|
+
expect(repository.product_version) .to_not be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'has a root folder' do
|
34
|
+
root = repository.root
|
35
|
+
expect(root).to be_a(CMIS::Folder)
|
36
|
+
|
37
|
+
expect(root.cmis_object_id).to eq(repository.root_folder_id)
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#object' do
|
41
|
+
it 'returns the object' do
|
42
|
+
id = repository.root_folder_id
|
43
|
+
object = repository.object(id)
|
44
|
+
expect(object).to be_a(CMIS::Folder)
|
45
|
+
expect(object.cmis_object_id).to eq(id)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#new_[document|folder|relationship|item|policy|type]' do
|
50
|
+
it 'returns the correct type' do
|
51
|
+
expect(repository.new_document) .to be_a Document
|
52
|
+
expect(repository.new_folder) .to be_a Folder
|
53
|
+
expect(repository.new_relationship) .to be_a Relationship
|
54
|
+
expect(repository.new_item) .to be_a Item
|
55
|
+
expect(repository.new_policy) .to be_a Policy
|
56
|
+
expect(repository.new_type) .to be_a Type
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'type related method' do
|
61
|
+
before :all do
|
62
|
+
create_apple_type
|
63
|
+
end
|
64
|
+
|
65
|
+
after :all do
|
66
|
+
repository.type('apple').delete
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '#type' do
|
70
|
+
it 'returns the type for primitive types' do
|
71
|
+
PRIMARY_BASE_TYPES.each do |t|
|
72
|
+
type = repository.type(t)
|
73
|
+
expect(type).to be_a(CMIS::Type)
|
74
|
+
expect(type.id).to eq(t)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#type?' do
|
80
|
+
it 'returns true for a present type' do
|
81
|
+
expect(repository.type?('apple')).to be_true
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'returns false for an absent type' do
|
85
|
+
expect(repository.type?('banana')).to be_false
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#types' do
|
90
|
+
it 'includes a present type' do
|
91
|
+
type_array = repository.types.map(&:id)
|
92
|
+
expect(type_array).to include('apple')
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'does not include an absent type' do
|
96
|
+
type_array = repository.types.map(&:id)
|
97
|
+
expect(type_array).to_not include('banana')
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '#type' do
|
102
|
+
it 'returns the type' do
|
103
|
+
apple = repository.type('apple')
|
104
|
+
expect(apple).to be_a CMIS::Type
|
105
|
+
expect(apple.id).to eq('apple')
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def create_apple_type
|
110
|
+
type = repository.new_type
|
111
|
+
type.id = 'apple'
|
112
|
+
type.local_name = 'apple'
|
113
|
+
type.query_name = 'apple'
|
114
|
+
type.display_name = 'apple'
|
115
|
+
type.parent_id = 'cmis:document'
|
116
|
+
type.base_id = 'cmis:document'
|
117
|
+
type.description = 'appel'
|
118
|
+
type.creatable = true
|
119
|
+
type.fileable = true
|
120
|
+
type.queryable = true
|
121
|
+
type.controllable_policy = true
|
122
|
+
type.controllable_acl = true
|
123
|
+
type.fulltext_indexed = true
|
124
|
+
type.included_in_supertype_query = true
|
125
|
+
type.content_stream_allowed = 'allowed'
|
126
|
+
type.versionable = false
|
127
|
+
type.add_property_definition(id: 'color',
|
128
|
+
localName: 'color',
|
129
|
+
queryName: 'color',
|
130
|
+
displayName: 'color',
|
131
|
+
description: 'color',
|
132
|
+
propertyType: 'string',
|
133
|
+
cardinality: 'single',
|
134
|
+
updatability: 'readwrite',
|
135
|
+
inherited: false,
|
136
|
+
required: false,
|
137
|
+
queryable: true,
|
138
|
+
orderable: true)
|
139
|
+
type.create
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module CMIS
|
4
|
+
describe Server do
|
5
|
+
describe '#repositories' do
|
6
|
+
it 'are all Repositories' do
|
7
|
+
server.repositories.each do |r|
|
8
|
+
expect(r).to be_a Repository
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'contains the test repository' do
|
13
|
+
repo_array = server.repositories.map(&:id)
|
14
|
+
expect(repo_array).to include(repository_id)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#repository' do
|
19
|
+
it 'is a Repository' do
|
20
|
+
expect(repository).to be_a Repository
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'has the correct id' do
|
24
|
+
expect(repository.id).to eq(repository_id)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#repository?' do
|
29
|
+
it 'returns true for a present repository' do
|
30
|
+
expect(server.repository?(repository_id)).to be_true
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'returns false for an absent repository' do
|
34
|
+
absent_repository_id = SecureRandom.uuid
|
35
|
+
expect(server.repository?(absent_repository_id)).to be_false
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/config.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
local:
|
3
|
+
server:
|
4
|
+
service_url: http://33.33.33.100:8080/browser
|
5
|
+
repository: test
|
6
|
+
nuxeo:
|
7
|
+
server:
|
8
|
+
service_url: http://cmis.demo.nuxeo.com/nuxeo/json/cmis
|
9
|
+
username: Administrator
|
10
|
+
password: Administrator
|
11
|
+
repository: default
|
12
|
+
alfresco:
|
13
|
+
server:
|
14
|
+
service_url: http://cmis.alfresco.com/cmisbrowser
|
15
|
+
username: admin
|
16
|
+
password: admin
|
17
|
+
repository: bb212ecb-122d-47ea-b5c1-128affb9cd8f
|
data/spec/rspec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'cmis-ruby'
|
2
|
+
|
3
|
+
module SpecHelpers
|
4
|
+
|
5
|
+
def server
|
6
|
+
@server ||= CMIS::Server.new(options['server'])
|
7
|
+
end
|
8
|
+
|
9
|
+
def repository
|
10
|
+
@repository ||= server.repository(options['repository'])
|
11
|
+
end
|
12
|
+
|
13
|
+
def repository_id
|
14
|
+
options['repository']
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def options
|
20
|
+
file = File.join(File.dirname(File.expand_path(__FILE__)), 'config.yml')
|
21
|
+
config = YAML::load_file(file)
|
22
|
+
test_env = ENV['TEST_ENV'] || 'local'
|
23
|
+
|
24
|
+
if config.key?(test_env)
|
25
|
+
config[test_env]
|
26
|
+
else
|
27
|
+
raise "No configuration found for #{test_env}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
RSpec.configure do |c|
|
34
|
+
c.include SpecHelpers
|
35
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmis-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenneth Geerts
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -54,6 +54,7 @@ extensions: []
|
|
54
54
|
extra_rdoc_files: []
|
55
55
|
files:
|
56
56
|
- ".gitignore"
|
57
|
+
- ".travis.yml"
|
57
58
|
- Gemfile
|
58
59
|
- LICENSE
|
59
60
|
- Rakefile
|
@@ -84,14 +85,15 @@ files:
|
|
84
85
|
- lib/core_ext/hash.rb
|
85
86
|
- lib/core_ext/hash/compact.rb
|
86
87
|
- readme.md
|
87
|
-
- spec/document_spec.rb
|
88
|
-
- spec/folder_spec.rb
|
89
|
-
- spec/
|
90
|
-
- spec/
|
91
|
-
- spec/
|
92
|
-
- spec/
|
93
|
-
- spec/
|
94
|
-
- spec/
|
88
|
+
- spec/cmis-ruby/document_spec.rb
|
89
|
+
- spec/cmis-ruby/folder_spec.rb
|
90
|
+
- spec/cmis-ruby/object_spec.rb
|
91
|
+
- spec/cmis-ruby/relationship_spec.rb
|
92
|
+
- spec/cmis-ruby/repository_spec.rb
|
93
|
+
- spec/cmis-ruby/server_spec.rb
|
94
|
+
- spec/config.yml
|
95
|
+
- spec/rspec.opts
|
96
|
+
- spec/spec_helper.rb
|
95
97
|
homepage: https://github.com/UP-nxt
|
96
98
|
licenses:
|
97
99
|
- Apache-2.0
|
@@ -104,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
106
|
requirements:
|
105
107
|
- - ">="
|
106
108
|
- !ruby/object:Gem::Version
|
107
|
-
version:
|
109
|
+
version: 1.9.3
|
108
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
111
|
requirements:
|
110
112
|
- - ">="
|
@@ -117,12 +119,13 @@ signing_key:
|
|
117
119
|
specification_version: 4
|
118
120
|
summary: Ruby client for CMIS
|
119
121
|
test_files:
|
120
|
-
- spec/document_spec.rb
|
121
|
-
- spec/folder_spec.rb
|
122
|
-
- spec/
|
123
|
-
- spec/
|
124
|
-
- spec/
|
125
|
-
- spec/
|
126
|
-
- spec/
|
127
|
-
- spec/
|
122
|
+
- spec/cmis-ruby/document_spec.rb
|
123
|
+
- spec/cmis-ruby/folder_spec.rb
|
124
|
+
- spec/cmis-ruby/object_spec.rb
|
125
|
+
- spec/cmis-ruby/relationship_spec.rb
|
126
|
+
- spec/cmis-ruby/repository_spec.rb
|
127
|
+
- spec/cmis-ruby/server_spec.rb
|
128
|
+
- spec/config.yml
|
129
|
+
- spec/rspec.opts
|
130
|
+
- spec/spec_helper.rb
|
128
131
|
has_rdoc: false
|
data/spec/document_spec.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require_relative './helper'
|
2
|
-
|
3
|
-
describe CMIS::Document 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 'create_in_folder with content' do
|
14
|
-
new_object = @repo.new_document
|
15
|
-
new_object.name = 'doc1'
|
16
|
-
new_object.object_type_id = 'cmis:document'
|
17
|
-
new_object.set_content(stream: StringIO.new('content1'),
|
18
|
-
mime_type: 'text/plain',
|
19
|
-
filename: 'doc1.txt')
|
20
|
-
doc = new_object.create_in_folder(@repo.root)
|
21
|
-
doc.name.should eq 'doc1'
|
22
|
-
doc.content_stream_mime_type.should eq 'text/plain'
|
23
|
-
doc.content_stream_file_name.should eq 'doc1.txt'
|
24
|
-
doc.content.should eq 'content1'
|
25
|
-
doc.delete
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'create_in_folder without content' do
|
29
|
-
new_object = @repo.new_document
|
30
|
-
new_object.name = 'doc2'
|
31
|
-
new_object.object_type_id = 'cmis:document'
|
32
|
-
doc = new_object.create_in_folder(@repo.root)
|
33
|
-
doc.name.should eq 'doc2'
|
34
|
-
doc.content.should be nil
|
35
|
-
doc.delete
|
36
|
-
end
|
37
|
-
|
38
|
-
# it 'set content - attached' do
|
39
|
-
# new_object = @repo.new_document
|
40
|
-
# new_object.name = 'doc3'
|
41
|
-
# new_object.object_type_id = 'cmis:document'
|
42
|
-
# doc = @repo.root.create(new_object)
|
43
|
-
# doc.set_content(StringIO.new('content3'), 'text/plain', 'doc3.txt') # set content on attached doc
|
44
|
-
# doc.content.should eq 'content3'
|
45
|
-
# doc.delete
|
46
|
-
# end
|
47
|
-
end
|
data/spec/folder_spec.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
require_relative './helper'
|
2
|
-
|
3
|
-
describe CMIS::Folder 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 'parent - root' do
|
14
|
-
@repo.root.parent.should be_nil
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'parent - root child' do
|
18
|
-
new_object = @repo.new_folder
|
19
|
-
new_object.name = 'folder1'
|
20
|
-
new_object.object_type_id = 'cmis:folder'
|
21
|
-
folder = @repo.root.create(new_object)
|
22
|
-
folder.parent.cmis_object_id.should eq @repo.root_folder_id
|
23
|
-
folder.delete
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'create document' do
|
27
|
-
new_object = @repo.new_document
|
28
|
-
new_object.name = 'doc1'
|
29
|
-
new_object.object_type_id = 'cmis:document'
|
30
|
-
new_object.set_content(stream: StringIO.new('apple is a fruit'),
|
31
|
-
mime_type: 'text/plain',
|
32
|
-
filename: 'apple.txt')
|
33
|
-
object = @repo.root.create(new_object)
|
34
|
-
object.should be_a_kind_of CMIS::Document
|
35
|
-
object.name.should eq 'doc1'
|
36
|
-
object.content_stream_mime_type.should eq 'text/plain'
|
37
|
-
object.content_stream_file_name.should eq 'apple.txt'
|
38
|
-
object.content.should eq 'apple is a fruit'
|
39
|
-
object.delete
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'create folder' do
|
43
|
-
new_object = @repo.new_folder
|
44
|
-
new_object.name = 'folder1'
|
45
|
-
new_object.object_type_id = 'cmis:folder'
|
46
|
-
object = @repo.root.create(new_object)
|
47
|
-
object.should be_a_kind_of CMIS::Folder
|
48
|
-
object.name.should eq 'folder1'
|
49
|
-
object.delete
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'create relationship' do
|
53
|
-
new_object = @repo.new_relationship
|
54
|
-
new_object.name = 'rel1'
|
55
|
-
new_object.object_type_id = 'cmis:relationship'
|
56
|
-
lambda { @repo.root.create(new_object) }.should raise_exception
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'create item' do
|
60
|
-
begin
|
61
|
-
new_object = @repo.new_item
|
62
|
-
new_object.name = 'item1'
|
63
|
-
new_object.object_type_id = 'cmis:item'
|
64
|
-
object = @repo.root.create(new_object)
|
65
|
-
object.should be_a_kind_of CMIS::Item
|
66
|
-
object.name.should eq 'item1'
|
67
|
-
object.delete
|
68
|
-
end unless @repo.cmis_version_supported < '1.1'
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'create object' do
|
72
|
-
new_object = CMIS::Object.new({}, @repo)
|
73
|
-
new_object.name = 'object1'
|
74
|
-
new_object.object_type_id = 'cmis:folder'
|
75
|
-
lambda { @repo.root.create(new_object) }.should raise_exception
|
76
|
-
end
|
77
|
-
end
|