-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4 from NuCivic/circle_ci_setup
Circle setup + Test suite
- Loading branch information
Showing
11 changed files
with
335 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
*.tar.gz | ||
*.pyc | ||
*.csv | ||
*.sqlite |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
machine: | ||
python: | ||
version: '2.7.10' | ||
php: | ||
version: '5.5.11' | ||
environment: | ||
DATABASE_URL: mysql://ubuntu:@127.0.0.1:3306/circle_test | ||
COMPOSER_PATH: $HOME/.config/composer/vendor/bin | ||
PATH: $COMPOSER_PATH:$PATH | ||
DKAN_URI: http://127.0.0.1:8888 | ||
checkout: | ||
post: | ||
- rm -rf ~/.composer | ||
dependencies: | ||
pre: | ||
- 'pip install -r requirements.txt' | ||
override: | ||
- 'bash dkan-archive-init.sh --deps --build=$DATABASE_URL' | ||
- 'cd ../dkan/ && ahoy drush --yes runserver :8888': | ||
background: true | ||
- sleep 10 | ||
test: | ||
override: | ||
- 'nosetests --verbose' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
|
||
# DKAN branch or tag to use. | ||
DKAN_VERSION="7.x-1.x" | ||
|
||
# Try to grab archived dkan to speed up bootstrap. | ||
URL="https://s3-us-west-2.amazonaws.com/nucivic-data-dkan-archives/dkan-$DKAN_VERSION.tar.gz" | ||
wget -q -c "$URL" | ||
mv dkan-$DKAN_VERSION.tar.gz ../ | ||
cd .. | ||
tar -xzf dkan-$DKAN_VERSION.tar.gz | ||
rm -rf dkan/docroot/sites/default/settings.php | ||
cd dkan | ||
bash dkan/dkan-init.sh dkan --skip-init --deps | ||
ahoy drush "-y --verbose si minimal --sites-subdir=default --account-pass='admin' --db-url=$DATABASE_URL install_configure_form.update_status_module=\"'array\(FALSE,FALSE\)'\"" | ||
ahoy drush sql-drop -y && ahoy dkan sqlc < backups/last_install.sql && \ | ||
echo "Installed dkan from backup" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,178 @@ | ||
import unittest | ||
import os, unittest | ||
from client import DatasetAPI | ||
|
||
|
||
class TestDatasetAPI(unittest.TestCase): | ||
def setUp(self): | ||
# Instantiate client and login | ||
pass | ||
uri = os.environ.get('DKAN_URI', False) | ||
user = os.environ.get('DKAN_USER', 'admin') | ||
password = os.environ.get('DKAN_PASSWORD', 'admin') | ||
# Fail if DKAN_URI is not set | ||
if not uri: | ||
self.skipTest(TestDatasetAPI) | ||
self.api = DatasetAPI(uri, user, password) | ||
self.cleanup = [] | ||
|
||
def tearDown(self): | ||
self.cleanup = list(set(self.cleanup)) | ||
for node in self.cleanup: | ||
delete = self.api.node('delete', node_id=node) | ||
self.assertEqual(delete.status_code, 200) | ||
self.cleanup = [] | ||
|
||
def _get_nodes_of_type(self, node_type): | ||
payload = { | ||
'parameters[type]': node_type | ||
} | ||
r = self.api.node(params=payload) | ||
self.assertEqual(r.status_code, 200) | ||
return r.json() | ||
|
||
def _get_nodes_types(self, nodes): | ||
types = [dataset['type'] for dataset in nodes] | ||
types = list(set(types)) | ||
return types | ||
|
||
def _test_list_nodes(self, node_type): | ||
nodes = self._get_nodes_of_type(node_type) | ||
types = self._get_nodes_types(nodes) | ||
# Test for dataset type | ||
self.assertEqual(types[0], node_type) | ||
self.assertEqual(len(types), 1) | ||
|
||
def test_list_datasets(self): | ||
# List existing datasets | ||
pass | ||
self._test_list_nodes('dataset') | ||
|
||
def test_list_resources(self): | ||
# List existing resources | ||
pass | ||
self._test_list_nodes('resource') | ||
|
||
def _test_create_node(self, data): | ||
node_type = data['type'] | ||
nodes = self._get_nodes_of_type(node_type) | ||
original_count = len(nodes) | ||
# Create Node | ||
node = self.api.node('create', data=data) | ||
self.assertEqual(node.status_code, 200) | ||
node = node.json() | ||
self.cleanup.append(node['nid']) | ||
# Verify count | ||
nodes = self._get_nodes_of_type(node_type) | ||
new_count = len(nodes) | ||
self.assertEqual(new_count, original_count + 1) | ||
return node | ||
|
||
def test_create_dataset(self): | ||
# Create Dataset | ||
pass | ||
data = { | ||
'title': 'Test Dataset', | ||
'type': 'dataset', | ||
'body': [ | ||
{ | ||
'value': "Body for test Dataset", | ||
}, | ||
] | ||
} | ||
self._test_create_node(data) | ||
|
||
def test_create_resource(self): | ||
# Create Resource | ||
pass | ||
data = { | ||
'title': 'Test Resource', | ||
'type': 'resource', | ||
'body': [ | ||
{ | ||
'value': "Body for test Resource", | ||
}, | ||
] | ||
} | ||
self._test_create_node(data) | ||
|
||
def _test_update_node(self, data): | ||
original_node = self._test_create_node(data) | ||
original_node = self.api.node('retrieve', node_id=original_node['nid']).json() | ||
update = { | ||
'title': '%s updated' % data['title'], | ||
} | ||
self.assertTrue('nid' in original_node.keys()) | ||
node = self.api.node('update', node_id=original_node['nid'], data=update) | ||
self.assertEqual(node.status_code, 200) | ||
node = self.api.node('retrieve', node_id=original_node['nid']).json() | ||
self.assertEqual('%s updated' % original_node['title'], node['title']) | ||
|
||
def test_update_dataset(self): | ||
# Update Dataset | ||
pass | ||
data = { | ||
'title': 'Test Dataset to be updated', | ||
'type': 'dataset', | ||
'body': [ | ||
{ | ||
'value': "Body for test Dataset", | ||
}, | ||
] | ||
} | ||
self._test_update_node(data) | ||
|
||
def test_update_resource(self): | ||
# Update Resource | ||
pass | ||
data = { | ||
'title': 'Test Resource to be updated', | ||
'type': 'resource', | ||
'body': [ | ||
{ | ||
'value': "Body for test Resource", | ||
}, | ||
] | ||
} | ||
self._test_update_node(data) | ||
|
||
def test_attach_file_to_resource(self): | ||
# Attach a test file to an existing resource | ||
pass | ||
csv = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', | ||
'examples', 'data', 'tension_sample_data.csv') | ||
data = { | ||
'title': 'Test Resource to receive a file', | ||
'type': 'resource', | ||
'body': [ | ||
{ | ||
'value': "Body for test Resource", | ||
}, | ||
] | ||
} | ||
resource = self._test_create_node(data) | ||
resource = self.api.node('retrieve', node_id=resource['nid']).json() | ||
r = self.api.attach_file_to_node(csv, resource['nid'], 'field_upload') | ||
self.assertEqual(r.status_code, 200) | ||
resource = self.api.node('retrieve', node_id=resource['nid']).json() | ||
filename = resource['field_upload']['und'][0]['filename'] | ||
self.assertTrue(filename=='tension_sample_data.csv') | ||
|
||
def _test_delete_node(self, data): | ||
count = len(self._get_nodes_of_type(data['type'])) | ||
node = self._test_create_node(data) | ||
self.assertTrue('nid' in node.keys()) | ||
delete = self.api.node('delete', node_id=node['nid']) | ||
self.assertEqual(delete.status_code, 200) | ||
self.cleanup.remove(node['nid']) | ||
new_count = len(self._get_nodes_of_type(data['type'])) | ||
self.assertEqual(count, new_count) | ||
|
||
def test_delete_dataset(self): | ||
# Delete Dataset | ||
pass | ||
data = { | ||
'title': 'Test Dataset to be deleted', | ||
'type': 'dataset', | ||
'body': [ | ||
{ | ||
'value': "Body for test Dataset", | ||
}, | ||
] | ||
} | ||
self._test_delete_node(data) | ||
|
||
def test_delete_resource(self): | ||
# Delete Resource | ||
pass | ||
data = { | ||
'title': 'Test Resource to be deleted', | ||
'type': 'resource', | ||
'body': [ | ||
{ | ||
'value': "Body for test Resource", | ||
}, | ||
] | ||
} | ||
self._test_delete_node(data) | ||
|
||
if __name__ == '__main__': | ||
unittest.main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,26 @@ | ||
import sys | ||
sys.path.append('..') | ||
|
||
import os | ||
import json | ||
from dkan.client import DatasetAPI | ||
|
||
DKAN_URI = 'http://docker:32782' | ||
RESOURCE_ID = 5 | ||
CSV = os.path.join('/Users/teofilosibileau/Downloads', 'CSV.csv') | ||
|
||
# Make the api authenticate properly | ||
api = DatasetAPI( | ||
DKAN_URI, | ||
'admin', | ||
'admin', | ||
True | ||
) | ||
uri = os.environ.get('DKAN_URI', False) | ||
user = os.environ.get('DKAN_USER', 'admin') | ||
password = os.environ.get('DKAN_PASSWORD', 'admin') | ||
|
||
# Attach the file to the resource node | ||
r = api.attach_file_to_node(CSV, RESOURCE_ID) | ||
print r.status_code | ||
print r. text | ||
if uri: | ||
api = DatasetAPI(uri, user, password, True) | ||
payload = {'parameters[type]': 'resource'} | ||
nodes = api.node(params=payload).json() | ||
resource = nodes[0] | ||
print resource | ||
csv = os.path.join('.', 'data', 'tension_sample_data.csv') | ||
# Attach the file to the resource node | ||
r = api.attach_file_to_node(csv, resource['nid'], 'field_upload') | ||
print r.status_code | ||
print r. text | ||
resource = api.node('retrieve', node_id=resource['nid']) | ||
print resource.json()['field_upload'] | ||
else: | ||
print 'Please Set the dkan URL as an ENVIRONMENT variable' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import sys | ||
sys.path.append('..') | ||
|
||
import os | ||
import json | ||
from dkan.client import DatasetAPI | ||
|
||
uri = os.environ.get('DKAN_URI', False) | ||
user = os.environ.get('DKAN_USER', 'admin') | ||
password = os.environ.get('DKAN_PASSWORD', 'admin') | ||
|
||
if uri: | ||
api = DatasetAPI(uri, user, password, True) | ||
data = { | ||
'title': 'Test Dataset', | ||
'type': 'dataset' | ||
} | ||
dataset = api.node('create', data=data) | ||
print dataset.status_code | ||
print dataset.text | ||
else: | ||
print 'Please Set the dkan URL as an ENVIRONMENT variable' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
tension,current,timestamp | ||
220,10,2016-05-27T19:56:41.870Z | ||
50,15,2016-05-27T19:51:21.794Z | ||
230,10,2016-05-27T19:56:41.870Z |
Oops, something went wrong.