コード例 #1
0
ファイル: test_delta.py プロジェクト: shivram2609/ldaptor
    def testReplace_Modify(self):
        mod = delta.Replace("sn", ["baz"])
        mod.patch(self.foo)

        self.failIf("stuff" in self.foo)
        self.failUnlessEqual(self.foo["sn"], ["baz"])
        self.failUnlessEqual(self.foo["more"], ["junk"])
コード例 #2
0
    def __setitem__(self, key, value):
        self._checkState()
        self._canRemoveAll(key)

        new = JournaledLDAPAttributeSet(self, key, value)
        super(LDAPEntryWithClient, self).__setitem__(key, new)
        self.journal(delta.Replace(key, value))
コード例 #3
0
    def testReplace_Delete_NonExisting(self):
        mod = delta.Replace('nonExisting', [])
        mod.patch(self.foo)

        self.failIf('stuff' in self.foo)
        self.failUnlessEqual(self.foo['sn'], ['bar'])
        self.failUnlessEqual(self.foo['more'], ['junk'])
コード例 #4
0
    def testModify(self):
        op=delta.ModifyOp('cn=Paula Jensen, ou=Product Development, dc=airius, dc=com',
                          [
            delta.Add('postaladdress',
                      ['123 Anystreet $ Sunnyvale, CA $ 94086']),
            delta.Delete('description'),
            delta.Replace('telephonenumber', ['+1 408 555 1234', '+1 408 555 5678']),
            delta.Delete('facsimiletelephonenumber', ['+1 408 555 9876']),
            ])
        self.assertEquals(op.asLDIF(),
                          """\
dn: cn=Paula Jensen,ou=Product Development,dc=airius,dc=com
changetype: modify
add: postaladdress
postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086
-
delete: description
-
replace: telephonenumber
telephonenumber: +1 408 555 1234
telephonenumber: +1 408 555 5678
-
delete: facsimiletelephonenumber
facsimiletelephonenumber: +1 408 555 9876
-

""")
コード例 #5
0
    def testReplace_Add(self):
        mod = delta.Replace('stuff', ['val1', 'val2'])
        mod.patch(self.foo)

        self.failUnlessEqual(self.foo['stuff'], ['val1', 'val2'])
        self.failUnlessEqual(self.foo['sn'], ['bar'])
        self.failUnlessEqual(self.foo['more'], ['junk'])
コード例 #6
0
    def testReplace_Modify(self):
        mod = delta.Replace('sn', ['baz'])
        mod.patch(self.foo)

        self.failIf('stuff' in self.foo)
        self.failUnlessEqual(self.foo['sn'], ['baz'])
        self.failUnlessEqual(self.foo['more'], ['junk'])
コード例 #7
0
    def testReplaceAll(self):
        m=delta.Replace('thud')
        self.assertEqual(m.asLDIF(),
                         b"""\
replace: thud
-
""")
コード例 #8
0
ファイル: test_delta.py プロジェクト: shivram2609/ldaptor
    def testReplace_Delete_NonExisting(self):
        mod = delta.Replace("nonExisting", [])
        mod.patch(self.foo)

        self.failIf("stuff" in self.foo)
        self.failUnlessEqual(self.foo["sn"], ["bar"])
        self.failUnlessEqual(self.foo["more"], ["junk"])
コード例 #9
0
ファイル: test_delta.py プロジェクト: shivram2609/ldaptor
    def testReplace_Add(self):
        mod = delta.Replace("stuff", ["val1", "val2"])
        mod.patch(self.foo)

        self.failUnlessEqual(self.foo["stuff"], ["val1", "val2"])
        self.failUnlessEqual(self.foo["sn"], ["bar"])
        self.failUnlessEqual(self.foo["more"], ["junk"])
コード例 #10
0
 def disable_dn_(self, dn, client=None):
     """
     Deprovision subject based on DN.
     """
     log = self.log
     unbind = False
     if client is None:
         client = yield self.get_ldap_client_()
         unbind = True
     with LDAPClientManager(client, active=unbind) as c:
         o = ldapsyntax.LDAPEntry(c, dn)
         results = yield o.search(filterText=self.search_filter,
                                  attributes=('userAccountControl', ))
         if len(results) == 1:
             entry = results[0]
             ADS_UF_ACCOUNTDISABLE = 0x00000002
             user_account_control = int(
                 list(entry['userAccountControl'])[0])
             user_account_control = (user_account_control
                                     | ADS_UF_ACCOUNTDISABLE)
             mod = delta.ModifyOp(dn, [
                 delta.Replace('userAccountControl',
                               ["{}".format(user_account_control)]),
             ])
             l = mod.asLDAP()
             response = yield client.send(l)
コード例 #11
0
    def testReplace(self):
        m = delta.Replace('foo', ['bar', 'baz'])
        self.assertEqual(m.asLDIF(), b"""\
replace: foo
foo: bar
foo: baz
-
""")
コード例 #12
0
    def testModification_complex(self):
        proto = LDIFDeltaDriver()
        proto.dataReceived(b"""\
version: 1
dn: cn=foo,dc=example,dc=com
changetype: modify
delete: foo
foo: bar
-
delete: garply
-
add: thud
thud: quux
thud: baz
-
replace: waldo
-
add: foo
foo: baz
-
replace: thud
thud: xyzzy
-
add: silly
-

""")
        proto.connectionLost()
        self.assertEqual(
            proto.listOfCompleted,
            [
                delta.ModifyOp(
                    dn=b"cn=foo,dc=example,dc=com",
                    modifications=[
                        delta.Delete(b"foo", [b"bar"]),
                        delta.Delete(b"garply"),
                        delta.Add(b"thud", [b"quux", b"baz"]),
                        delta.Replace(b"waldo"),
                        delta.Add(b"foo", [b"baz"]),
                        delta.Replace(b"thud", [b"xyzzy"]),
                        delta.Add(b"silly"),
                    ],
                ),
            ],
        )
