github.com/tacerus/ldifdiff@v0.0.0-20181030102753-4dccbe38183b/generic_test.go (about) 1 package ldifdiff 2 3 import ( 4 "io/ioutil" 5 "os" 6 "strings" 7 ) 8 9 //* Test data */ 10 const testBigFilesEnv = "LDIFDIFF_BIGFILES" 11 const testBigFilesEnvValue = "1" 12 const testDn = "dn: some_dn,ou=aAccounts,dc=domain,dc=ext" 13 const testSourceLdifFile = "t/source.ldif" 14 const testTargetLdifFile = "t/target.ldif" 15 const testResultLdifFile = "t/result.ldif" 16 const testResultDnFile = "t/result_dn" 17 const testResultDnIgnoreAttrFile = "t/result_dn_ignore_attr" 18 const testInvalidLineContLdifFile = "t/invalid_line_continuation.ldif" 19 const testInvalidNoDnLdifFile = "t/invalid_no_dn.ldif" 20 const testSourceLdifFileBig = "t/_source_big.ldif" 21 const testTargetLdifFileBig = "t/_target_big.ldif" 22 const testResultLdifFileBig = "t/_result_big.ldif" 23 const testModifyAddLdifFile = "t/modifyAdd.ldif" 24 const testModifyDeleteLdifFile = "t/modifyDelete.ldif" 25 const testModifyReplaceLdifFile = "t/modifyReplace.ldif" 26 const testModifyLdifFile = "t/modify.ldif" 27 28 var testSourceStr = testGetLdifeStr(testSourceLdifFile, false) 29 var testSourceNrEntries = testGetNrOfEntries(testSourceStr) 30 var testTargetStr = testGetLdifeStr(testTargetLdifFile, false) 31 var testResultStr = testGetLdifeStr(testResultLdifFile, false) 32 var testResultDnStr = testGetLdifeStr(testResultDnFile, false) 33 var testResultDnIgnoreAttrStr = testGetLdifeStr(testResultDnIgnoreAttrFile, false) 34 var testInvalidLineContStr = testGetLdifeStr(testInvalidLineContLdifFile, false) 35 var testInvalidNoDnStr = testGetLdifeStr(testInvalidNoDnLdifFile, false) 36 var testSourceStrBig = testGetLdifeStr(testSourceLdifFileBig, true) 37 var testTargetStrBig = testGetLdifeStr(testTargetLdifFileBig, true) 38 var testResultStrBig = testGetLdifeStr(testResultLdifFileBig, true) 39 var testModifyAddStr = testGetLdifeStr(testModifyAddLdifFile, false) 40 var testModifyDeleteStr = testGetLdifeStr(testModifyDeleteLdifFile, false) 41 var testModifyReplaceStr = testGetLdifeStr(testModifyReplaceLdifFile, false) 42 var testModifyStr = testGetLdifeStr(testModifyLdifFile, false) 43 var testIgnoreAttr = []string{"sambaSID", "eduPersonEntitlement"} 44 var testIgnoreAttrDn = []string{"sambaSID", "eduPersonEntitlement", "mail"} 45 var testAttrList = []string{"mail: auth2@domain.ext", "phone: +32364564645"} 46 var testAttrListModifyReplace = []string{testAttrList[0]} 47 var testActionEntryTestData = testGetActionEntryMap() 48 49 /* Helper functions and types */ 50 type TestActionEntryData struct { 51 Add, Delete, Modify, ModifyOnlyAdd, 52 ModifyOnlyDelete, ModifyOnlyReplace, 53 ModifyNone, ModifyReplaceAttributes actionEntry 54 } 55 56 func testGetActionEntryMap() TestActionEntryData { 57 return TestActionEntryData{ 58 Add: actionEntry{Dn: testDn, Action: actionAdd, 59 SubActionAttrs: []subActionAttrs{{subActionNone: testAttrList}}}, 60 Delete: actionEntry{Dn: testDn, Action: actionDelete, 61 SubActionAttrs: []subActionAttrs{{subActionNone: testAttrList}}}, 62 Modify: actionEntry{Dn: testDn, Action: actionModify, 63 SubActionAttrs: []subActionAttrs{ 64 {subActionModifyAdd: testAttrList}, 65 {subActionModifyDelete: testAttrList}, 66 {subActionModifyReplace: testAttrListModifyReplace}}}, 67 ModifyOnlyAdd: actionEntry{Dn: testDn, Action: actionModify, 68 SubActionAttrs: []subActionAttrs{{subActionModifyAdd: testAttrList}}}, 69 ModifyOnlyDelete: actionEntry{Dn: testDn, Action: actionModify, 70 SubActionAttrs: []subActionAttrs{{subActionModifyDelete: testAttrList}}}, 71 ModifyOnlyReplace: actionEntry{Dn: testDn, Action: actionModify, 72 SubActionAttrs: []subActionAttrs{{subActionModifyReplace: testAttrListModifyReplace}}}, 73 ModifyNone: actionEntry{Dn: testDn, Action: actionModify, 74 SubActionAttrs: []subActionAttrs{{subActionNone: testAttrList}}}, 75 ModifyReplaceAttributes: actionEntry{Dn: testDn, Action: actionModify, 76 SubActionAttrs: []subActionAttrs{{subActionModifyReplace: testAttrList}}}, 77 } 78 } 79 80 func testGetLdifeStr(file string, big bool) string { 81 if big && os.Getenv(testBigFilesEnv) != testBigFilesEnvValue { 82 return "" 83 } 84 bytes, _ := ioutil.ReadFile(file) 85 return string(bytes) + "\n" 86 } 87 88 func testGetNrOfEntries(ldifStr string) int { 89 var counter int 90 for _, line := range strings.Split(ldifStr, "\n") { 91 if strings.HasPrefix(line, "dn:") { 92 counter++ 93 } 94 } 95 return counter 96 }