public async Task CreateAsync_HasRight()
        {
            using (var env = new TestEnvironment())
            {
                env.SetUser("user01", SystemRoles.User);

                var resource = new TestProjectDataResource
                {
                    Id         = "testnew",
                    Str        = "new",
                    ProjectRef = "project01",
                    OwnerRef   = "user01"
                };
                TestProjectDataResource newResource = await env.Service.CreateAsync(resource);

                Assert.That(newResource, Is.Not.Null);
            }
        }
        public void CreateAsync_ProjectNotSet()
        {
            using (var env = new TestEnvironment())
            {
                env.SetUser("user01", SystemRoles.User);

                var resource = new TestProjectDataResource
                {
                    Id       = "testnew",
                    Str      = "new",
                    OwnerRef = "user01"
                };
                var ex = Assert.ThrowsAsync <JsonApiException>(async() =>
                {
                    await env.Service.CreateAsync(resource);
                });

                Assert.That(ex.GetStatusCode(), Is.EqualTo(StatusCodes.Status400BadRequest));
            }
        }
        public async Task UpdateAsync_HasOwnRight()
        {
            using (var env = new TestEnvironment())
            {
                env.SetUser("user01", SystemRoles.User);
                env.JsonApiContext.AttributesToUpdate.Returns(new Dictionary <AttrAttribute, object>
                {
                    { env.GetAttribute("str"), "new" }
                });
                env.JsonApiContext.RelationshipsToUpdate.Returns(new Dictionary <RelationshipAttribute, object>());

                var resource = new TestProjectDataResource
                {
                    Id  = "test03",
                    Str = "new"
                };
                TestProjectDataResource updatedResource = await env.Service.UpdateAsync(resource.Id, resource);

                Assert.That(updatedResource, Is.Not.Null);
                Assert.That(updatedResource.Str, Is.EqualTo("new"));
            }
        }
        public void UpdateAsync_NoRight()
        {
            using (var env = new TestEnvironment())
            {
                env.SetUser("user02", SystemRoles.User);
                env.JsonApiContext.AttributesToUpdate.Returns(new Dictionary <AttrAttribute, object>
                {
                    { env.GetAttribute("str"), "new" }
                });
                env.JsonApiContext.RelationshipsToUpdate.Returns(new Dictionary <RelationshipAttribute, object>());

                var resource = new TestProjectDataResource
                {
                    Id  = "test01",
                    Str = "new"
                };
                var ex = Assert.ThrowsAsync <JsonApiException>(async() =>
                {
                    await env.Service.UpdateAsync(resource.Id, resource);
                });

                Assert.That(ex.GetStatusCode(), Is.EqualTo(StatusCodes.Status403Forbidden));
            }
        }