class UsersClientTest(unittest.TestCase): def setUp(self): self.client = UsersClient(os.environ.get('OKTA_TEST_URL'), os.environ.get('OKTA_TEST_KEY')) def test_paging(self): users = self.client.get_paged_users(limit=1) first_page_hit = subsequent_page_hit = False for user in users.result: first_page_hit = True while not users.is_last_page(): users = self.client.get_paged_users(url=users.next_url) for user in users.result: subsequent_page_hit = True self.assertTrue(first_page_hit and subsequent_page_hit, "The first and subsequent pages weren't hit") def test_single_user(self): user = User(login='******' + str(random.random()) + '@asdf.com', email='*****@*****.**', firstName='Joe', lastName='Schmoe') user = self.client.create_user(user, activate=False) self.assertEqual(user.status, "STAGED", "User should be staged") user = User(login='******' + str(random.random()) + '@asdf.com', email='*****@*****.**', firstName='Joe', lastName='Schmoe') user = self.client.create_user(user, activate=True) self.assertEqual(user.status, "PROVISIONED", "User should be provisioned")
class UserGroupsClientTest(unittest.TestCase): def setUp(self): self.client = UserGroupsClient(os.environ.get('OKTA_TEST_URL'), os.environ.get('OKTA_TEST_KEY')) self.user_client = UsersClient(os.environ.get('OKTA_TEST_URL'), os.environ.get('OKTA_TEST_KEY')) def test_single_group(self): name = 'random_group_' + str(random.random()) group = UserGroup(name=name, description='something interesting here') group = self.client.create_group(group) self.assertEqual(group.profile.name, name, "The name for the group wasn't set properly") def test_add_user_to_group(self): # Create group name = 'random_group_' + str(random.random()) group = UserGroup(name=name, description='something interesting here') group = self.client.create_group(group) # Create user user = User(login='******' + str(random.random()) + '@asdf.com', email='*****@*****.**', firstName='Joe', lastName='Schmoe') user = self.user_client.create_user(user, activate=False) self.client.add_user_to_group(group, user)
class UserGroupsClientTest(unittest.TestCase): def setUp(self): self.client = UserGroupsClient("http://okta.mock.invalid", "mock-api-key") self.user_client = UsersClient("http://okta.mock.invalid", "mock-api-key") @requests_mock.Mocker() def test_single_group(self, m): name = 'random_group_' + str(random.random()) m.register_uri("POST", "http://okta.mock.invalid/api/v1/groups/", json={ "id": "g0001mock", "profile": { "name": name, "description": "something interesting here" }, }) group = UserGroup(name=name, description="something interesting here") group = self.client.create_group(group) self.assertEqual(group.profile.name, name, "The name for the group wasn't set properly") @requests_mock.Mocker() def test_add_user_to_group(self, m): # Create group m.register_uri("POST", "http://okta.mock.invalid/api/v1/groups/", json={"id": "g0001mock"}) name = 'random_group_' + str(random.random()) group = UserGroup(name=name, description='something interesting here') group = self.client.create_group(group) # Create user m.register_uri( "POST", "http://okta.mock.invalid/api/v1/users/?activate=false", json={ "id": "u0001mock", "status": "STAGED", }, ) user = User(login='******' + str(random.random()) + '@asdf.com', email='*****@*****.**', firstName='Joe', lastName='Schmoe') user = self.user_client.create_user(user, activate=False) m.register_uri( "PUT", "http://okta.mock.invalid/api/v1/groups/g0001mock/users/u0001mock", json={}) self.client.add_user_to_group(group, user)
def create_okta_user(data): users_client = UsersClient(config.org_url, config.token) okta_user = User(login=data['email'], email=data['email'], firstName=data['first_name'], lastName=data['last_name'], password=data['password']) try: return users_client.create_user(okta_user, activate=False).id except Exception as e: raise e
class UsersClientTest(unittest.TestCase): def setUp(self): self.client = UsersClient("http://okta.mock.invalid", "mock-api-key") @requests_mock.Mocker() def test_paging(self, m): m.register_uri( "GET", "http://okta.mock.invalid/api/v1/users/?limit=1", json=[ { "id": "u0001mock", "status": "ACTIVE" }, ], headers={ "Link": '<http://okta.mock.invalid/api/v1/users/?limit=1&offset=1>; rel="next"' }) m.register_uri( "GET", "http://okta.mock.invalid/api/v1/users/?limit=1&offset=1", json=[ { "id": "u0002mock", "status": "ACTIVE" }, ]) users = self.client.get_paged_users(limit=1) first_page_hit = subsequent_page_hit = False for user in users.result: first_page_hit = True while not users.is_last_page(): users = self.client.get_paged_users(url=users.next_url) for user in users.result: subsequent_page_hit = True self.assertTrue(first_page_hit and subsequent_page_hit, "The first and subsequent pages weren't hit") @requests_mock.Mocker() def test_single_user(self, m): m.register_uri( "POST", "http://okta.mock.invalid/api/v1/users/?activate=false", complete_qs=True, json={ "id": "u0001mock", "status": "STAGED", }, ) user = User(login='******' + str(random.random()) + '@asdf.com', email='*****@*****.**', firstName='Joe', lastName='Schmoe') user = self.client.create_user(user, activate=False) self.assertEqual(user.status, "STAGED", "User should be staged") m.register_uri( "POST", "http://okta.mock.invalid/api/v1/users/?activate=true", complete_qs=True, json={ "id": "u0002mock", "status": "PROVISIONED", }, ) user = User(login='******' + str(random.random()) + '@asdf.com', email='*****@*****.**', firstName='Joe', lastName='Schmoe') user = self.client.create_user(user, activate=True) self.assertEqual(user.status, "PROVISIONED", "User should be provisioned")
usersClient = UsersClient("https://{{url}}.okta.com", "API_Token") ''' Values that define the functionality of the script Arguments: :user_index: => The index from where the script will start counting. Default value of 1 :firstName_value: => Shared value between all users created. Default value of User :lastName_value: => Dinamyc value that will make sure that each user is unique as per Okta's request :email_domain: => The domain value for the email and login form. Default value of @example.com ''' user_index = 1 firstName_value = "User" lastName_value = 1 email_domain = "@example.com" # While loop to create 1000 users. As the user_index has a default value of 1 we will need to run until 1001 in order to have 1000 users created. If instead we use 1000, then 999 user will be created. # time.sleep is defined at 5 seconds in order to make sure that the rate limit is not reached. # Okta Rate limit documentation: https://developer.okta.com/docs/api/getting_started/rate-limits while user_index < 1001: user = User(login=firstName_value + str(lastName_value) + email_domain, email=firstName_value + str(lastName_value) + email_domain, firstName=firstName_value, lastName=lastName_value) user = usersClient.create_user(user, activate=True) user_index += 1 lastName_value += 1 time.sleep(5)