public async Task CreateCard_ShouldAddNewCard()
        {
            A.CallTo(() => fakeStorage.FindCollection(A <Guid> ._, default(CancellationToken)))
            .Returns(ownedCollection);

            var result = await controller.CreateCard(cardDto, default(CancellationToken));

            result.Should().BeOfType <CreatedAtRouteResult>();
            A.CallTo(() => fakeStorage.AddCard(A <Card> .That.Matches(
                                                   card => card.Term == cardDto.Term &&
                                                   card.Definition == cardDto.Definition &&
                                                   card.OwnerLogin == "admin"), default(CancellationToken)))
            .MustHaveHappened();
        }
        public async Task <ActionResult> CreateCard([FromBody] CardDto cardDto, CancellationToken token)
        {
            var newCard    = new Card(cardDto.Term, cardDto.Definition, User.Identity.Name, cardDto.CollectionId);
            var collection = await storage.FindCollection(cardDto.CollectionId, token);

            if (collection == null)
            {
                return(UnprocessableEntity("collection does not exist"));
            }
            if (!User.OwnsResource(collection))
            {
                return(Forbid());
            }

            await storage.AddCard(newCard, token);

            return(CreatedAtRoute(
                       "GetCardById", new { id = newCard.Id }, newCard.Id));
        }