def get(self): importer.import_external_groups()
def test_import_external_groups(self): self.mock_now(datetime.datetime(2010, 1, 2, 3, 4, 5, 6)) importer.write_config(""" 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({ 'ldap/new': 'a\nb', }), 'https://fake_external_1': '[email protected]\[email protected]\n', 'https://fake_external_2': '123\n456', }) # Should be deleted during import, since not in a imported bundle. group('ldap/deleted', []).put() # Should be updated. group('external/external_1', ['x', 'y']).put() # Should be removed, since not in list of external groups. group('external/deleted', []).put() # Run the import. initial_auth_db_rev = model.get_auth_db_revision() importer.import_external_groups() self.assertEqual(initial_auth_db_rev + 1, model.get_auth_db_revision()) # Verify final state. expected_groups = { 'ldap/new': { 'auth_db_rev': 1, 'auth_db_prev_rev': None, 'created_by': model.get_service_self_identity(), 'created_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'description': u'', 'globs': [], 'members': [ident('a'), ident('b')], 'modified_by': model.get_service_self_identity(), 'modified_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'nested': [], 'owners': u'administrators', }, 'external/external_1': { 'auth_db_rev': 1, 'auth_db_prev_rev': None, 'created_by': ident('admin'), 'created_ts': datetime.datetime(1999, 1, 2, 3, 4, 5, 6), 'description': u'', 'globs': [], 'members': [ident('*****@*****.**'), ident('*****@*****.**')], 'modified_by': model.get_service_self_identity(), 'modified_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'nested': [], 'owners': u'administrators', }, 'external/external_2': { 'auth_db_rev': 1, 'auth_db_prev_rev': None, 'created_by': model.get_service_self_identity(), 'created_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'description': u'', 'globs': [], 'members': [ident('123'), ident('456')], 'modified_by': model.get_service_self_identity(), 'modified_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'nested': [], 'owners': u'administrators', }, } self.assertEqual(expected_groups, fetch_groups())
def get(self): # Let exceptions to fall through and cause HTTP 500 and nice stack trace. importer.import_external_groups()
def test_import_external_groups(self): self.mock_now(datetime.datetime(2010, 1, 2, 3, 4, 5, 6)) 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', }, ]) self.mock_urlfetch({ 'https://fake_tarball': build_tar_gz({ 'ldap/new': 'a\nb', }), 'https://fake_external_1': '[email protected]\[email protected]\n', 'https://fake_external_2': '123\n456', }) # Should be deleted during import, since not in a imported bundle. group('ldap/deleted', []).put() # Should be updated. group('external/external_1', ['x', 'y']).put() # Should be removed, since not in list of external groups. group('external/deleted', []).put() # Run the import. initial_auth_db_rev = model.get_auth_db_revision() importer.import_external_groups() self.assertEqual(initial_auth_db_rev + 1, model.get_auth_db_revision()) # Verify final state. expected_groups = { 'ldap/new': { 'created_by': service_id, 'created_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'description': u'', 'globs': [], 'members': [ident('a'), ident('b')], 'modified_by': service_id, 'modified_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'nested': [], }, 'external/external_1': { 'created_by': ident('admin'), 'created_ts': datetime.datetime(1999, 1, 2, 3, 4, 5, 6), 'description': u'', 'globs': [], 'members': [ident('*****@*****.**'), ident('*****@*****.**')], 'modified_by': service_id, 'modified_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'nested': [], }, 'external/external_2': { 'created_by': service_id, 'created_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'description': u'', 'globs': [], 'members': [ident('123'), ident('456')], 'modified_by': service_id, 'modified_ts': datetime.datetime(2010, 1, 2, 3, 4, 5, 6), 'nested': [], }, } self.assertEqual(expected_groups, fetch_groups())