diff --git a/ckanext/odsh/tests/test_validation.py b/ckanext/odsh/tests/test_validation.py
new file mode 100644
index 0000000000000000000000000000000000000000..1725df0be8bb2057ba1a9a82e3d0e4a3b57932b4
--- /dev/null
+++ b/ckanext/odsh/tests/test_validation.py
@@ -0,0 +1,69 @@
+import sys
+import json
+from nose.tools import *
+from mock import MagicMock, Mock, patch
+
+
+def mockInvalid(*args, **kwargs):
+    return Exception(*args, **kwargs)
+
+
+def mock_(s):
+    return s
+
+
+sys.modules['ckan'] = MagicMock()
+sys.modules['ckan.plugins'] = MagicMock()
+sys.modules['ckan.plugins.toolkit'] = MagicMock()
+sys.modules['ckan.model'] = MagicMock()
+sys.modules['ckan.lib'] = MagicMock()
+sys.modules['ckan.lib.navl'] = MagicMock()
+sys.modules['ckan.lib.navl.dictization_functions'] = MagicMock()
+sys.modules['pylons'] = MagicMock()
+
+import ckan.plugins.toolkit as toolkit
+toolkit.Invalid = mockInvalid
+toolkit._ = mock_
+
+import pylons
+
+from ckanext.odsh.validation import *
+
+
+def test_get_validators():
+    assert get_validators()
+
+
+def test_tag_string_convert():
+    # arrange
+    data = {'tag_string': 'tag1,tag2'}
+    # act
+    tag_string_convert('tag_string', data, {}, None)
+    # assert
+    assert data[('tags', 0, 'name')] == 'tag1'
+    assert data[('tags', 1, 'name')] == 'tag2'
+
+
+@raises(Exception)
+def test_tag_name_validator_invalid():
+    tag_name_validator('&', None)
+
+
+def test_tag_name_validator_valid():
+    tag_name_validator('valid', None)
+
+
+@patch('urllib2.urlopen')
+@patch('pylons.config.get', side_effect='foo')
+@patch('csv.reader', side_effect=[[['uri', 'text', json.dumps({"geometry":0})]]])
+def test_known_spatial_uri(url_mock, get_mock, csv_mock):
+    # arrange
+    data = {('extras', 0, 'key'): 'spatial_uri',
+            ('extras', 0, 'value'): 'uri'}
+    # act
+    known_spatial_uri('spatial_uri', data, {}, None)
+    # assert
+    assert data[('extras', 1, 'key')] == 'spatial_text'
+    assert data[('extras', 1, 'value')] == 'text'
+    assert data[('extras', 2, 'key')] == 'spatial'
+    assert data[('extras', 2, 'value')] == '0'