From 4a4675105f19e1c6d92749a79044a0d591ed2c3c Mon Sep 17 00:00:00 2001
From: Yves Noirjean <yves.noirjean@id.ethz.ch>
Date: Thu, 22 Mar 2018 18:42:22 +0100
Subject: [PATCH] obis: added integration tests

---
 .../OBis/integration_tests/00_get_config.sh   |   4 +
 .../integration_tests/00_get_config_global.sh |   3 +
 .../integration_tests/01_global_config.sh     |  11 ++
 .../02_first_commit_1_create_repository.sh    |   7 +
 .../02_first_commit_2_commit.sh               |   6 +
 .../03_second_commit_1_commit.sh              |   6 +
 .../03_second_commit_2_git_annex_info.sh      |   5 +
 .../integration_tests/04_second_repository.sh |   7 +
 .../05_second_external_dms.sh                 |   7 +
 .../06_error_on_first_commit_1_error.sh       |   6 +
 .../06_error_on_first_commit_2_status.sh      |   4 +
 .../06_error_on_first_commit_3_commit.sh      |   5 +
 .../07_attach_to_collection.sh                |   8 +
 .../integration_tests/08_addref_1_success.sh  |   6 +
 .../08_addref_2_duplicate.sh                  |   5 +
 .../08_addref_3_non-existent.sh               |   5 +
 .../OBis/integration_tests/09_local_clone.sh  |   7 +
 .../11_init_analysis_1_external.sh            |   9 ++
 .../11_init_analysis_2_internal.sh            |   9 ++
 .../11_init_analysis_3_git_check_ignore.sh    |   5 +
 .../12_metadata_only_1_commit.sh              |   8 +
 .../12_metadata_only_2_metadata_commit.sh     |   6 +
 .../13_sync_1_git_commit_and_sync.sh          |   8 +
 .../integration_tests/13_sync_2_only_sync.sh  |   5 +
 src/python/OBis/integration_tests/big_file    | Bin 0 -> 1000000 bytes
 .../integration_tests/integration_tests.py    | 140 ++++++++++++++++++
 26 files changed, 292 insertions(+)
 create mode 100755 src/python/OBis/integration_tests/00_get_config.sh
 create mode 100755 src/python/OBis/integration_tests/00_get_config_global.sh
 create mode 100755 src/python/OBis/integration_tests/01_global_config.sh
 create mode 100755 src/python/OBis/integration_tests/02_first_commit_1_create_repository.sh
 create mode 100755 src/python/OBis/integration_tests/02_first_commit_2_commit.sh
 create mode 100755 src/python/OBis/integration_tests/03_second_commit_1_commit.sh
 create mode 100755 src/python/OBis/integration_tests/03_second_commit_2_git_annex_info.sh
 create mode 100755 src/python/OBis/integration_tests/04_second_repository.sh
 create mode 100755 src/python/OBis/integration_tests/05_second_external_dms.sh
 create mode 100755 src/python/OBis/integration_tests/06_error_on_first_commit_1_error.sh
 create mode 100755 src/python/OBis/integration_tests/06_error_on_first_commit_2_status.sh
 create mode 100755 src/python/OBis/integration_tests/06_error_on_first_commit_3_commit.sh
 create mode 100755 src/python/OBis/integration_tests/07_attach_to_collection.sh
 create mode 100755 src/python/OBis/integration_tests/08_addref_1_success.sh
 create mode 100755 src/python/OBis/integration_tests/08_addref_2_duplicate.sh
 create mode 100755 src/python/OBis/integration_tests/08_addref_3_non-existent.sh
 create mode 100755 src/python/OBis/integration_tests/09_local_clone.sh
 create mode 100755 src/python/OBis/integration_tests/11_init_analysis_1_external.sh
 create mode 100755 src/python/OBis/integration_tests/11_init_analysis_2_internal.sh
 create mode 100755 src/python/OBis/integration_tests/11_init_analysis_3_git_check_ignore.sh
 create mode 100755 src/python/OBis/integration_tests/12_metadata_only_1_commit.sh
 create mode 100755 src/python/OBis/integration_tests/12_metadata_only_2_metadata_commit.sh
 create mode 100755 src/python/OBis/integration_tests/13_sync_1_git_commit_and_sync.sh
 create mode 100755 src/python/OBis/integration_tests/13_sync_2_only_sync.sh
 create mode 100644 src/python/OBis/integration_tests/big_file
 create mode 100644 src/python/OBis/integration_tests/integration_tests.py

