コード例 #1
0
 def testComplex(self):
     a = entry.BaseLDAPEntry(
         dn='cn=Paula Jensen,ou=Product Development,dc=airius,dc=com',
         attributes={
             'description': ['Something'],
             'telephonenumber': ['+123 456'],
             'facsimiletelephonenumber': ['+1 408 555 9876'],
         })
     b = entry.BaseLDAPEntry(
         dn='cn=Paula Jensen,ou=Product Development,dc=airius,dc=com',
         attributes={
             'postalAddress': ['123 Anystreet $ Sunnyvale, CA $ 94086'],
             'telephonenumber': ['+1 408 555 1234', '+1 408 555 5678'],
         })
     result = a.diff(b)
     self.assertEquals(
         result,
         delta.ModifyOp(
             'cn=Paula Jensen,ou=Product Development,dc=airius,dc=com', [
                 delta.Add('postalAddress',
                           ['123 Anystreet $ Sunnyvale, CA $ 94086']),
                 delta.Delete('description', ['Something']),
                 delta.Delete('facsimiletelephonenumber',
                              ['+1 408 555 9876']),
                 delta.Add('telephonenumber',
                           ['+1 408 555 1234', '+1 408 555 5678']),
                 delta.Delete('telephonenumber', ['+123 456']),
             ]))
コード例 #2
0
 def test_modify(self):
     self.server.dataReceived(
         str(
             pureldap.LDAPMessage(pureldap.LDAPModifyRequest(
                 self.stuff.dn,
                 modification=[
                     delta.Add('foo', ['bar']).asLDAP(),
                 ],
             ),
                                  id=2)))
     self.assertEquals(
         self.server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPModifyResponse(
                 resultCode=ldaperrors.Success.resultCode),
                                  id=2)),
     )
     # tree changed
     self.assertEquals(
         self.stuff,
         inmemory.ReadOnlyInMemoryLDAPEntry('ou=stuff,dc=example,dc=com', {
             'objectClass': ['a', 'b'],
             'ou': ['stuff'],
             'foo': ['bar']
         }))
コード例 #3
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
    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
-

""")
コード例 #4
0
 def cb3(got):
     self.assertEquals(got, [
         delta.ModifyOp(
             self.empty.dn,
             [delta.Add('foo', ['bar'])],
         ),
     ])
コード例 #5
0
 def testAdd_New_ManyTypes(self):
     a = entry.BaseLDAPEntry(dn='dc=foo', attributes={
         'foo': ['bar'],
     })
     b = entry.BaseLDAPEntry(dn='dc=foo',
                             attributes={
                                 'foo': ['bar'],
                                 'baz': ['quux'],
                                 'bang': ['thud'],
                             })
     result = a.diff(b)
     self.assertEquals(
         result,
         delta.ModifyOp('dc=foo', [
             delta.Add('bang', ['thud']),
             delta.Add('baz', ['quux']),
         ]))
コード例 #6
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
 def testModifyOp_DNNotFound(self):
     op = delta.ModifyOp('cn=nope,dc=example,dc=com',
                         [delta.Add('foo', ['bar'])])
     d = op.patch(self.root)
     def eb(fail):
         fail.trap(ldaperrors.LDAPNoSuchObject)
     d.addCallbacks(testutil.mustRaise, eb)
     return d
コード例 #7
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
    def testAdd(self):
        m=delta.Add('foo', ['bar', 'baz'])
        self.assertEquals(m.asLDIF(),
                          """\
add: foo
foo: bar
foo: baz
-
""")
コード例 #8
0
    def diff(self, other):
        """
        Compute differences between this and another LDAP entry.

        @param other: An LDAPEntry to compare to.

        @return: None if equal, otherwise a ModifyOp that would make
        this entry look like other.
        """
        assert self.dn == other.dn
        if self == other:
            return None

        r = []

        myKeys = sets.Set(self.keys())
        otherKeys = sets.Set(other.keys())

        addedKeys = list(otherKeys - myKeys)
        addedKeys.sort() # for reproducability only
        for added in addedKeys:
            r.append(delta.Add(added, other[added]))

        deletedKeys = list(myKeys - otherKeys)
        deletedKeys.sort() # for reproducability only
        for deleted in deletedKeys:
            r.append(delta.Delete(deleted, self[deleted]))

        sharedKeys = list(myKeys & otherKeys)
        sharedKeys.sort() # for reproducability only
        for shared in sharedKeys:

            addedValues = list(other[shared] - self[shared])
            if addedValues:
                addedValues.sort() # for reproducability only
                r.append(delta.Add(shared, addedValues))

            deletedValues = list(self[shared] - other[shared])
            if deletedValues:
                deletedValues.sort() # for reproducability only
                r.append(delta.Delete(shared, deletedValues))

        return delta.ModifyOp(dn=self.dn, modifications=r)
コード例 #9
0
    def testModification_complex(self):
        proto = LDIFDeltaDriver()
        proto.dataReceived("""\
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='cn=foo,dc=example,dc=com',
                            modifications=[delta.Delete('foo', ['bar']),
                                           delta.Delete('garply'),
                                           delta.Add('thud', ['quux', 'baz']),
                                           delta.Replace('waldo'),
                                           delta.Add('foo', ['baz']),
                                           delta.Replace('thud', ['xyzzy']),
                                           delta.Add('silly'),
                                           ]),
             ])
