Skip to content

Commit 0a75251

Browse files
committed
Add integration tests for Bolt V3 features on previous versions
1 parent 54de538 commit 0a75251

File tree

3 files changed

+106
-4
lines changed

3 files changed

+106
-4
lines changed

neo4j/test-integration/session_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,4 +419,68 @@ var _ = Describe("Session", func() {
419419
})
420420
})
421421

422+
Context("V3 API on V1 & V2", func() {
423+
var (
424+
err error
425+
driver neo4j.Driver
426+
session neo4j.Session
427+
)
428+
429+
metadata := map[string]interface{}{"id": 4, "name": "x"}
430+
431+
BeforeEach(func() {
432+
driver, err = server.Driver()
433+
Expect(err).To(BeNil())
434+
Expect(driver).NotTo(BeNil())
435+
436+
if VersionOfDriver(driver).GreaterThanOrEqual(V3_5_0) {
437+
Skip("this test is targeted for server versions less than neo4j 3.5.0")
438+
}
439+
440+
session, err = driver.Session(neo4j.AccessModeRead)
441+
Expect(err).To(BeNil())
442+
Expect(session).NotTo(BeNil())
443+
})
444+
445+
AfterEach(func() {
446+
if session != nil {
447+
session.Close()
448+
}
449+
450+
if driver != nil {
451+
driver.Close()
452+
}
453+
})
454+
455+
It("should fail when transaction timeout is set for Session.Run", func() {
456+
_, err := session.Run("RETURN 1", nil, neo4j.WithTxTimeout(1*time.Second))
457+
Expect(err).To(BeConnectorErrorWithCode(0x504))
458+
})
459+
460+
It("should fail when transaction timeout is set for Session.ReadTransaction", func() {
461+
_, err := session.ReadTransaction(createNodeWork("Test", nil), neo4j.WithTxTimeout(1*time.Second))
462+
Expect(err).To(BeConnectorErrorWithCode(0x504))
463+
})
464+
465+
It("should fail when transaction timeout is set for Session.WriteTransaction", func() {
466+
_, err := session.WriteTransaction(createNodeWork("Test", nil), neo4j.WithTxTimeout(1*time.Second))
467+
Expect(err).To(BeConnectorErrorWithCode(0x504))
468+
})
469+
470+
It("should fail when transaction metadata is set for Session.Run", func() {
471+
_, err := session.Run("RETURN 1", nil, neo4j.WithTxMetadata(metadata))
472+
Expect(err).To(BeConnectorErrorWithCode(0x504))
473+
})
474+
475+
It("should fail when transaction metadata is set for Session.ReadTransaction", func() {
476+
_, err := session.ReadTransaction(createNodeWork("Test", nil), neo4j.WithTxMetadata(metadata))
477+
Expect(err).To(BeConnectorErrorWithCode(0x504))
478+
})
479+
480+
It("should fail when transaction metadata is set for Session.WriteTransaction", func() {
481+
_, err := session.WriteTransaction(createNodeWork("Test", nil), neo4j.WithTxMetadata(metadata))
482+
Expect(err).To(BeConnectorErrorWithCode(0x504))
483+
})
484+
})
485+
422486
})

neo4j/test-integration/transaction_test.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@
2020
package test_integration
2121

2222
import (
23-
"github.com/neo4j/neo4j-go-driver/neo4j/utils/test"
23+
"fmt"
2424
"time"
2525

2626
"github.com/neo4j-drivers/gobolt"
2727
"github.com/neo4j/neo4j-go-driver/neo4j"
2828
"github.com/neo4j/neo4j-go-driver/neo4j/test-integration/control"
2929

30+
. "github.com/neo4j/neo4j-go-driver/neo4j/utils/test"
3031
. "github.com/onsi/ginkgo"
3132
. "github.com/onsi/gomega"
32-
"github.com/pkg/errors"
3333
)
3434

3535
var _ = Describe("Transaction", func() {
@@ -108,7 +108,7 @@ var _ = Describe("Transaction", func() {
108108
Expect(err).To(BeNil())
109109
Expect(innerResult).To(BeEquivalentTo(1))
110110

111-
return nil, errors.New("some error")
111+
return nil, fmt.Errorf("some error")
112112
})
113113
Expect(err).NotTo(BeNil())
114114
Expect(createResult).To(BeNil())
@@ -258,8 +258,26 @@ var _ = Describe("Transaction", func() {
258258
defer tx3.Close()
259259

260260
_, err := updateNodeWork("TxTimeOut", map[string]interface{}{"id": 2})(tx3)
261-
Expect(err).To(test.BeTransientError(nil, ContainSubstring("terminated")))
261+
Expect(err).To(BeTransientError(nil, ContainSubstring("terminated")))
262262
})
263263

264264
})
265+
266+
FContext("V3 API on V1 & V2", func() {
267+
BeforeEach(func() {
268+
if VersionOfDriver(driver).GreaterThanOrEqual(V3_5_0) {
269+
Skip("this test is targeted for server versions less than neo4j 3.5.0")
270+
}
271+
})
272+
273+
It("should fail when transaction timeout is set for Session.BeginTransaction", func() {
274+
_, err := session.BeginTransaction(neo4j.WithTxTimeout(1 * time.Second))
275+
Expect(err).To(BeConnectorErrorWithCode(0x504))
276+
})
277+
278+
It("should fail when transaction metadata is set for Session.BeginTransaction", func() {
279+
_, err := session.BeginTransaction(neo4j.WithTxMetadata(map[string]interface{}{"x": 1}))
280+
Expect(err).To(BeConnectorErrorWithCode(0x504))
281+
})
282+
})
265283
})

neo4j/test-integration/utils_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,26 @@ func createNodeInTx(tx neo4j.Transaction, label string, props map[string]interfa
120120
Expect(summary.Counters().ContainsUpdates()).To(BeTrue())
121121
}
122122

123+
func createNodeWork(label string, props map[string]interface{}) neo4j.TransactionWork {
124+
return func(tx neo4j.Transaction) (interface{}, error) {
125+
var (
126+
err error
127+
result neo4j.Result
128+
)
129+
130+
if len(props) > 0 {
131+
result, err = tx.Run(fmt.Sprintf("CREATE (n:%s) SET n = $props", label), map[string]interface{}{"props": props})
132+
} else {
133+
result, err = tx.Run(fmt.Sprintf("CREATE (n:%s)", label), nil)
134+
}
135+
if err != nil {
136+
return nil, err
137+
}
138+
139+
return result.Consume()
140+
}
141+
}
142+
123143
func updateNode(session neo4j.Session, label string, newProps map[string]interface{}) {
124144
var (
125145
err error

0 commit comments

Comments
 (0)