def test_crud_user(looker_client: mtds.LookerSDK): """Test creating, retrieving, updating and deleting a user. """ # Create user user = looker_client.create_user( ml.WriteUser(first_name="John", last_name="Doe", is_disabled=False, locale="fr") ) assert isinstance(user, ml.User) assert isinstance(user.id, int) assert user.first_name == "John" assert user.last_name == "Doe" assert not user.is_disabled assert user.locale == "fr" # sudo checks user_id = user.id looker_client.login_user(user_id) user = looker_client.me() assert user.first_name == "John" assert user.last_name == "Doe" looker_client.logout() user = looker_client.me() assert user.first_name != "John" assert user.last_name != "Doe" # Update user and check fields we didn't intend to change didn't change update_user = ml.WriteUser(is_disabled=True, locale="uk") looker_client.update_user(user_id, update_user) user = looker_client.user(user_id) assert user.first_name == "John" assert user.last_name == "Doe" assert user.locale == "uk" assert user.is_disabled # Update user and check fields we intended to wipe out are now None # first way to specify nulling out a field update_user = ml.WriteUser(first_name=ml.EXPLICIT_NULL) # second way update_user.last_name = ml.EXPLICIT_NULL looker_client.update_user(user_id, update_user) user = looker_client.user(user_id) assert user.first_name is None assert user.last_name is None # Try adding email creds looker_client.create_user_credentials_email( user_id, ml.WriteCredentialsEmail(email="*****@*****.**") ) user = looker_client.user(user_id) assert isinstance(user.credentials_email, ml.CredentialsEmail) assert user.credentials_email.email == "*****@*****.**" # Delete user resp = looker_client.delete_user(user_id) assert resp == "" looker_client.logout()
def create_test_users(sdk: mtds.LookerSDK, users: List[Dict[str, str]], email_domain: str): user_ids: List[int] = [] for u in users: user = sdk.create_user( ml.WriteUser(first_name=u["first_name"], last_name=u["last_name"])) if user.id: user_ids.append(user.id) email = f"{u['first_name']}.{u['last_name']}{email_domain}" sdk.create_user_credentials_email( user.id, ml.WriteCredentialsEmail(email=email)) yield for user_id in user_ids: sdk.delete_user(user_id)