Skip to content

Commit

Permalink
Fix service test.
Browse files Browse the repository at this point in the history
Add mocks for checking service
  • Loading branch information
Laura committed Nov 20, 2024
1 parent 04ce0d3 commit 958678b
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 5 deletions.
87 changes: 87 additions & 0 deletions hosting/hooks_for_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package hosting

import (
"bytes"
"errors"
"fmt"
"net"
"testing"
"time"

. "gopkg.in/check.v1"
)
Expand All @@ -19,3 +23,86 @@ func noErrHelper() error {
func errHelper() error {
return errors.New("error2")
}

func mockCheckService() *checkService {
listener := newMockListener()
conn := newMockConn()

listener.connChan <- conn

return &checkService{
l: listener,
conn: conn,
port: 12345,
}
}

type mockListener struct {
connChan chan net.Conn
}

func newMockListener() *mockListener {
return &mockListener{
connChan: make(chan net.Conn, 1),
}
}

func (m *mockListener) Accept() (net.Conn, error) {
conn, ok := <-m.connChan
if !ok {
return nil, fmt.Errorf("mock listener closed")
}
return conn, nil
}

func (m *mockListener) Close() error {
close(m.connChan)
return nil
}

func (m *mockListener) Addr() net.Addr {
return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 12345}
}

type mockConn struct {
readBuffer *bytes.Buffer
writeBuffer *bytes.Buffer
}

func newMockConn() *mockConn {
return &mockConn{
readBuffer: &bytes.Buffer{},
writeBuffer: &bytes.Buffer{},
}
}

func (m *mockConn) Read(b []byte) (n int, err error) {
return m.readBuffer.Read(b)
}

func (m *mockConn) Write(b []byte) (n int, err error) {
return m.writeBuffer.Write(b)
}

func (m *mockConn) Close() error {
return nil
}

func (m *mockConn) LocalAddr() net.Addr {
return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 0}
}
func (m *mockConn) RemoteAddr() net.Addr {
return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 0}
}

func (m *mockConn) SetDeadline(t time.Time) error {
return nil
}

func (m *mockConn) SetReadDeadline(t time.Time) error {
return nil
}

func (m *mockConn) SetWriteDeadline(t time.Time) error {
return nil
}
11 changes: 6 additions & 5 deletions hosting/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func (h *hostingSuite) Test_NewService_returnsAnErrorWhenWrongPortIsGiven(c *C)
c.Assert(srvc, IsNil)
}

func (s *hostingSuite) Test_NewConferenceRoom_returnsAnErrorWhenFailsCreatingServer(c *C) {
func (h *hostingSuite) Test_NewConferenceRoom_returnsAnErrorWhenFailsCreatingServer(c *C) {
path := "/tmp/wahay/"
sID := 2
servers := &servers{
Expand All @@ -135,7 +135,7 @@ func (s *hostingSuite) Test_NewConferenceRoom_returnsAnErrorWhenFailsCreatingSer
c.Assert(err, ErrorMatches, expectedError)
}

func (s *hostingSuite) Test_NewConferenceRoom_returnsAnErrorWhenFailsStartingServer(c *C) {
func (h *hostingSuite) Test_NewConferenceRoom_returnsAnErrorWhenFailsStartingServer(c *C) {
path := "/tmp/wahay/"
var perm fs.FileMode = 0700

Expand All @@ -161,7 +161,7 @@ func (s *hostingSuite) Test_NewConferenceRoom_returnsAnErrorWhenFailsStartingSer
c.Assert(err, ErrorMatches, expectedError)
}

func (s *hostingSuite) Test_NewConferenceRoom_returnsNilWhenSuccessfullyCreatesANewConferenceRoom(c *C) {
func (h *hostingSuite) Test_NewConferenceRoom_returnsNilWhenSuccessfullyCreatesANewConferenceRoom(c *C) {
servers := &servers{
nextID: 2,
}
Expand All @@ -185,14 +185,15 @@ func (s *hostingSuite) Test_NewConferenceRoom_returnsNilWhenSuccessfullyCreatesA
server: &http.Server{},
address: "127.0.0.1:5545",
},
checkServer: mockCheckService(),
}
sud := SuperUserData{}
err := srvc.NewConferenceRoom("", sud)

c.Assert(err, IsNil)
}

func (s *hostingSuite) Test_Close_returnsErrorNilWhenHttpServerRoomAndOnionAreAlreadyEmpty(c *C) {
func (h *hostingSuite) Test_Close_returnsErrorNilWhenHttpServerRoomAndOnionAreAlreadyEmpty(c *C) {
srvc := &service{
collection: &servers{
dataDir: "tmp/wahay",
Expand All @@ -202,7 +203,7 @@ func (s *hostingSuite) Test_Close_returnsErrorNilWhenHttpServerRoomAndOnionAreAl
c.Assert(err, IsNil)
}

func (s *hostingSuite) Test_Close_returnsAnErrorWhenFailsClosingRoom(c *C) {
func (h *hostingSuite) Test_Close_returnsAnErrorWhenFailsClosingRoom(c *C) {
srvc := &service{
room: &conferenceRoom{
server: &server{
Expand Down

0 comments on commit 958678b

Please sign in to comment.