コード例 #10
0
 def testAdd_Existing_OneType_OneValue(self):
     a = entry.BaseLDAPEntry(dn='dc=foo', attributes={
         'foo': ['bar'],
     })
     b = entry.BaseLDAPEntry(dn='dc=foo',
                             attributes={
                                 'foo': ['bar', 'quux'],
                             })
     result = a.diff(b)
     self.assertEquals(
         result, delta.ModifyOp('dc=foo', [
             delta.Add('foo', ['quux']),
         ]))
コード例 #11
0
    def testModification_twoAdds(self):
        proto = LDIFDeltaDriver()
        proto.dataReceived("""\
version: 1
dn: cn=foo,dc=example,dc=com
changetype: modify
add: foo
foo: bar
-
add: thud
thud: quux
thud: baz
-

""")
        proto.connectionLost()
        self.assertEqual(
            proto.listOfCompleted,
            [delta.ModifyOp(dn='cn=foo,dc=example,dc=com',
                            modifications=[delta.Add('foo', ['bar']),
                                           delta.Add('thud', ['quux', 'baz']),
                                           ]),
             ])
コード例 #12
0
ファイル: test_inmemory.py プロジェクト: mpice-mn/python-opsi
 def testRootChange_Add(self):
     a = inmemory.ReadOnlyInMemoryLDAPEntry('dc=example,dc=com',
                                            {
         'dc': ['example'],
         })
     b = inmemory.ReadOnlyInMemoryLDAPEntry('dc=example,dc=com',
                                            {
         'dc': ['example'],
         'foo': ['bar'],
         })
     d = a.diffTree(b)
     d.addCallback(self.assertEquals,
                   [ delta.ModifyOp('dc=example,dc=com',
                                    [
         delta.Add('foo', ['bar']),
         ]),
                     ])
     return d
コード例 #13
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
    def testAddNew(self):
        mod = delta.Add('stuff', ['val1', 'val2'])
        mod.patch(self.foo)

        self.failUnlessEqual(self.foo['stuff'], ['val1', 'val2'])
        self.failUnlessEqual(self.foo['cn'], ['foo', 'thud'])
コード例 #14
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
 def testEquality_List_False(self):
     a = delta.Add('k', ['b', 'c', 'd'])
     b = ['b', 'c', 'd']
     self.assertNotEquals(a, b)
コード例 #15
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
 def testEquality_AttributeSet_False(self):
     a = delta.Add('k', ['b', 'c', 'd'])
     b = attributeset.LDAPAttributeSet('k', ['b', 'c', 'd'])
     self.assertNotEquals(a, b)
コード例 #16
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
 def testEquality_AddVsDelete_False(self):
     a = delta.Add('k', ['b', 'c', 'd'])
     b = delta.Delete('k', ['b', 'c', 'd'])
     self.assertNotEquals(a, b)
コード例 #17
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
    def testAddOld(self):
        mod = delta.Add('cn', ['quux'])
        mod.patch(self.foo)

        self.failIf('stuff' in self.foo)
        self.failUnlessEqual(self.foo['cn'], ['foo', 'thud', 'quux'])
コード例 #18
0
ファイル: test_delta.py プロジェクト: mpice-mn/python-opsi
 def testEquality_Add_True(self):
     a = delta.Add('k', ['b', 'c', 'd'])
     b = delta.Add('k', ['b', 'c', 'd'])
     self.assertEquals(a, b)
コード例 #19
0
ファイル: ldapsyntax.py プロジェクト: mpice-mn/python-opsi
 def update(self, sequence):
     self.ldapObject.journal(delta.Add(self.key, sequence))
     super(JournaledLDAPAttributeSet, self).update(sequence)
コード例 #20
0
ファイル: ldapsyntax.py プロジェクト: mpice-mn/python-opsi
 def add(self, value):
     self.ldapObject.journal(delta.Add(self.key, [value]))
     super(JournaledLDAPAttributeSet, self).add(value)