// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System; using System.Threading.Tasks; using FakeItEasy; using Squidex.Infrastructure.States; using Xunit; namespace Squidex.Domain.Users { public class DefaultKeyStoreTests { private readonly ISnapshotStore store = A.Fake>(); private readonly DefaultKeyStore sut; public DefaultKeyStoreTests() { sut = new DefaultKeyStore(store); } [Fact] public async Task Should_generate_signing_credentials_once() { A.CallTo(() => store.ReadAsync(A._)) .Returns((null!, 0)); var credentials1 = await sut.GetSigningCredentialsAsync(); var credentials2 = await sut.GetSigningCredentialsAsync(); Assert.Same(credentials1, credentials2); A.CallTo(() => store.ReadAsync(A._)) .MustHaveHappenedOnceExactly(); A.CallTo(() => store.WriteAsync(A._, A._, 0, 0)) .MustHaveHappenedOnceExactly(); } [Fact] public async Task Should_generate_validation_keys_once() { A.CallTo(() => store.ReadAsync(A._)) .Returns((null!, 0)); var credentials1 = await sut.GetValidationKeysAsync(); var credentials2 = await sut.GetValidationKeysAsync(); Assert.Same(credentials1, credentials2); A.CallTo(() => store.ReadAsync(A._)) .MustHaveHappenedOnceExactly(); A.CallTo(() => store.WriteAsync(A._, A._, 0, 0)) .MustHaveHappenedOnceExactly(); } } }