def __init__(self, caller_options): caller_config = user_sync.config.DictConfig('%s configuration' % self.name, caller_options) builder = user_sync.config.OptionsBuilder(caller_config) builder.set_string_value('group_filter_format', '{group}') builder.set_string_value('all_users_filter', 'user.status == "ACTIVE"') builder.set_string_value('string_encoding', 'utf8') builder.set_string_value('user_identity_type_format', None) builder.set_string_value('user_email_format', six.text_type('{email}')) builder.set_string_value('user_username_format', None) builder.set_string_value('user_domain_format', None) builder.set_string_value('user_given_name_format', six.text_type('{firstName}')) builder.set_string_value('user_surname_format', six.text_type('{lastName}')) builder.set_string_value('user_country_code_format', six.text_type('{countryCode}')) builder.set_string_value('user_identity_type', None) builder.set_string_value('logger_name', self.name) host = builder.require_string_value('host') api_token = builder.require_string_value('api_token') options = builder.get_options() OKTAValueFormatter.encoding = options['string_encoding'] self.user_identity_type = user_sync.identity_type.parse_identity_type(options['user_identity_type']) self.user_identity_type_formatter = OKTAValueFormatter(options['user_identity_type_format']) self.user_email_formatter = OKTAValueFormatter(options['user_email_format']) self.user_username_formatter = OKTAValueFormatter(options['user_username_format']) self.user_domain_formatter = OKTAValueFormatter(options['user_domain_format']) self.user_given_name_formatter = OKTAValueFormatter(options['user_given_name_format']) self.user_surname_formatter = OKTAValueFormatter(options['user_surname_format']) self.user_country_code_formatter = OKTAValueFormatter(options['user_country_code_format']) self.users_client = None self.groups_client = None self.logger = logger = user_sync.connector.helper.create_logger(options) self.user_identity_type = user_sync.identity_type.parse_identity_type(options['user_identity_type']) self.options = options caller_config.report_unused_values(logger) if not host.startswith('https://'): if "://" in host: raise AssertionException("Okta protocol must be https") host = "https://" + host self.user_by_uid = {} logger.debug('%s initialized with options: %s', self.name, options) logger.info('Connecting to: %s', host) try: self.users_client = okta.UsersClient(host, api_token) self.groups_client = okta.UserGroupsClient(host, api_token) except OktaError as e: raise AssertionException("Error connecting to Okta: %s" % e) logger.info('Connected')
def setUp(self): self.orig_directory_init = OktaDirectoryConnector.__init__ OktaDirectoryConnector.__init__ = mock.Mock(return_value=None) directory = OktaDirectoryConnector({}) directory.options = {'all_users_filter': None, 'group_filter_format': '{group}'} directory.logger = mock.create_autospec(logging.Logger) directory.groups_client = okta.UserGroupsClient('example.com', 'xyz') self.directory = directory
def setUp(self): class MockResponse: def __init__(self, status_code, data): self.status_code = status_code self.text = json.dumps(data) self.links = {} self.mock_response = MockResponse directory = OktaDirectoryConnector({'host': 'okta-test.com', 'api_token': 'abcdefghijklmnopqrstuvwxyz'}) directory.logger = mock.create_autospec(logging.Logger) directory.groups_client = okta.UserGroupsClient('example.com', 'xyz') directory.user_identity_type = 'enterpriseID' self.directory = directory
def setUp(self): class MockResponse: def __init__(self, status_code, data): self.status_code = status_code self.text = json.dumps(data) self.links = {} self.mock_response = MockResponse self.orig_directory_init = OktaDirectoryConnector.__init__ OktaDirectoryConnector.__init__ = mock.Mock(return_value=None) directory = OktaDirectoryConnector({}) directory.logger = mock.create_autospec(logging.Logger) directory.groups_client = okta.UserGroupsClient('example.com', 'xyz') directory.user_identity_type = 'enterpriseID' self.directory = directory
def setUp(self): class MockResponse: def __init__(self, status_code, data): self.status_code = status_code self.text = json.dumps(data) self.mock_response = MockResponse self.orig_directory_init = OktaDirectoryConnector.__init__ OktaDirectoryConnector.__init__ = mock.Mock(return_value=None) directory = OktaDirectoryConnector({}) directory.options = {'all_users_filter': None, 'group_filter_format': '{group}'} directory.logger = mock.create_autospec(logging.Logger) directory.groups_client = okta.UserGroupsClient('example.com', 'xyz') self.directory = directory
def connect_okta(config): url = "https://" + config['okta_url'] api_token = config['api_token'] conn = okta.UserGroupsClient(url, api_token) return conn