openseek-api 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +34 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +20 -0
  7. data/Gemfile +4 -0
  8. data/Gemfile.lock +106 -0
  9. data/LICENSE +24 -0
  10. data/README.md +23 -0
  11. data/Rakefile +9 -0
  12. data/jars/lib/aopalliance.jar +0 -0
  13. data/jars/lib/aspectjweaver.jar +0 -0
  14. data/jars/lib/cglib-nodep.jar +0 -0
  15. data/jars/lib/cisd-args4j.jar +0 -0
  16. data/jars/lib/commons-codec.jar +0 -0
  17. data/jars/lib/commons-io.jar +0 -0
  18. data/jars/lib/commons-lang.jar +0 -0
  19. data/jars/lib/commons-logging.jar +0 -0
  20. data/jars/lib/dom4j-1.6.1.jar +0 -0
  21. data/jars/lib/dss_upload_gui.jar +0 -0
  22. data/jars/lib/geronimo-stax-api_1.0_spec-1.0.jar +0 -0
  23. data/jars/lib/guava-11.0.2.jar +0 -0
  24. data/jars/lib/httpclient.jar +0 -0
  25. data/jars/lib/httpcore.jar +0 -0
  26. data/jars/lib/ij.jar +0 -0
  27. data/jars/lib/image-viewer.jar +0 -0
  28. data/jars/lib/jackson-annotations-2.8.5.jar +0 -0
  29. data/jars/lib/jackson-core-2.8.5.jar +0 -0
  30. data/jars/lib/jackson-databind-2.8.5.jar +0 -0
  31. data/jars/lib/javassist-3.16.1-GA.jar +0 -0
  32. data/jars/lib/jline.jar +0 -0
  33. data/jars/lib/json-simple-1.1.jar +0 -0
  34. data/jars/lib/jsr305-1.3.9.jar +0 -0
  35. data/jars/lib/jython.jar +0 -0
  36. data/jars/lib/log4j.jar +0 -0
  37. data/jars/lib/openbis_api-16.05.2-r37019.jar +0 -0
  38. data/jars/lib/poi-ooxml-schemas.jar +0 -0
  39. data/jars/lib/poi-ooxml.jar +0 -0
  40. data/jars/lib/poi.jar +0 -0
  41. data/jars/lib/reflections-0.9.9-RC1.jar +0 -0
  42. data/jars/lib/sis-base.jar +0 -0
  43. data/jars/lib/spring-aop.jar +0 -0
  44. data/jars/lib/spring-beans.jar +0 -0
  45. data/jars/lib/spring-context.jar +0 -0
  46. data/jars/lib/spring-core.jar +0 -0
  47. data/jars/lib/spring-expression.jar +0 -0
  48. data/jars/lib/spring-web.jar +0 -0
  49. data/jars/lib/spring-webmvc.jar +0 -0
  50. data/jars/lib/stax-api.jar +0 -0
  51. data/jars/lib/stream-supporting-httpinvoker.jar +0 -0
  52. data/jars/lib/xml-apis-1.0.b2.jar +0 -0
  53. data/jars/lib/xmlbeans-2.3.0.jar +0 -0
  54. data/jars/openseek-api-0.9.jar +0 -0
  55. data/lib/fairdom/openbis_api/application_server_query.rb +16 -0
  56. data/lib/fairdom/openbis_api/authentication.rb +25 -0
  57. data/lib/fairdom/openbis_api/data_store_download.rb +13 -0
  58. data/lib/fairdom/openbis_api/data_store_query.rb +18 -0
  59. data/lib/fairdom/openbis_api/java_execution.rb +46 -0
  60. data/lib/fairdom/openbis_api/openbis_query.rb +27 -0
  61. data/lib/fairdom/openbis_api/openbis_query_exception.rb +5 -0
  62. data/lib/fairdom/openbis_api/versions.rb +6 -0
  63. data/lib/openseek-api-gem.rb +12 -0
  64. data/openseek-api-gem.gemspec +27 -0
  65. data/test/application_query_test.rb +111 -0
  66. data/test/authentication_test.rb +30 -0
  67. data/test/data_store_download_test.rb +62 -0
  68. data/test/data_store_query_test.rb +60 -0
  69. metadata +180 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9d09a04d182af1ff95a8bfeeac27b0ce337ce951
