コード例 #1
0
 def get(self):
   importer.import_external_groups()
コード例 #2
0
    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())
コード例 #3
0
ファイル: handlers_backend.py プロジェクト: nodirt/luci-py
 def get(self):
   # Let exceptions to fall through and cause HTTP 500 and nice stack trace.
   importer.import_external_groups()
コード例 #4
0
  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())
コード例 #5
0
ファイル: importer_test.py プロジェクト: nodirt/luci-py
  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())
コード例 #6
0
ファイル: importer_test.py プロジェクト: pombreda/luci-py
    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())
コード例 #7
0
ファイル: handlers_backend.py プロジェクト: pombreda/luci-py
 def get(self):
     # Let exceptions to fall through and cause HTTP 500 and nice stack trace.
     importer.import_external_groups()