diff --git a/src/python/OBis/integration_tests/00_get_config.sh b/src/python/OBis/integration_tests/00_get_config.sh
new file mode 100755
index 00000000000..7df8639dbc1
--- /dev/null
+++ b/src/python/OBis/integration_tests/00_get_config.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+cd $1
+obis config
diff --git a/src/python/OBis/integration_tests/00_get_config_global.sh b/src/python/OBis/integration_tests/00_get_config_global.sh
new file mode 100755
index 00000000000..13449f27ca4
--- /dev/null
+++ b/src/python/OBis/integration_tests/00_get_config_global.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+obis config -g
diff --git a/src/python/OBis/integration_tests/01_global_config.sh b/src/python/OBis/integration_tests/01_global_config.sh
new file mode 100755
index 00000000000..ec95bed0b31
--- /dev/null
+++ b/src/python/OBis/integration_tests/01_global_config.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [ -d "~/.obis" ]; then
+  rm -r ~/.obis
+fi
+
+obis config -g openbis_url https://localhost:8443
+obis config -g user admin
+obis config -g data_set_type UNKNOWN
+obis config -g verify_certificates false
+obis config -g hostname `hostname`
diff --git a/src/python/OBis/integration_tests/02_first_commit_1_create_repository.sh b/src/python/OBis/integration_tests/02_first_commit_1_create_repository.sh
new file mode 100755
index 00000000000..f507e0123b1
--- /dev/null
+++ b/src/python/OBis/integration_tests/02_first_commit_1_create_repository.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+rm -rf $1/obis_data
+mkdir $1/obis_data && cd $1/obis_data
+obis init data1 && cd data1
+echo content >> file
+obis status
diff --git a/src/python/OBis/integration_tests/02_first_commit_2_commit.sh b/src/python/OBis/integration_tests/02_first_commit_2_commit.sh
new file mode 100755
index 00000000000..5a62ded9a61
--- /dev/null
+++ b/src/python/OBis/integration_tests/02_first_commit_2_commit.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+cd $1/obis_data/data1
+
+obis config object_id /DEFAULT/DEFAULT
+obis commit -m 'commit message'
diff --git a/src/python/OBis/integration_tests/03_second_commit_1_commit.sh b/src/python/OBis/integration_tests/03_second_commit_1_commit.sh
new file mode 100755
index 00000000000..7488bbdcca8
--- /dev/null
+++ b/src/python/OBis/integration_tests/03_second_commit_1_commit.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+cd $1/obis_data/data1
+
+dd if=/dev/zero of=big_file bs=1000000 count=1
+obis commit -m 'commit message'
diff --git a/src/python/OBis/integration_tests/03_second_commit_2_git_annex_info.sh b/src/python/OBis/integration_tests/03_second_commit_2_git_annex_info.sh
new file mode 100755
index 00000000000..f3e668bce88
--- /dev/null
+++ b/src/python/OBis/integration_tests/03_second_commit_2_git_annex_info.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd $1/obis_data/data1
+
+git annex info big_file
diff --git a/src/python/OBis/integration_tests/04_second_repository.sh b/src/python/OBis/integration_tests/04_second_repository.sh
new file mode 100755
index 00000000000..903e8a64b9e
--- /dev/null
+++ b/src/python/OBis/integration_tests/04_second_repository.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+cd $1/obis_data
+obis init data2 && cd data2
+obis config object_id /DEFAULT/DEFAULT
+echo content >> file
+obis commit -m 'commit message'
diff --git a/src/python/OBis/integration_tests/05_second_external_dms.sh b/src/python/OBis/integration_tests/05_second_external_dms.sh
new file mode 100755
index 00000000000..c7c4ef87969
--- /dev/null
+++ b/src/python/OBis/integration_tests/05_second_external_dms.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+mkdir $1/obis_data_b && cd $1/obis_data_b
+obis init data3 && cd data3
+obis config object_id /DEFAULT/DEFAULT
+echo content >> file
+obis commit -m 'commit message'
diff --git a/src/python/OBis/integration_tests/06_error_on_first_commit_1_error.sh b/src/python/OBis/integration_tests/06_error_on_first_commit_1_error.sh
new file mode 100755
index 00000000000..3c58d80edce
--- /dev/null
+++ b/src/python/OBis/integration_tests/06_error_on_first_commit_1_error.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+cd $1/obis_data
+obis init data4 && cd data4
+echo content >> file
+obis commit -m 'commit message'
diff --git a/src/python/OBis/integration_tests/06_error_on_first_commit_2_status.sh b/src/python/OBis/integration_tests/06_error_on_first_commit_2_status.sh
new file mode 100755
index 00000000000..8815e2f5b74
--- /dev/null
+++ b/src/python/OBis/integration_tests/06_error_on_first_commit_2_status.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+cd $1/obis_data/data4
+obis status
diff --git a/src/python/OBis/integration_tests/06_error_on_first_commit_3_commit.sh b/src/python/OBis/integration_tests/06_error_on_first_commit_3_commit.sh
new file mode 100755
index 00000000000..6cb1ce4b2cd
--- /dev/null
+++ b/src/python/OBis/integration_tests/06_error_on_first_commit_3_commit.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd $1/obis_data/data4
+obis config object_id /DEFAULT/DEFAULT
+obis commit -m 'commit message'
diff --git a/src/python/OBis/integration_tests/07_attach_to_collection.sh b/src/python/OBis/integration_tests/07_attach_to_collection.sh
new file mode 100755
index 00000000000..3ea844b98ec
--- /dev/null
+++ b/src/python/OBis/integration_tests/07_attach_to_collection.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+cd $1/obis_data
+obis init data5 && cd data5
+echo content >> file
+obis config collection_id /DEFAULT/DEFAULT/DEFAULT
+obis commit -m 'msg'
+
diff --git a/src/python/OBis/integration_tests/08_addref_1_success.sh b/src/python/OBis/integration_tests/08_addref_1_success.sh
new file mode 100755
index 00000000000..f368719c5a2
--- /dev/null
+++ b/src/python/OBis/integration_tests/08_addref_1_success.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+cd $1/obis_data
+cp -r data1 data6
+obis addref data6
+
diff --git a/src/python/OBis/integration_tests/08_addref_2_duplicate.sh b/src/python/OBis/integration_tests/08_addref_2_duplicate.sh
new file mode 100755
index 00000000000..0429bbf6221
--- /dev/null
+++ b/src/python/OBis/integration_tests/08_addref_2_duplicate.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd $1/obis_data
+obis addref data6
+
diff --git a/src/python/OBis/integration_tests/08_addref_3_non-existent.sh b/src/python/OBis/integration_tests/08_addref_3_non-existent.sh
new file mode 100755
index 00000000000..363cc3d7027
--- /dev/null
+++ b/src/python/OBis/integration_tests/08_addref_3_non-existent.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd $1/obis_data
+obis addref data7
+
diff --git a/src/python/OBis/integration_tests/09_local_clone.sh b/src/python/OBis/integration_tests/09_local_clone.sh
new file mode 100755
index 00000000000..5e2a031aa69
--- /dev/null
+++ b/src/python/OBis/integration_tests/09_local_clone.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+data_set_id=$2
+
+cd $1/obis_data_b
+obis clone $data_set_id
+
diff --git a/src/python/OBis/integration_tests/11_init_analysis_1_external.sh b/src/python/OBis/integration_tests/11_init_analysis_1_external.sh
new file mode 100755
index 00000000000..d5855764881
--- /dev/null
+++ b/src/python/OBis/integration_tests/11_init_analysis_1_external.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+cd $1/obis_data
+obis init_analysis -p data1 analysis1
+cd analysis1
+obis config object_id /DEFAULT/DEFAULT
+echo content >> file
+obis commit -m 'commit message'
+
diff --git a/src/python/OBis/integration_tests/11_init_analysis_2_internal.sh b/src/python/OBis/integration_tests/11_init_analysis_2_internal.sh
new file mode 100755
index 00000000000..311d53e0579
--- /dev/null
+++ b/src/python/OBis/integration_tests/11_init_analysis_2_internal.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+cd $1/obis_data/data1
+obis init_analysis analysis2
+cd analysis2
+obis config object_id /DEFAULT/DEFAULT
+echo content >> file
+obis commit -m 'commit message'
+
diff --git a/src/python/OBis/integration_tests/11_init_analysis_3_git_check_ignore.sh b/src/python/OBis/integration_tests/11_init_analysis_3_git_check_ignore.sh
new file mode 100755
index 00000000000..bb597b8aae1
--- /dev/null
+++ b/src/python/OBis/integration_tests/11_init_analysis_3_git_check_ignore.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd $1/obis_data/data1
+git check-ignore analysis2
+
diff --git a/src/python/OBis/integration_tests/12_metadata_only_1_commit.sh b/src/python/OBis/integration_tests/12_metadata_only_1_commit.sh
new file mode 100755
index 00000000000..2a7d6560f3b
--- /dev/null
+++ b/src/python/OBis/integration_tests/12_metadata_only_1_commit.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+cd $1/obis_data
+obis init data7 && cd data7
+obis config object_id /DEFAULT/DEFAULT
+echo content >> file
+obis commit -m 'commit message'
+
diff --git a/src/python/OBis/integration_tests/12_metadata_only_2_metadata_commit.sh b/src/python/OBis/integration_tests/12_metadata_only_2_metadata_commit.sh
new file mode 100755
index 00000000000..086383272c5
--- /dev/null
+++ b/src/python/OBis/integration_tests/12_metadata_only_2_metadata_commit.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+cd $1/obis_data/data7
+obis config collection_id /DEFAULT/DEFAULT/DEFAULT
+obis commit -m 'commit message'
+
diff --git a/src/python/OBis/integration_tests/13_sync_1_git_commit_and_sync.sh b/src/python/OBis/integration_tests/13_sync_1_git_commit_and_sync.sh
new file mode 100755
index 00000000000..590f099d3a1
--- /dev/null
+++ b/src/python/OBis/integration_tests/13_sync_1_git_commit_and_sync.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+cd $1/obis_data/data7
+echo content >> file2
+git add file2
+git commit -m 'msg'
+obis sync
+
diff --git a/src/python/OBis/integration_tests/13_sync_2_only_sync.sh b/src/python/OBis/integration_tests/13_sync_2_only_sync.sh
new file mode 100755
index 00000000000..615a994c459
--- /dev/null
+++ b/src/python/OBis/integration_tests/13_sync_2_only_sync.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd $1/obis_data/data7
+obis sync
+
diff --git a/src/python/OBis/integration_tests/big_file b/src/python/OBis/integration_tests/big_file
new file mode 100644
index 0000000000000000000000000000000000000000..7c2624a6b9687e88178638cd95b609c329177ade
GIT binary patch
literal 1000000
zcmeIufdBvi0K=g9Qy=7oP+`D;0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
O0|pEjFkryI>%ag*ApijY

literal 0
HcmV?d00001

diff --git a/src/python/OBis/integration_tests/integration_tests.py b/src/python/OBis/integration_tests/integration_tests.py
new file mode 100644
index 00000000000..ecc169c6478
--- /dev/null
+++ b/src/python/OBis/integration_tests/integration_tests.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import json
+import subprocess
+import socket
+
+
+def run(cmd, tmpdir="", params=[]):
+    completed_process = subprocess.run([cmd, tmpdir] + params, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    result = ''
+    if completed_process.stderr:
+        result += completed_process.stderr.decode('utf-8').strip()
+    if completed_process.stdout:
+        result += completed_process.stdout.decode('utf-8').strip()
+    print('-------------------' + cmd + '------------------- ' + str(tmpdir))
+    print(result)
+    return result
+
+
+def test_obis(tmpdir):
+    # 1. Global configuration
+    result = run('./01_global_config.sh', tmpdir)
+    config = json.loads(run('./00_get_config_global.sh'))
+    assert config['openbis_url'] == 'https://localhost:8443'
+    assert config['user'] == 'admin'
+    assert config['data_set_type'] == 'UNKNOWN'
+    assert config['verify_certificates'] == False
+
+    # 2. First commit
+    result = run('./02_first_commit_1_create_repository.sh', tmpdir)
+    assert '?? .obis/config.json' in result
+    assert '?? file' in result
+    result = run('./02_first_commit_2_commit.sh', tmpdir)
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1'))
+    assert config['external_dms_id'].startswith('ADMIN-' + socket.gethostname().upper())
+    assert len(config['repository_id']) == 36
+    assert "Created data set {}.".format(config['data_set_id']) in result
+
+    # 3. Second commit
+    config_before = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1'))
+    result = run('./03_second_commit_1_commit.sh', tmpdir)
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1'))
+    assert config['data_set_id'] != config_before['data_set_id']
+    assert config['external_dms_id'].startswith('ADMIN-' + socket.gethostname().upper())
+    assert config['external_dms_id'] == config_before['external_dms_id']
+    assert config['repository_id'] == config_before['repository_id']
+    assert "Created data set {}.".format(config['data_set_id']) in result
+    result = run('./03_second_commit_2_git_annex_info.sh', tmpdir)
+    assert 'file: big_file' in result
+    assert 'key: SHA256E-s1000000--d29751f2649b32ff572b5e0a9f541ea660a50f94ff0beedfb0b692b924cc8025' in result
+    assert 'present: true' in result
+
+    # 4. Second repository
+    result = run('./04_second_repository.sh', tmpdir)
+    config_data1 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1'))
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data2'))
+    assert config['external_dms_id'].startswith('ADMIN-' + socket.gethostname().upper())
+    assert config['external_dms_id'] == config_data1['external_dms_id']
+    assert len(config['repository_id']) == 36
+    assert config['repository_id'] != config_data1['repository_id']
+    assert "Created data set {}.".format(config['data_set_id']) in result
+
+    # 5. Second external dms
+    result = run('./05_second_external_dms.sh', tmpdir)
+    config_data1 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1'))
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data_b/data3'))
+    assert config['external_dms_id'].startswith('ADMIN-' + socket.gethostname().upper())
+    assert config['external_dms_id'] != config_data1['external_dms_id']
+    assert len(config['repository_id']) == 36
+    assert config['repository_id'] != config_data1['repository_id']
+    assert "Created data set {}.".format(config['data_set_id']) in result
+
+    # 6. Error on first commit
+    result = run('./06_error_on_first_commit_1_error.sh', tmpdir)
+    assert 'Missing configuration settings for [\'object_id\', \'collection_id\'].' in result
+    result = run('./06_error_on_first_commit_2_status.sh', tmpdir)
+    assert '?? file' in result
+    result = run('./06_error_on_first_commit_3_commit.sh', tmpdir)
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data4'))
+    assert "Created data set {}.".format(config['data_set_id']) in result
+
+    # 7. Attach data set to a collection
+    result = run('./07_attach_to_collection.sh', tmpdir)
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data5'))
+    assert config['external_dms_id'].startswith('ADMIN-' + socket.gethostname().upper())
+    assert len(config['repository_id']) == 36
+    assert "Created data set {}.".format(config['data_set_id']) in result
+
+    # 8. Addref
+    result = run('./08_addref_1_success.sh', tmpdir)
+    config_data1 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1'))
+    config_data6 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data6'))
+    assert config_data6 == config_data1
+    result = run('./08_addref_2_duplicate.sh', tmpdir)
+    assert 'DataSet already exists in the database' in result
+    result = run('./08_addref_3_non-existent.sh', tmpdir)
+    assert 'Invalid value' in result
+
+    # 9. Local clone
+    config_data2 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data2'))
+    result = run('./09_local_clone.sh', tmpdir, [config_data2['data_set_id']])
+    config_data2_clone = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data_b/data2'))
+    assert config_data2_clone['external_dms_id'].startswith('ADMIN-' + socket.gethostname().upper())
+    assert config_data2_clone['external_dms_id'] != config_data2['external_dms_id']
+    del config_data2['external_dms_id']
+    del config_data2_clone['external_dms_id']
+    assert config_data2_clone == config_data2
+
+    # 11. Init analysis
+    result = run('./11_init_analysis_1_external.sh', tmpdir, [config_data2['data_set_id']])
+    config_data1 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1'))
+    config_analysis1 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/analysis1'))
+    assert "Created data set {}.".format(config_analysis1['data_set_id']) in result
+    assert len(config_analysis1['repository_id']) == 36
+    assert config_analysis1['repository_id'] != config_data1['repository_id']
+    assert config_analysis1['data_set_id'] != config_data1['data_set_id']
+    result = run('./11_init_analysis_2_internal.sh', tmpdir)
+    config_analysis2 = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data1/analysis2'))
+    assert "Created data set {}.".format(config_analysis2['data_set_id']) in result
+    assert len(config_analysis2['repository_id']) == 36
+    assert config_analysis2['repository_id'] != config_data1['repository_id']
+    assert config_analysis2['data_set_id'] != config_data1['data_set_id']
+    result = run('./11_init_analysis_3_git_check_ignore.sh', tmpdir)
+    assert 'analysis2' in result
+
+    # 12. Metadata only commit
+    result = run('./12_metadata_only_1_commit.sh', tmpdir)
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data7'))
+    assert "Created data set {}.".format(config['data_set_id']) in result
+    result = run('./12_metadata_only_2_metadata_commit.sh', tmpdir)
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data7'))
+    assert "Created data set {}.".format(config['data_set_id']) in result
+
+    # 13. obis sync
+    result = run('./13_sync_1_git_commit_and_sync.sh', tmpdir)
+    config = json.loads(run('./00_get_config.sh', tmpdir + '/obis_data/data7'))
+    assert "Created data set {}.".format(config['data_set_id']) in result
+    result = run('./13_sync_2_only_sync.sh', tmpdir)
+    assert 'Nothing to sync' in result
-- 
GitLab