public void WhenRequestMethodRequiresAuthentication_ThenAuthSessionIsSetInRequestHeader()
        {
            AuthSession authSession = new AuthSession
            {
                AuthToken     = "test",
                UserAuthToken = "test-user-token"
            };

            _connection.GetAuthSessionHeader().Returns(authSession);

            RequestMessageCreator creator = new RequestMessageCreator(_connection, _serviceLocator);

            Guid appid = Guid.NewGuid();

            Request request = new Request();

            creator.SetRequestHeader(
                HealthVaultMethods.NewApplicationCreationInfo,
                2,
                false,
                recordId: Guid.NewGuid(),
                appId: appid,
                infoXml: "<parma/>",
                request: request);

            Assert.IsNull(request.Header.AppId);
            Assert.AreEqual(authSession.AuthToken, request.Header.AuthSession.AuthToken);
        }
        public void WhenRequestMethod_ThenSerialized()
        {
            AuthSession authSession = new AuthSession
            {
                AuthToken     = "test",
                UserAuthToken = "test-user-token"
            };

            _connection.GetAuthSessionHeader().Returns(authSession);

            RequestMessageCreator creator = new RequestMessageCreator(_connection, _serviceLocator);

            Request request = new Request();

            string requestXml = creator.Create(
                method: HealthVaultMethods.GetThings,
                methodVersion: 2,
                isMethodAnonymous: false,
                parameters: "<parma/>",
                recordId: Guid.NewGuid(),
                appId: null);

            XPathNavigator requestNavigator = requestXml.AsXPathNavigator();

            XPathNavigator authNavigator   = requestNavigator.SelectSingleNode("child::auth");
            XPathNavigator headerNavigator = requestNavigator.SelectSingleNode("child::header");
            XPathNavigator infoNavigator   = requestNavigator.SelectSingleNode("child::info");

            Assert.IsNotNull(authNavigator);
            Assert.IsNotNull(headerNavigator);
            Assert.IsNotNull(infoNavigator);
        }
        public void WhenRequestMethodIsAnonymous_ThenAppIdIsSetInRequestHeader()
        {
            RequestMessageCreator creator = new RequestMessageCreator(_connection, _serviceLocator);

            Guid appid = Guid.NewGuid();

            Request request = new Request();

            creator.SetRequestHeader(
                HealthVaultMethods.NewApplicationCreationInfo,
                2,
                true,
                recordId: Guid.NewGuid(),
                appId: appid,
                infoXml: "<parma/>",
                request: request);

            Assert.AreEqual(appid.ToString(), request.Header.AppId);
            Assert.IsNull(request.Header.AuthSession);
        }