(t *testing.T)
| 127 | } |
| 128 | |
| 129 | func TestUnregisterSessionCloseSession(t *testing.T) { |
| 130 | sessionID := uuid.New() |
| 131 | payload := []byte(t.Name()) |
| 132 | sender := newMockTransportSender(sessionID, payload) |
| 133 | mg := NewManager(&nopLogger, sender.muxSession, nil) |
| 134 | ctx, cancel := context.WithCancel(context.Background()) |
| 135 | |
| 136 | managerDone := make(chan struct{}) |
| 137 | go func() { |
| 138 | err := mg.Serve(ctx) |
| 139 | require.Error(t, err) |
| 140 | close(managerDone) |
| 141 | }() |
| 142 | |
| 143 | cfdConn, originConn := net.Pipe() |
| 144 | session, err := mg.RegisterSession(ctx, sessionID, cfdConn) |
| 145 | require.NoError(t, err) |
| 146 | require.NotNil(t, session) |
| 147 | |
| 148 | unregisteredChan := make(chan struct{}) |
| 149 | go func() { |
| 150 | _, err := originConn.Write(payload) |
| 151 | require.NoError(t, err) |
| 152 | |
| 153 | err = mg.UnregisterSession(ctx, sessionID, "eyeball closed session", true) |
| 154 | require.NoError(t, err) |
| 155 | |
| 156 | close(unregisteredChan) |
| 157 | }() |
| 158 | |
| 159 | closedByRemote, err := session.Serve(ctx, time.Minute) |
| 160 | require.True(t, closedByRemote) |
| 161 | require.Error(t, err) |
| 162 | |
| 163 | <-unregisteredChan |
| 164 | cancel() |
| 165 | <-managerDone |
| 166 | } |
| 167 | |
| 168 | func TestManagerCtxDoneCloseSessions(t *testing.T) { |
| 169 | sessionID := uuid.New() |
nothing calls this directly
no test coverage detected