protected override void Given()
            {
                HandshakeResponse = new HandshakeResponse
                {
                    Ok   = true,
                    Self = new Detail {
                        Id = "my-id", Name = "my-name"
                    },
                    Team = new Detail {
                        Id = "team-id", Name = "team-name"
                    },
                    Users = new[]
                    {
                        new User {
                            Id = "user-1-id", Name = "user-1-name"
                        },
                        new User {
                            Id = "user-2-id", Name = "user-2-name"
                        },
                    },
                    Channels = new[]
                    {
                        new Channel {
                            Id = "i-am-a-channel", Name = "channel-name", IsMember = true
                        }
                    },
                    Groups = new[]
                    {
                        new Group {
                            Id = "i-am-a-group", Name = "group-name", Members = new [] { "my-id" }
                        },
                    },
                    Ims = new[]
                    {
                        new Im {
                            Id = "i-am-a-im", User = "******"
                        }
                    },
                    WebSocketUrl = "some-valid-url"
                };

                GetMockFor <IHandshakeClient>()
                .Setup(x => x.FirmShake(SlackKey))
                .ReturnsAsync(HandshakeResponse);

                Connection = new SlackConnectionStub();
                SlackFactoryStub.Create_Value = Connection;

                GetMockFor <IConnectionFactory>()
                .Setup(x => x.CreateHandshakeClient())
                .Returns(GetMockFor <IHandshakeClient>().Object);

                GetMockFor <IConnectionFactory>()
                .Setup(x => x.CreateWebSocketClient(HandshakeResponse.WebSocketUrl, null))
                .Returns(GetMockFor <IWebSocketClient>().Object);

                GetMockFor <IWebSocketClient>()
                .Setup(x => x.Connect())
                .Returns(Task.Factory.StartNew(() => { }));
            }
            protected override void Given()
            {
                var handshakeResponse = new HandshakeResponse
                {
                    Ok           = true,
                    WebSocketUrl = "some-valid-url"
                };

                GetMockFor <IHandshakeClient>()
                .Setup(x => x.FirmShake(SlackKey))
                .ReturnsAsync(handshakeResponse);

                Connection = new SlackConnectionStub();
                SlackFactoryStub.Create_Value = Connection;

                GetMockFor <IConnectionFactory>()
                .Setup(x => x.CreateHandshakeClient())
                .Returns(GetMockFor <IHandshakeClient>().Object);

                ProxySettings = new ProxySettings("hi", "you", "ok?");
                GetMockFor <IConnectionFactory>()
                .Setup(x => x.CreateWebSocketClient(handshakeResponse.WebSocketUrl, ProxySettings))
                .Returns(GetMockFor <IWebSocketClient>().Object);

                GetMockFor <IWebSocketClient>()
                .Setup(x => x.Connect())
                .Returns(Task.Factory.StartNew(() => { }));
            }