public void InspectContextForUniqueNoncePasses()
    {
      var nonceStore = MockRepository.GenerateStub<INonceStore>();

      var context = new OAuthContext {Nonce = "2"};

			nonceStore.Stub(stub=>stub.RecordNonceAndCheckIsUnique(context, "2")).Return(true);
      
			var inspector = new NonceStoreInspector(nonceStore);

    	Assert.DoesNotThrow(() => inspector.InspectContext(ProviderPhase.GrantRequestToken, context));      
    }
    public void InspectContextForRepeatedNonceThrows()
    {
      var nonceStore = MockRepository.GenerateStub<INonceStore>();

      var context = new OAuthContext {Nonce = "1"};

    	nonceStore.Stub(stub => stub.RecordNonceAndCheckIsUnique(context, "1")).Return(false);
			
			var inspector = new NonceStoreInspector(nonceStore);

    	var ex = Assert.Throws<OAuthException>(() => inspector.InspectContext(ProviderPhase.GrantRequestToken, context));

			Assert.Equal("The nonce value \"1\" has already been used", ex.Message);
    }
    public void InspectContextForUniqueNoncePasses()
    {
      var repository = new MockRepository();

      var nonceStore = repository.StrictMock<INonceStore>();
      var context = new OAuthContext {Nonce = "2"};

      using (repository.Record())
      {
        Expect.Call(nonceStore.RecordNonceAndCheckIsUnique(context, "2")).Return(true);
      }
      using (repository.Playback())
      {
        var inspector = new NonceStoreInspector(nonceStore);
        inspector.InspectContext(ProviderPhase.GrantRequestToken, context);
      }
    }