コード例 #13
0
ファイル: test_delta.py プロジェクト: shivram2609/ldaptor
    def testReplace(self):
        m = delta.Replace("foo", ["bar", "baz"])
        self.assertEqual(
            m.asLDIF(),
            b"""\
replace: foo
foo: bar
foo: baz
-
""",
        )
コード例 #14
0
    def testModification_complex(self):
        proto = LDIFDeltaDriver()
        proto.dataReceived(b"""\
version: 1
dn: cn=foo,dc=example,dc=com
changetype: modify
delete: foo
foo: bar
-
delete: garply
-
add: thud
thud: quux
thud: baz
-
replace: waldo
-
add: foo
foo: baz
-
replace: thud
thud: xyzzy
-
add: silly
-

""")
        proto.connectionLost()
        self.assertEqual(proto.listOfCompleted, [
            delta.ModifyOp(dn=b'cn=foo,dc=example,dc=com',
                           modifications=[
                               delta.Delete(b'foo', [b'bar']),
                               delta.Delete(b'garply'),
                               delta.Add(b'thud', [b'quux', b'baz']),
                               delta.Replace(b'waldo'),
                               delta.Add(b'foo', [b'baz']),
                               delta.Replace(b'thud', [b'xyzzy']),
                               delta.Add(b'silly'),
                           ]),
        ])
コード例 #15
0
 def update_entry_(self, account, client):
     """
     Attempt to update and LDAP entry.
     """
     log = self.log
     log.info("Entered update_entry_()")
     updateable_attribs = {
         "givenName",
         "displayName",
         "sn",
         "userAccountControl",
     }
     attribs = [
         delta.Replace(prop, list(values))
         for prop, values in account.items() if prop in updateable_attribs
     ]
     log.debug("attribs: {attribs}", attribs=attribs)
     try:
         dn = account['dn']
     except KeyError:
         raise Exception("Account template must include a `dn` property.")
     mod = delta.ModifyOp(dn, attribs)
     log.debug("LDAP MOD request: {mod_req}", mod_req=repr(mod))
     unbind = False
     if client is None:
         client = yield self.get_ldap_client_()
         unbind = True
     response = None
     log.debug("LDAPClientManager unbind flag: {unbind}", unbind=unbind)
     with LDAPClientManager(client, active=unbind, log=log) as c:
         log.debug("Sending LDAP MOD request.")
         response = yield c.send(mod.asLDAP())
         log.debug("LDAP MOD request sent.  Response: {resp}",
                   resp=repr(response))
     log.debug("LDAP MOD response: {mod_resp}", mod_resp=repr(response))
     result_code = response.resultCode
     allowed_results = (ldaperrors.Success.resultCode,
                        ldaperrors.LDAPNoSuchObject.resultCode)
     if result_code not in allowed_results:
         msg = response.errorMessage
         raise Exception(
             "Error adding entry: result_code={}, msg={}".format(
                 result_code, msg))
     returnValue(result_code)
コード例 #16
0
    def testAsLDIF(self):
        """
        It will return a LDIF representation of the contained operations.
        """
        sut = delta.ModifyOp(
            'cn=Paula Jensen, ou=Dev Ops, dc=airius, dc=com',
            [
                delta.Add(
                    'postaladdress',
                    ['123 Anystreet $ Sunnyvale, CA $ 94086'],
                    ),
                delta.Delete('description'),
                delta.Replace(
                    'telephonenumber',
                    ['+1 408 555 1234', '+1 408 555 5678'],
                    ),
                delta.Delete(
                    'facsimiletelephonenumber', ['+1 408 555 9876']),
                ]
            )

        result = sut.asLDIF()

        self.assertEqual(b"""dn: cn=Paula Jensen,ou=Dev Ops,dc=airius,dc=com
changetype: modify
add: postaladdress
postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086
-
delete: description
-
replace: telephonenumber
telephonenumber: +1 408 555 1234
telephonenumber: +1 408 555 5678
-
delete: facsimiletelephonenumber
facsimiletelephonenumber: +1 408 555 9876
-

""",
        result,
        )
コード例 #17
0
ファイル: test_delta.py プロジェクト: shivram2609/ldaptor
    def testAsLDIF(self):
        """
        It will return a LDIF representation of the contained operations.
        """
        sut = delta.ModifyOp(
            "cn=Paula Jensen, ou=Dev Ops, dc=airius, dc=com",
            [
                delta.Add(
                    "postaladdress",
                    ["123 Anystreet $ Sunnyvale, CA $ 94086"],
                ),
                delta.Delete("description"),
                delta.Replace(
                    "telephonenumber",
                    ["+1 408 555 1234", "+1 408 555 5678"],
                ),
                delta.Delete("facsimiletelephonenumber", ["+1 408 555 9876"]),
            ],
        )

        result = sut.asLDIF()

        self.assertEqual(
            b"""dn: cn=Paula Jensen,ou=Dev Ops,dc=airius,dc=com
changetype: modify
add: postaladdress
postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086
-
delete: description
-
replace: telephonenumber
telephonenumber: +1 408 555 1234
telephonenumber: +1 408 555 5678
-
delete: facsimiletelephonenumber
facsimiletelephonenumber: +1 408 555 9876
-

""",
            result,
        )