fakeldapは、あなたのユニットテストのためのLDAPバックエンドサーバを模擬するための簡単な方法を提供するPythonモジュールである 。これは、LDAPクエリに照会または固定の戻り値を設定することができるディレクトリエントリの前払いセットを定義することが可能になります。これは、Python-LDAPモジュールのLDAPObjectクラスの代替の低下として機能します。これは、このクラスの許可メソッドのサブセットを実装しています。
このモジュールは、LDAPObjectならびにLDAPモジュールの両方として機能するMockLDAPクラスを実装します。コードとデザインのほとんどは、ピーターSagersonの優れたジャンゴ-AUTH-LDAPモジュールから取られています。
インストール
コードを取得してインストールします:
  gitのクローンgitの://github.com/30loops/fakeldap.git
  CDのfakeldap
  Pythonはsetup.py installを
あなたがしたい場合は、テストを実行することができます。
  Pythonのsetup.pyのnosetests
利用
注:このコードはまだ実験と非常にまだのようにテストされていません。だからドキュメントはあります
MockLDAPクラスのpython-LDAPモジュールのLDAPObjectを置き換えます。それを使用する最も簡単な方法は、MockLDAPの代わりにLDAPObjectを返すようにldap.initializeを上書きすることです。以下の例は、それを達成するためにマイケルFoordのモックライブラリを使用しています。
輸入ユニットテスト
モック輸入パッチから
fakeldap輸入MockLDAPから
_mock_ldap = MockLDAP()
クラスYourTestCase(からunittest.TestCase):
 デフセットアップ(自己):
  LDAPライブラリが使用されている#パッチ:
  self.ldap_patcher =パッチ( 'app.module.ldap.initialize')
  self.mock_ldap = self.ldap_patcher.start()
  self.mock_ldap.return_value = _mock_ldap
 ティアダウン(自己)DEF:
  _mock_ldap.reset()
  self.mock_ldap.stop()
モックLDAPオブジェクトは、次のLDAP操作を実装します。
- SIMPLE_BIND_S
- SEARCH_S
- COMPARE_S
- MODIFY_S
- DELETE_S
- ADD_S
- RENAME_S
これは、固定された戻り値とMockLDAPを使用する方法の例です:
デフtest_some_ldap_group_stuff(自己):
 #LDAP操作のための期待リターン値を定義します。
  RETURN_VALUE =( "CN = testgroupで、OU =グループ、DC = 30loops、DC =ネット"、{
  'オブジェクトクラス':['posixGroupです']、
  'CN': 'TESTGROUP」、
  'のgidNumber': '2030'、
 })
 #MockLDAPオブジェクトに戻り値を登録します
  _mock_ldap.set_return_value( 'ADD_S」、
 (「CN = testgroupで、OU =グループ、DC = 30loops、DC =ネット "、(
 ( 'オブジェクトクラス'、( 'posixGroupです'))、
 ( 'CN'、 'TESTGROUP')、
 ( 'gidNumber属性'、 '2030')))、
 (105、[]、10 []))
 #これは一例であり、実際のコードを実行します。
  group_manager =グループマネージャー()
 結果= group_manager.add( "TESTGROUP」)
 #がアサートそのあなたの方法のとMockLDAPの戻り値
 ここでのpython-鼻のEQ()テストツールを使用して、期待どおりの#は、次のとおりです。
  eq_(RETURN_VALUE、結果)
 #それぞれの実際のLDAPは、お使いのソフトウェアが記録されますになります呼び出します。あなたは出来ます
 #あなたが発行されることを期待する呼び出しのリストを作成し、それを比較します:
  called_records = []
  called_records.append(( 'SIMPLE_BIND_S」、
  {'人': 'CN =管理者、DC = 30loops、DC =ネット」、「クレド': 'ldaptest'}))
  called_records.append(( 'ADD_S'、{
  'DN': 'CN = testgroupで、OU =グループ、DC = 30loops、DC =ネット "、
  'レコード':[
 ( 'オブジェクトクラス'、['posixGroupです'])、
 ( 'gidNumber属性'、 '2030')、
 ( 'CN'、 'TESTGROUP')、
 ]}))
 #そして再び期待される動作をテスト
  eq_(called_records、_mock_ldap.ldap_methods_called_with_arguments())
固有の呼び出しの戻り値を固定する他にも、エントリのディレクトリとの完全なLDAPサーバを模倣することができます。
#プリセットディレクトリとMockLDAPのインスタンスを作成します
木= {
  "CN =管理者、DC = 30loops、DC =ネット":{
  "のuserPassword": "ldaptest」
 }
}
mock_ldap = MockLDAP(木)
レコード= [
 ( 'UID'、 'crito')、
 ( 'のuserPassword'、 '秘密')、
]
私はディレクトリに別のレコードを追加するとき、私は期待し#戻り値
eq_(
 (105、[]、1、[])
  mock_ldap.add_s( "UID = crito、OU =人、DC = 30loops、DC =ネット"、レコード)
)
#予想されるディレクトリ
ディレクトリ= {
  "CN =管理者、DC = 30loops、DC =ネット":{"のuserPassword": "ldaptest"}、
  "UID = crito、OU =人、DC = 30loops、DC =ネット":{
  "UID": "crito"、 "のuserPassword": "秘密"}
}
#MockLDAPディレクトリと予想されるディレクトリを比較
eq_(ディレクトリ、mock_ldap.directory)
この要件:
このパイソン
コメントが見つかりません