func TestNodeMethods(t *testing.T) { conf := common.GetTestConfig() Convey("Given a clean database with application", t, func() { db, err := OpenDatabase(conf.PostgresDSN) So(err, ShouldBeNil) common.MustResetDB(db) app := models.Application{ AppEUI: [8]byte{1, 2, 3, 4, 5, 6, 7, 8}, Name: "test app", } So(CreateApplication(db, app), ShouldBeNil) Convey("When creating a node", func() { node := models.Node{ DevEUI: [8]byte{8, 7, 6, 5, 4, 3, 2, 1}, AppEUI: app.AppEUI, AppKey: [16]byte{1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8}, RXDelay: 2, RX1DROffset: 3, } So(CreateNode(db, node), ShouldBeNil) Convey("Whe can get it", func() { node2, err := GetNode(db, node.DevEUI) node2.UsedDevNonces = nil So(err, ShouldBeNil) So(node2, ShouldResemble, node) }) Convey("Then get nodes returns a single item", func() { nodes, err := GetNodes(db, 10, 0) So(err, ShouldBeNil) So(nodes, ShouldHaveLength, 1) nodes[0].UsedDevNonces = nil So(nodes[0], ShouldResemble, node) }) Convey("Then get nodes for AppEUI returns a single item", func() { nodes, err := GetNodesForAppEUI(db, app.AppEUI, 10, 0) So(err, ShouldBeNil) So(nodes, ShouldHaveLength, 1) nodes[0].UsedDevNonces = nil So(nodes[0], ShouldResemble, node) }) Convey("Then get nodes count returns 1", func() { count, err := GetNodesCount(db) So(err, ShouldBeNil) So(count, ShouldEqual, 1) }) Convey("Then get nodes count for AppEUI returns 1", func() { count, err := GetNodesForAppEUICount(db, app.AppEUI) So(err, ShouldBeNil) So(count, ShouldEqual, 1) }) Convey("When updating the node", func() { node.AppKey = [16]byte{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} So(UpdateNode(db, node), ShouldBeNil) Convey("Then the nodes has been updated", func() { node2, err := GetNode(db, node.DevEUI) So(err, ShouldBeNil) node2.UsedDevNonces = nil So(node2, ShouldResemble, node) }) }) Convey("When deleting the node", func() { So(DeleteNode(db, node.DevEUI), ShouldBeNil) Convey("Then get nodes count returns 0", func() { count, err := GetNodesCount(db) So(err, ShouldBeNil) So(count, ShouldEqual, 0) }) }) }) }) }