public void RedeemClaimTokenThrowsWhenUnexpectedToken() { using (var tokenStream = ClaimFactory.CreateCheckIn("d59cd2ea045744f4a085b18be678e4f0").AsStream()) { MessageMock.Object.BodyPart.Data = tokenStream; Invoking(() => ClaimStore.Instance.Redeem(MessageMock.Object, ResourceTrackerMock.Object)) .Should().Throw <InvalidOperationException>() .WithMessage("Invalid token message, CheckIn token is not expected to be redeemed."); } }
public void ClaimMessageBody() { using (var configurationReaderMockInjectionScope = new SsoConfigurationReaderMockInjectionScope()) { configurationReaderMockInjectionScope.Mock .Setup(ssr => ssr.Read(ClaimStoreSsoSettings.AFFILIATE_APPLICATION_NAME, nameof(ClaimStoreSsoSettings.ClaimStoreCheckInDirectory))) .Returns(Path.GetTempPath()); configurationReaderMockInjectionScope.Mock .Setup(ssr => ssr.Read(ClaimStoreSsoSettings.AFFILIATE_APPLICATION_NAME, nameof(ClaimStoreSsoSettings.ClaimStoreCheckOutDirectory))) .Returns(@"\\server\share"); using (var contentStream = TextStreamDummy.Create(1024 * 1024)) using (var trackingStream = new TrackingStream(contentStream)) { MessageMock.Object.BodyPart.Data = trackingStream; ClaimStore.Instance.SetupMessageBodyCapture(trackingStream, ActivityTrackingModes.Claim, null); ClaimStore.Instance.Claim(MessageMock.Object, ResourceTrackerMock.Object); // message's actual body stream has been exhausted (i.e. saved to disk) contentStream.Position.Should().Be(contentStream.Length); // message's body stream is replaced by a token message using (var reader = new StreamReader(MessageMock.Object.BodyPart.Data)) { reader.ReadToEnd().Should().Be(ClaimFactory.CreateCheckIn(trackingStream.CaptureDescriptor.Data).OuterXml); } // MessageType of token message is promoted in message context var schemaMetadata = SchemaMetadata.For <Claim.CheckIn>(); MessageMock.Verify(m => m.Promote(BtsProperties.MessageType, schemaMetadata.MessageType), Times.Once()); MessageMock.Verify(m => m.Promote(BtsProperties.SchemaStrongName, schemaMetadata.DocumentSpec.DocSpecStrongName), Times.Once()); // payload is claimed to disk and file extension is .chk var captureDescriptor = trackingStream.CaptureDescriptor; captureDescriptor.CaptureMode.Should().Be(MessageBodyCaptureMode.Claimed); captureDescriptor.Data.Should().StartWith(DateTime.Today.ToString(@"yyyyMMdd\\")); File.Exists(Path.Combine(Path.GetTempPath(), captureDescriptor.Data.Replace("\\", "") + ".chk")).Should().BeTrue(); } } }