4
+ data.tar.gz: 1f97c0b533e95d4c33b65a69583294f4c546960c
5
+ SHA512:
6
+ metadata.gz: 9cf6b345c70e1434fa35611f7dfbfee696c0a67e879f7c7b57338400fe10a80301fede9fb0022ddb5f35b6b04642e161c61bfee3c76b951c964a6799ea3b9966
7
+ data.tar.gz: b21e81c4a38ce206c886de149aaaa3a33a7eab0671b64e68ed0318d98ff649e4f2a9392b246607e0cab2870bd0ed78b26e46c419a964cbd1378c2e68521cf905
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.gitignore ADDED
@@ -0,0 +1,34 @@
1
+ *.rbc
2
+ capybara-*.html
3
+ .rspec
4
+ /log
5
+ /tmp
6
+ /db/*.sqlite3
7
+ /public/system
8
+ /coverage/
9
+ /test/coverage/
10
+ /spec/tmp
11
+ **.orig
12
+ rerun.txt
13
+ pickle-email-*.html
14
+ .idea/
15
+
16
+ # TODO Comment out these rules if you are OK with secrets being uploaded to the repo
17
+ config/initializers/secret_token.rb
18
+ config/secrets.yml
19
+
20
+ ## Environment normalisation:
21
+ /.bundle
22
+ /vendor/bundle
23
+
24
+ # these should all be checked in to normalise the environment:
25
+ # Gemfile.lock, .ruby-version, .ruby-gemset
26
+
27
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
28
+ .rvmrc
29
+
30
+ # if using bower-rails ignore default bower_components path bower.json files
31
+ /vendor/assets/bower_components
32
+ *.bowerrc
33
+ bower.json
34
+ test/tmp
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ openbis-api-gem
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1.9
data/.travis.yml ADDED
@@ -0,0 +1,20 @@
1
+ language: ruby
2
+
3
+ sudo: false
4
+
5
+ cache: bundler
6
+
7
+ rvm:
8
+ - 2.1.9
9
+
10
+ jdk:
11
+ - oraclejdk8
12
+ - oraclejdk7
13
+ - openjdk7
14
+
15
+ script:
16
+ - bundle exec rake test
17
+
18
+ notifications:
19
+ slack:
20
+ secure: fK3kbDHg/kwFCjxhFkg0wkOcwXoFwkfJJdRFwZQtnMDkY4yHNtr9SWIHWOiI9OceNgWLeHwvvm/7737WBWnTf4RF3mn0/D9xYtOn+DfV2gb1xXVjDb33oBQWrFN8P1x4xFNOMw38LQ46NYvsv6bfPmZRJpKuvHPVJUsBCINx14w=
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in openseek-api-gem.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,106 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ openseek-api (0.9.1)
5
+ cocaine
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.5.0)
11
+ public_suffix (~> 2.0, >= 2.0.2)
12
+ ast (2.3.0)
13
+ axiom-types (0.1.1)
14
+ descendants_tracker (~> 0.0.4)
15
+ ice_nine (~> 0.11.0)
16
+ thread_safe (~> 0.3, >= 0.3.1)
17
+ climate_control (0.1.0)
18
+ cocaine (0.5.8)
19
+ climate_control (>= 0.0.3, < 1.0)
20
+ codeclimate-engine-rb (0.4.0)
21
+ virtus (~> 1.0)
22
+ coercible (1.0.0)
23
+ descendants_tracker (~> 0.0.1)
24
+ coveralls (0.8.19)
25
+ json (>= 1.8, < 3)
26
+ simplecov (~> 0.12.0)
27
+ term-ansicolor (~> 1.3)
28
+ thor (~> 0.19.1)
29
+ tins (~> 1.6)
30
+ descendants_tracker (0.0.4)
31
+ thread_safe (~> 0.3, >= 0.3.1)
32
+ docile (1.1.5)
33
+ equalizer (0.0.11)
34
+ erubis (2.7.0)
35
+ flay (2.8.1)
36
+ erubis (~> 2.7.0)
37
+ path_expander (~> 1.0)
38
+ ruby_parser (~> 3.0)
39
+ sexp_processor (~> 4.0)
40
+ flog (4.6.1)
41
+ path_expander (~> 1.0)
42
+ ruby_parser (~> 3.1, > 3.1.0)
43
+ sexp_processor (~> 4.8)
44
+ ice_nine (0.11.2)
45
+ json (2.0.3)
46
+ launchy (2.4.3)
47
+ addressable (~> 2.3)
48
+ parser (2.3.3.1)
49
+ ast (~> 2.2)
50
+ path_expander (1.0.1)
51
+ powerpack (0.1.1)
52
+ public_suffix (2.0.5)
53
+ rainbow (2.2.1)
54
+ rake (10.4.2)
55
+ reek (4.5.6)
56
+ codeclimate-engine-rb (~> 0.4.0)
57
+ parser (>= 2.3.1.2, < 2.5)
58
+ rainbow (~> 2.0)
59
+ rubocop (0.47.1)
60
+ parser (>= 2.3.3.1, < 3.0)
61
+ powerpack (~> 0.1)
62
+ rainbow (>= 1.99.1, < 3.0)
63
+ ruby-progressbar (~> 1.7)
64
+ unicode-display_width (~> 1.0, >= 1.0.1)
65
+ ruby-progressbar (1.8.1)
66
+ ruby_parser (3.8.4)
67
+ sexp_processor (~> 4.1)
68
+ rubycritic (3.1.3)
69
+ flay (~> 2.8)
70
+ flog (~> 4.4)
71
+ launchy (= 2.4.3)
72
+ parser (= 2.3.3.1)
73
+ rainbow (~> 2.1)
74
+ reek (~> 4.4)
75
+ ruby_parser (~> 3.8)
76
+ virtus (~> 1.0)
77
+ sexp_processor (4.8.0)
78
+ simplecov (0.12.0)
79
+ docile (~> 1.1.0)
80
+ json (>= 1.8, < 3)
81
+ simplecov-html (~> 0.10.0)
82
+ simplecov-html (0.10.0)
83
+ term-ansicolor (1.4.0)
84
+ tins (~> 1.0)
85
+ thor (0.19.4)
86
+ thread_safe (0.3.6)
87
+ tins (1.13.2)
88
+ unicode-display_width (1.1.3)
89
+ virtus (1.0.5)
90
+ axiom-types (~> 0.1)
91
+ coercible (~> 1.0)
92
+ descendants_tracker (~> 0.0, >= 0.0.3)
93
+ equalizer (~> 0.0, >= 0.0.9)
94
+
95
+ PLATFORMS
96
+ ruby
97
+
98
+ DEPENDENCIES
99
+ coveralls
100
+ openseek-api!
101
+ rake (~> 10.0)
102
+ rubocop
103
+ rubycritic
104
+
105
+ BUNDLED WITH
106
+ 1.13.6
data/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2015, FAIRdom
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+
10
+ * Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
+
data/README.md ADDED
@@ -0,0 +1,23 @@
1
+ [![Build Status](https://travis-ci.org/FAIRdom/openseek-api-gem.png?branch=master)](https://travis-ci.org/FAIRdom/openseek-api-gem)
2
+
3
+ [![Coverage Status](https://coveralls.io/repos/github/FAIRdom/openseek-api/badge.svg)](https://coveralls.io/github/FAIRdom/openseek-api)
4
+
5
+ [![Code Climate](https://codeclimate.com/github/FAIRdom/openseek-api-gem/badges/gpa.svg)](https://codeclimate.com/github/FAIRdom/openseek-api-gem)
6
+
7
+ ## Installation
8
+
9
+ Java 1.8 (JRE) is required.
10
+
11
+ gem "openseek-api-gem", :git=>"https://github.com/FAIRdom/openseek-api-gem.git"
12
+
13
+ ## Usage
14
+
15
+ * Use to query entities in Openbis, filtered on a property with a defined property value.
16
+ * Entity type is for example Experiment, Sample, DataSet.
17
+ * Property is normally the SEEK_ID, which is used to map Openbis entity with SEEK entity.
18
+
19
+ include Fairdom::OpenbisApi
20
+
21
+ instance = Fairdom::OpenbisApi::Query.new(username, password, endpoint)
22
+
23
+ json_result = instance.query(type, property, property_value)
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.test_files = FileList['test/*_test.rb']
7
+ end
8
+
9
+ task :default => :test
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/jars/lib/ij.jar ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/jars/lib/poi.jar ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,16 @@
1
+ module Fairdom
2
+ module OpenbisApi
3
+ class ApplicationServerQuery < OpenbisQuery
4
+ attr_reader :as_endpoint
5
+
6
+ def initialize(as_endpoint, token)
7
+ super(token)
8
+ @as_endpoint = as_endpoint
9
+ end
10
+
11
+ def root_command_options
12
+ " -endpoints {%as%:%#{as_endpoint}%\,%sessionToken%:%#{token}%}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ module Fairdom
2
+ module OpenbisApi
3
+ class Authentication < OpenbisQuery
4
+ attr_reader :as_endpoint, :username, :password
5
+
6
+ def initialize(username, password, as_endpoint)
7
+ @username = username
8
+ @password = password
9
+ @as_endpoint = as_endpoint
10
+ end
11
+
12
+ def login
13
+ execute []
14
+ end
15
+
16
+ def execute_command(_options)
17
+ java_root_command
18
+ end
19
+
20
+ def root_command_options
21
+ " -account {%username%:%#{username}%\,%password%:%#{password}%} -endpoints {%as%:%#{as_endpoint}%}"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ module Fairdom
2
+ module OpenbisApi
3
+ class DataStoreDownload < DataStoreQuery
4
+ def download(options)
5
+ execute(options)
6
+ end
7
+
8
+ def command_option_key
9
+ 'download'
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+
2
+
3
+ module Fairdom
4
+ module OpenbisApi
5
+ class DataStoreQuery < OpenbisQuery
6
+ attr_reader :dss_endpoint
7
+
8
+ def initialize(dss_endpoint, token)
9
+ super(token)
10
+ @dss_endpoint = dss_endpoint
11
+ end
12
+
13
+ def root_command_options
14
+ " -endpoints {%dss%:%#{dss_endpoint}%\,%sessionToken%:%#{token}%}"
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,46 @@
1
+ require 'cocaine'
2
+ require 'json'
3
+
4
+ module Fairdom
5
+ module OpenbisApi
6
+ class JavaExecution
7
+ attr_reader :query_object
8
+
9
+ def initialize(query_object)
10
+ @query_object = query_object
11
+ end
12
+
13
+ def execute(options)
14
+ command = execute_command(options)
15
+ output = Cocaine::CommandLine.new(command).run
16
+ JSON.parse(output.strip)
17
+ rescue Cocaine::ExitStatusError => exception
18
+ raise OpenbisQueryException, exception.message
19
+ end
20
+
21
+ private
22
+
23
+ def execute_command(options)
24
+ "#{java_root_command} -#{query_object.command_option_key} {#{command_from_options(options)}}"
25
+ end
26
+
27
+ def command_from_options(options)
28
+ options.collect do |key, value|
29
+ "%#{key}%:%#{value.tr(' ', '+')}%"
30
+ end.join("\,")
31
+ end
32
+
33
+ def java_root_command
34
+ "java -jar #{jar_path} #{query_object.root_command_options}"
35
+ end
36
+
37
+ def jar_path
38
+ File.join(File.dirname(__dir__), "../../jars/#{jar_file}")
39
+ end
40
+
41
+ def jar_file
42
+ "openseek-api-#{Fairdom::OpenbisApi::JAR_VERSION}.jar"
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,27 @@
1
+ require 'fairdom/openbis_api/java_execution'
2
+
3
+ module Fairdom
4
+ module OpenbisApi
5
+ class OpenbisQuery
6
+ attr_reader :token
7
+
8
+ def initialize(token)
9
+ @token = token
10
+ end
11
+
12
+ def query(options)
13
+ execute(options)
14
+ end
15
+
16
+ def command_option_key
17
+ 'query'
18
+ end
19
+
20
+ private
21
+
22
+ def execute(options)
23
+ JavaExecution.new(self).execute(options)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ module Fairdom
2
+ module OpenbisApi
3
+ class OpenbisQueryException < RuntimeError; end
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ module Fairdom
2
+ module OpenbisApi
3
+ VERSION = '0.9.1'.freeze
4
+ JAR_VERSION = '0.9'.freeze
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'fairdom/openbis_api/versions'
5
+ require 'fairdom/openbis_api/openbis_query'
6
+ require 'fairdom/openbis_api/openbis_query_exception'
7
+
8
+ require 'fairdom/openbis_api/authentication'
9
+
10
+ require 'fairdom/openbis_api/application_server_query'
11
+ require 'fairdom/openbis_api/data_store_query'
12
+ require 'fairdom/openbis_api/data_store_download'
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require 'fairdom/openbis_api/versions'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "openseek-api"
7
+ s.version = Fairdom::OpenbisApi::VERSION
8
+ s.authors = ["quyen"]
9
+ s.email = ["thucquyendn@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{ruby gem to talk to openbis-api java}
12
+ s.description = %q{ruby gem to talk to openbis-api java}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+
19
+ # specify any dependencies here; for example:
20
+ s.add_development_dependency("coveralls", ['>= 0'])
21
+ s.add_development_dependency('rubocop', ['>= 0'])
22
+ s.add_development_dependency('rubycritic', ['>= 0'])
23
+ s.add_development_dependency("rake",['~> 10.0'])
24
+
25
+ s.add_dependency('cocaine', ['>= 0'])
26
+
27
+ end
@@ -0,0 +1,111 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ require 'test/unit'
6
+ require 'openseek-api-gem'
7
+
8
+ class ApplicationServerQueryTest < Test::Unit::TestCase
9
+ include Fairdom::OpenbisApi
10
+
11
+ def setup
12
+ @as_endpoint = 'https://openbis-api.fair-dom.org/openbis/openbis'
13
+ username = 'apiuser'
14
+ password = 'apiuser'
15
+ @token = Authentication.new(username, password, @as_endpoint).login['token']
16
+
17
+ @options = { entityType: 'Experiment', queryType: 'PROPERTY', property: 'SEEK_STUDY_ID', propertyValue: 'Study_1' }
18
+ end
19
+
20
+ def test_query_property
21
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
22
+ result = instance.query(@options)
23
+ experiments = result['experiments']
24
+ refute experiments.empty?
25
+ end
26
+
27
+ def test_query_for_spaces
28
+ @options = { entityType: 'Space', queryType: 'ATTRIBUTE', attribute: 'PermID', attributeValue: '' }
29
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
30
+ result = instance.query(@options)
31
+ spaces = result['spaces']
32
+ refute spaces.empty?
33
+ assert_equal 2, spaces.count
34
+ space = spaces[0]
35
+ assert_equal 'API-SPACE', space['code']
36
+ assert_equal 'use for testing openbis api integration', space['description'].strip
37
+ experiments = space['experiments']
38
+ assert_equal 1, experiments.size
39
+ assert_equal ['20151216143716562-2'], experiments
40
+
41
+ projects = space['projects']
42
+ assert_equal ['20151216135152196-1'], projects
43
+
44
+ datasets = space['datasets']
45
+ assert_equal 8, datasets.size
46
+ assert_includes datasets, '20160210130359377-22'
47
+
48
+ space = spaces[1]
49
+ assert_equal 'DEFAULT', space['code']
50
+ assert_nil space['description']
51
+ end
52
+
53
+ def test_query_property_no_result
54
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
55
+ @options[:propertyValue] = 'Some_value'
56
+ result = instance.query(@options)
57
+ assert result.empty?
58
+ end
59
+
60
+ def test_unrecognized_type
61
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
62
+ invalid_type = 'SomeType'
63
+ @options[:entityType] = 'Some_value'
64
+ assert_raise OpenbisQueryException do
65
+ instance.query(@options)
66
+ end
67
+ end
68
+
69
+ def test_empty_property
70
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
71
+ @options[:property] = ''
72
+ result = instance.query(@options)
73
+ assert result.empty?
74
+ end
75
+
76
+ def test_any_property
77
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
78
+ @options[:property] = 'any_property'
79
+ result = instance.query(@options)
80
+ assert result.empty?
81
+ end
82
+
83
+ def test_query_perm_id_attribute
84
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
85
+ @options[:queryType] = 'ATTRIBUTE'
86
+ @options[:attribute] = 'permId'
87
+ @options[:attributeValue] = '20151216143716562-2'
88
+ result = instance.query(@options)
89
+ experiments = result['experiments']
90
+ refute experiments.empty?
91
+ end
92
+
93
+ def test_query_multiple_perm_id_attribute_values
94
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
95
+ @options[:queryType] = 'ATTRIBUTE'
96
+ @options[:attribute] = 'permId'
97
+ @options[:attributeValue] = '20151216112932823-1,20151216143716562-2'
98
+ result = instance.query(@options)
99
+ experiments = result['experiments']
100
+ refute experiments.empty?
101
+ end
102
+
103
+ def test_query_all_permid
104
+ instance = ApplicationServerQuery.new(@as_endpoint, @token)
105
+ @options[:queryType] = 'ATTRIBUTE'
106
+ @options[:attribute] = 'PermID'
107
+ @options[:attributeValue] = ''
108
+ result = instance.query(@options)
109
+ refute result['experiments'].empty?
110
+ end
111
+ end
@@ -0,0 +1,30 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ require 'test/unit'
6
+ require 'openseek-api-gem'
7
+
8
+ class AuthenticationTest < Test::Unit::TestCase
9
+ include Fairdom::OpenbisApi
10
+
11
+ def setup
12
+ @as_endpoint = 'https://openbis-api.fair-dom.org/openbis/openbis'
13
+ @username = 'apiuser'
14
+ @password = 'apiuser'
15
+ end
16
+
17
+ def test_successful_authentication
18
+ au = Authentication.new(@username, @password, @as_endpoint)
19
+ session_token = au.login
20
+ assert_not_nil session_token['token']
21
+ end
22
+
23
+ def test_failed_authentication
24
+ invalid_password = 'blabla'
25
+ au = Authentication.new(@username, invalid_password, @as_endpoint)
26
+ assert_raise OpenbisQueryException do
27
+ au.login
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,62 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ require 'test/unit'
6
+ require 'openseek-api-gem'
7
+
8
+ class DataStoreDownloadTest < Test::Unit::TestCase
9
+ include Fairdom::OpenbisApi
10
+
11
+ def setup
12
+ @dss_endpoint = 'https://openbis-api.fair-dom.org/datastore_server'
13
+ @as_endpoint = 'https://openbis-api.fair-dom.org/openbis/openbis'
14
+ username = 'apiuser'
15
+ password = 'apiuser'
16
+ @token = Authentication.new(username, password, @as_endpoint).login['token']
17
+
18
+ @dest_folder = File.dirname(__FILE__) + '/tmp/'
19
+ FileUtils.mkdir_p @dest_folder unless File.exist?(@dest_folder)
20
+ end
21
+
22
+ def test_download_file
23
+ instance = DataStoreDownload.new(@dss_endpoint, @token)
24
+ dest = @dest_folder + 'utf8.txt'
25
+ options = { downloadType: 'file', permID: '20160210130359377-22', source: 'original/utf8.txt', dest: dest }
26
+ FileUtils.remove_file(dest) if File.exist?(dest)
27
+ result = instance.download(options)
28
+ assert File.exist?(dest)
29
+ end
30
+
31
+ def test_download_file_with_space_in_name
32
+ instance = DataStoreDownload.new(@dss_endpoint, @token)
33
+ dest = @dest_folder + 'Genes List Nature Paper Test.docx'
34
+ options = { downloadType: 'file', permID: '20160322172551664-35', source: 'original/Genes List Nature Paper Test.docx', dest: dest }
35
+ FileUtils.remove_file(dest) if File.exist?(dest)
36
+ result = instance.download(options)
37
+ assert File.exist?(dest)
38
+ end
39
+
40
+ def test_download_folder
41
+ instance = DataStoreDownload.new(@dss_endpoint, @token)
42
+ source = 'original/DEFAULT'
43
+ dest = @dest_folder
44
+ options = { downloadType: 'folder', permID: '20160215111736723-31', source: source, dest: dest }
45
+ FileUtils.remove_dir(dest + source) if File.exist?(dest + source)
46
+ result = instance.download(options)
47
+ assert File.exist?(dest + source)
48
+ assert File.exist?(dest + source + '/fairdom-logo-compact.svg')
49
+ assert File.exist?(dest + source + '/Stanford_et_al-2015-Molecular_Systems_Biology.pdf')
50
+ end
51
+
52
+ def test_download_dataset_files
53
+ instance = DataStoreDownload.new(@dss_endpoint, @token)
54
+ source = 'original'
55
+ dest = @dest_folder
56
+ options = { downloadType: 'dataset', permID: '20151217153943290-5', source: source, dest: dest }
57
+ FileUtils.remove_dir(dest + source) if File.exist?(dest + source)
58
+ result = instance.download(options)
59
+ assert File.exist?(dest + source)
60
+ assert File.exist?(dest + source + '/api-test')
61
+ end
62
+ end
@@ -0,0 +1,60 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ require 'test/unit'
6
+ require 'openseek-api-gem'
7
+
8
+ class DataStoreQueryTest < Test::Unit::TestCase
9
+ include Fairdom::OpenbisApi
10
+
11
+ def setup
12
+ @dss_endpoint = 'https://openbis-api.fair-dom.org/datastore_server'
13
+ @as_endpoint = 'https://openbis-api.fair-dom.org/openbis/openbis'
14
+ username = 'apiuser'
15
+ password = 'apiuser'
16
+ @token = Authentication.new(username, password, @as_endpoint).login['token']
17
+
18
+ @options = { entityType: 'DataSetFile', queryType: 'PROPERTY', property: 'SEEK_DATAFILE_ID', propertyValue: 'DataFile_1' }
19
+ end
20
+
21
+ def test_query
22
+ instance = DataStoreQuery.new(@dss_endpoint, @token)
23
+ result = instance.query(@options)
24
+ assert !result['datasetfiles'].empty?
25
+ end
26
+
27
+ def test_query_permid_attribute
28
+ instance = DataStoreQuery.new(@dss_endpoint, @token)
29
+ @options[:queryType] = 'ATTRIBUTE'
30
+ @options[:attribute] = 'PermID'
31
+ @options[:attributeValue] = '20151217153943290-5'
32
+ result = instance.query(@options)
33
+ assert !result['datasetfiles'].empty?
34
+ end
35
+
36
+ def test_query_multiple_permid_attribute_values
37
+ instance = DataStoreQuery.new(@dss_endpoint, @token)
38
+ @options[:queryType] = 'ATTRIBUTE'
39
+ @options[:attribute] = 'PermID'
40
+ @options[:attributeValue] = '20151217153943290-5,20160210130359377-22'
41
+ result = instance.query(@options)
42
+ assert !result['datasetfiles'].empty?
43
+ end
44
+
45
+ def test_query_all_permid
46
+ instance = DataStoreQuery.new(@dss_endpoint, @token)
47
+ @options[:queryType] = 'ATTRIBUTE'
48
+ @options[:attribute] = 'PermID'
49
+ @options[:attributeValue] = ''
50
+ result = instance.query(@options)
51
+ assert !result['datasetfiles'].empty?
52
+ end
53
+
54
+ def test_query_no_result
55
+ instance = DataStoreQuery.new(@dss_endpoint, @token)
56
+ @options[:propertyValue] = 'Some_value'
57
+ result = instance.query(@options)
58
+ assert result.empty?
59
+ end
60
+ end
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: openseek-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ platform: ruby
6
+ authors:
7
+ - quyen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: coveralls
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubycritic
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: cocaine
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: ruby gem to talk to openbis-api java
84
+ email:
85
+ - thucquyendn@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".coveralls.yml"
91
+ - ".gitignore"
92
+ - ".ruby-gemset"
93
+ - ".ruby-version"
94
+ - ".travis.yml"
95
+ - Gemfile
96
+ - Gemfile.lock
97
+ - LICENSE
98
+ - README.md
99
+ - Rakefile
100
+ - jars/lib/aopalliance.jar
101
+ - jars/lib/aspectjweaver.jar
102
+ - jars/lib/cglib-nodep.jar
103
+ - jars/lib/cisd-args4j.jar
104
+ - jars/lib/commons-codec.jar
105
+ - jars/lib/commons-io.jar
106
+ - jars/lib/commons-lang.jar
107
+ - jars/lib/commons-logging.jar
108
+ - jars/lib/dom4j-1.6.1.jar
109
+ - jars/lib/dss_upload_gui.jar
110
+ - jars/lib/geronimo-stax-api_1.0_spec-1.0.jar
111
+ - jars/lib/guava-11.0.2.jar
112
+ - jars/lib/httpclient.jar
113
+ - jars/lib/httpcore.jar
114
+ - jars/lib/ij.jar
115
+ - jars/lib/image-viewer.jar
116
+ - jars/lib/jackson-annotations-2.8.5.jar
117
+ - jars/lib/jackson-core-2.8.5.jar
118
+ - jars/lib/jackson-databind-2.8.5.jar
119
+ - jars/lib/javassist-3.16.1-GA.jar
120
+ - jars/lib/jline.jar
121
+ - jars/lib/json-simple-1.1.jar
122
+ - jars/lib/jsr305-1.3.9.jar
123
+ - jars/lib/jython.jar
124
+ - jars/lib/log4j.jar
125
+ - jars/lib/openbis_api-16.05.2-r37019.jar
126
+ - jars/lib/poi-ooxml-schemas.jar
127
+ - jars/lib/poi-ooxml.jar
128
+ - jars/lib/poi.jar
129
+ - jars/lib/reflections-0.9.9-RC1.jar
130
+ - jars/lib/sis-base.jar
131
+ - jars/lib/spring-aop.jar
132
+ - jars/lib/spring-beans.jar
133
+ - jars/lib/spring-context.jar
134
+ - jars/lib/spring-core.jar
135
+ - jars/lib/spring-expression.jar
136
+ - jars/lib/spring-web.jar
137
+ - jars/lib/spring-webmvc.jar
138
+ - jars/lib/stax-api.jar
139
+ - jars/lib/stream-supporting-httpinvoker.jar
140
+ - jars/lib/xml-apis-1.0.b2.jar
141
+ - jars/lib/xmlbeans-2.3.0.jar
142
+ - jars/openseek-api-0.9.jar
143
+ - lib/fairdom/openbis_api/application_server_query.rb
144
+ - lib/fairdom/openbis_api/authentication.rb
145
+ - lib/fairdom/openbis_api/data_store_download.rb
146
+ - lib/fairdom/openbis_api/data_store_query.rb
147
+ - lib/fairdom/openbis_api/java_execution.rb
148
+ - lib/fairdom/openbis_api/openbis_query.rb
149
+ - lib/fairdom/openbis_api/openbis_query_exception.rb
150
+ - lib/fairdom/openbis_api/versions.rb
151
+ - lib/openseek-api-gem.rb
152
+ - openseek-api-gem.gemspec
153
+ - test/application_query_test.rb
154
+ - test/authentication_test.rb
155
+ - test/data_store_download_test.rb
156
+ - test/data_store_query_test.rb
157
+ homepage: ''
158
+ licenses: []
159
+ metadata: {}
160
+ post_install_message:
161
+ rdoc_options: []
162
+ require_paths:
163
+ - lib
164
+ required_ruby_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ requirements: []
175
+ rubyforge_project:
176
+ rubygems_version: 2.4.8
177
+ signing_key:
178
+ specification_version: 4
179
+ summary: ruby gem to talk to openbis-api java
180
+ test_files: []