| Index: appengine/auth_service/importer_test.py
|
| diff --git a/appengine/auth_service/importer_test.py b/appengine/auth_service/importer_test.py
|
| index 09a1df1517513bfe6d86c34f5092bf085e24cdef..91ab55a57c1f1fc9c293b4bad4a5b8f391c2e569 100755
|
| --- a/appengine/auth_service/importer_test.py
|
| +++ b/appengine/auth_service/importer_test.py
|
| @@ -11,6 +11,7 @@ import StringIO
|
| import sys
|
| import tarfile
|
| import tempfile
|
| +import textwrap
|
| import unittest
|
|
|
| APP_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
| @@ -25,6 +26,10 @@ from components import auth_testing
|
| from components.auth import model
|
| from test_support import test_case
|
|
|
| +# Must be after 'components' import, since they add it to sys.path.
|
| +from google import protobuf
|
| +
|
| +from proto import config_pb2
|
| import importer
|
|
|
|
|
| @@ -69,6 +74,13 @@ def fetch_groups():
|
| return {x.key.id(): x.to_dict() for x in model.AuthGroup.query()}
|
|
|
|
|
| +def put_config(config_proto, config):
|
| + importer.GroupImporterConfig(
|
| + key=importer.config_key(),
|
| + config_proto=config_proto,
|
| + config=config).put()
|
| +
|
| +
|
| class ImporterTest(test_case.TestCase):
|
| def setUp(self):
|
| super(ImporterTest, self).setUp()
|
| @@ -223,30 +235,26 @@ class ImporterTest(test_case.TestCase):
|
| service_id = auth.Identity.from_bytes('service:some-service')
|
| self.mock(auth, 'get_service_self_identity', lambda: service_id)
|
|
|
| - importer.write_config([
|
| - {
|
| - 'domain': 'example.com',
|
| - 'format': 'tarball',
|
| - 'groups': ['ldap/new'],
|
| - 'oauth_scopes': ['scope'],
|
| - 'systems': ['ldap'],
|
| - 'url': 'https://fake_tarball',
|
| - },
|
| - {
|
| - 'format': 'plainlist',
|
| - 'group': 'external_1',
|
| - 'oauth_scopes': ['scope'],
|
| - 'url': 'https://fake_external_1',
|
| - },
|
| - {
|
| - 'description': 'Some external group',
|
| - 'domain': 'example.com',
|
| - 'format': 'plainlist',
|
| - 'group': 'external_2',
|
| - 'oauth_scopes': ['scope'],
|
| - 'url': 'https://fake_external_2',
|
| - },
|
| - ])
|
| + importer.write_config_text("""
|
| + tarball {
|
| + domain: "example.com"
|
| + groups: "ldap/new"
|
| + oauth_scopes: "scope"
|
| + systems: "ldap"
|
| + url: "https://fake_tarball"
|
| + }
|
| + plainlist {
|
| + group: "external_1"
|
| + oauth_scopes: "scope"
|
| + url: "https://fake_external_1"
|
| + }
|
| + plainlist {
|
| + domain: "example.com"
|
| + group: "external_2"
|
| + oauth_scopes: "scope"
|
| + url: "https://fake_external_2"
|
| + }
|
| + """)
|
|
|
| self.mock_urlfetch({
|
| 'https://fake_tarball': build_tar_gz({
|
| @@ -303,6 +311,64 @@ class ImporterTest(test_case.TestCase):
|
| }
|
| self.assertEqual(expected_groups, fetch_groups())
|
|
|
| + def test_read_config_text(self):
|
| + # Empty.
|
| + put_config('', '')
|
| + self.assertEqual('', importer.read_config_text())
|
| + # Good.
|
| + put_config('tarball{}', '')
|
| + self.assertEqual('tarball{}', importer.read_config_text())
|
| + # Legacy.
|
| + put_config('', '[{"url":"12"}]')
|
| + self.assertEqual('tarball {\n url: "12"\n}\n', importer.read_config_text())
|
| +
|
| + def test_write_config_text(self):
|
| + put_config('', 'legacy')
|
| + importer.write_config_text('tarball{url:"12"\nsystems:"12"}')
|
| + e = importer.config_key().get()
|
| + self.assertEqual('legacy', e.config)
|
| + self.assertEqual('tarball{url:"12"\nsystems:"12"}', e.config_proto)
|
| +
|
| + def test_legacy_json_config_to_proto(self):
|
| + msg = importer.legacy_json_config_to_proto("""
|
| + [
|
| + {
|
| + "url": "https://example.com/all_users",
|
| + "group": "plain-list",
|
| + "format": "plainlist"
|
| + },
|
| + {
|
| + "url": "https://example.com/tarball.tar.gz",
|
| + "domain": "example.com",
|
| + "oauth_scopes": [
|
| + "oauth-scope"
|
| + ],
|
| + "systems": [
|
| + "ldap"
|
| + ],
|
| + "groups": [
|
| + "ldap/a",
|
| + "ldap/b"
|
| + ]
|
| + }
|
| + ]
|
| + """)
|
| + expected = textwrap.dedent("""
|
| + tarball {
|
| + url: "https://example.com/tarball.tar.gz"
|
| + oauth_scopes: "oauth-scope"
|
| + domain: "example.com"
|
| + systems: "ldap"
|
| + groups: "ldap/a"
|
| + groups: "ldap/b"
|
| + }
|
| + plainlist {
|
| + url: "https://example.com/all_users"
|
| + group: "plain-list"
|
| + }
|
| + """.lstrip('\n'))
|
| + self.assertEqual(expected, protobuf.text_format.MessageToString(msg))
|
| +
|
|
|
| if __name__ == '__main__':
|
| if '-v' in sys.argv:
|
|
|