github.com/tacerus/ldifdiff@v0.0.0-20181030102753-4dccbe38183b/ldifConvertor_test.go (about)

     1  package ldifdiff
     2  
     3  import (
     4  	"bytes"
     5  	"sync"
     6  	"testing"
     7  )
     8  
     9  func TestCreateModifyStr(t *testing.T) {
    10  
    11  	// Regular use
    12  	modifyLdif, _ := createModifyStr(testActionEntryTestData.ModifyOnlyAdd)
    13  	if modifyLdif != testModifyAddStr {
    14  		t.Error("Expected:\n[" + testModifyAddStr + "]\nGot:\n[" + modifyLdif + "]\n")
    15  	}
    16  
    17  	modifyLdif, _ = createModifyStr(testActionEntryTestData.ModifyOnlyDelete)
    18  	if modifyLdif != testModifyDeleteStr {
    19  		t.Error("Expected:\n[" + testModifyAddStr + "]\nGot:\n[" + modifyLdif + "]\n")
    20  	}
    21  	modifyLdif, _ = createModifyStr(testActionEntryTestData.ModifyOnlyReplace)
    22  	if modifyLdif != testModifyReplaceStr {
    23  		t.Error("Expected:\n[" + testModifyAddStr + "]\nGot:\n[" + modifyLdif + "]\n")
    24  	}
    25  
    26  	// Errors
    27  	_, err := createModifyStr(testActionEntryTestData.ModifyNone)
    28  	if err == nil {
    29  		t.Error("Invalid Subaction subActionNone for action actionModify")
    30  	}
    31  }
    32  
    33  func TestWriteLdif(t *testing.T) {
    34  	var buffer bytes.Buffer
    35  	var wg sync.WaitGroup
    36  	var err error
    37  	queue := make(chan actionEntry)
    38  	wg.Add(2)
    39  	go func(queue chan actionEntry) {
    40  		queue <- testActionEntryTestData.Add
    41  		queue <- testActionEntryTestData.Delete
    42  		queue <- testActionEntryTestData.Modify
    43  		close(queue)
    44  		wg.Done()
    45  	}(queue)
    46  
    47  	go writeLdif(queue, &buffer, &wg, &err)
    48  	wg.Wait()
    49  
    50  	if err != nil {
    51  		t.Error("Error not expected, got: ", err)
    52  	}
    53  	ldif := buffer.String()
    54  	if ldif != testModifyStr {
    55  		t.Error("Expected:\n[" + testModifyStr + "]\nGot:\n[" + ldif + "]\n")
    56  	}
    57  }
    58  
    59  func TestWriteLdifError(t *testing.T) {
    60  	var buffer bytes.Buffer
    61  	var wg sync.WaitGroup
    62  	var err error
    63  	queue := make(chan actionEntry)
    64  	wg.Add(2)
    65  	go func(queue chan actionEntry) {
    66  		actionEntry := actionEntry{Dn: testDn, Action: 100,
    67  			SubActionAttrs:            []subActionAttrs{{subActionNone: testAttrList}}}
    68  		queue <- actionEntry
    69  		close(queue)
    70  		wg.Done()
    71  	}(queue)
    72  
    73  	go writeLdif(queue, &buffer, &wg, &err)
    74  	wg.Wait()
    75  
    76  	if err == nil {
    77  		t.Error("Error expected for invalid action")
    78  	}
    79  }