public void expected_domain_event_is_raised_when_Context_is_added() { // Arrange var contextName = "foo"; var sut = new CapabilityBuilder().Build(); // Act sut.AddContext(contextName); // Assert var @event = sut.DomainEvents.Single(c => c.GetType() == typeof(ContextAddedToCapability)) as ContextAddedToCapability; Assert.Equal( sut.Id, @event.CapabilityId ); Assert.Equal( contextName, @event.ContextName ); }
public async Task put_returns_badrequest_when_updating_capability_with_invalid_name() { using (var builder = new HttpClientBuilder()) { var stubCapability = new CapabilityBuilder().Build(); var errorBody = "message regarding bad name"; var client = builder .WithService <ICapabilityApplicationService>(new ErroneousCapabilityApplicationService(new CapabilityValidationException(errorBody))) .Build(); var dummyCapabilityId = "foo"; var stubInput = $"{{\"name\":\"{stubCapability.Name}\", \"description\":\"{stubCapability.Description}\"}}"; var response = await client.PutAsync($"api/v1/capabilities/{dummyCapabilityId}", new JsonContent(stubInput)); var erroredMessageJSON = $"{{\"message\":\"{errorBody}\"}}"; Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); Assert.Equal( expected: erroredMessageJSON, actual: await response.Content.ReadAsStringAsync() ); } }
public async Task get_all_capabilities_return_expected_list_with_only_v2() { using (var builder = new HttpClientBuilder()) { var capNewWithoutContext = new CapabilityBuilder().Build(); var ctx = new ContextBuilder().WithAccountId(null).WithRoleArn(null).WithRoleEmail(null).Build(); var capNewWithContext = new CapabilityBuilder().WithContexts(ctx).Build(); var populatedContext = new ContextBuilder().Build(); var capNewWithPopulatedContext = new CapabilityBuilder().WithContexts(populatedContext).Build(); Capability[] stubCapabilities = new[] { capNewWithContext, capNewWithoutContext, capNewWithPopulatedContext }; var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: stubCapabilities)) .Build(); var request = new HttpRequestMessage(HttpMethod.Get, "api/v1/adsync"); request.Headers.Authorization = BasicAuthCredentials.BASIC_AUTHENTICATION_HEADER_VALUE; var response = await client.SendAsync(request); var content = await response.Content.ReadAsStringAsync(); Assert.Equal( expected: $"{{\"items\":[{{\"identifier\":\"foo-582a4\",\"members\":[],\"isV1\":false,\"awsAccountId\":\"222222222222\",\"awsRoleArn\":\"arn:aws:iam::528563840976:role/aws-elasticbeanstalk-ec2-role\"}}]}}", actual: content); } }
public void domain_event_is_not_raised_when_Context_with_same_name_is_added_multiple_times() { // Arrange var contextName = "foo"; var sut = new CapabilityBuilder().Build(); // Act sut.AddContext(contextName); sut.AddContext(contextName); sut.AddContext(contextName); // Assert var @event = sut.DomainEvents.Single() as ContextAddedToCapability; Assert.Equal( sut.Id, @event.CapabilityId ); Assert.Equal( contextName, @event.ContextName ); Assert.NotNull(@event.ContextId); }
public async Task get_single_capability_with_a_single_context_returns_expected_body() { using (var builder = new HttpClientBuilder()) { var contextName = "*****@*****.**"; var contextGuid = Guid.NewGuid(); var awsAccountId = "222222222222"; var awsRoleArn = "arne:oharne:dugaariskolepaadenjyskehaandvaerkerskole:Role/ADFS-Developer"; var awsRoleEmail = "*****@*****.**"; var context = new Context(contextGuid, contextName, awsAccountId, awsRoleArn, awsRoleEmail); var stubCapability = new CapabilityBuilder() .WithContexts(context) .Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { stubCapability })) .Build(); var response = await client.GetAsync($"api/v1/capabilities/{stubCapability.Id}"); Assert.Equal( expected: $"{{\"id\":\"{stubCapability.Id}\",\"name\":\"{stubCapability.Name}\",\"rootId\":\"foo-582a4\",\"description\":\"{stubCapability.Description}\",\"members\":[],\"contexts\":[{{\"id\":\"{contextGuid}\",\"name\":\"{contextName}\",\"awsAccountId\":\"{awsAccountId}\",\"awsRoleArn\":\"{awsRoleArn}\",\"awsRoleEmail\":\"{awsRoleEmail}\"}}]}}", actual: await response.Content.ReadAsStringAsync() ); } }
public async Task removing_non_existing_member_from_a_capability_throws_exception() { var capability = new CapabilityBuilder().Build(); var sut = new CapabilityApplicationServiceBuilder() .WithCapabilityRepository(new StubCapabilityRepository(capability)) .Build(); var nonExistingMemberEmail = "*****@*****.**"; await Assert.ThrowsAsync <NotMemberOfCapabilityException>(() => sut.LeaveCapability(capability.Id, nonExistingMemberEmail)); }
public async Task expected_member_is_added_to_capability() { var capability = new CapabilityBuilder().Build(); var sut = new CapabilityApplicationServiceBuilder() .WithCapabilityRepository(new StubCapabilityRepository(capability)) .Build(); var stubMemberEmail = "*****@*****.**"; await sut.JoinCapability(capability.Id, stubMemberEmail); Assert.Equal(new[] { stubMemberEmail }, capability.Members.Select(x => x.Email)); }
public void expected_domain_event_is_raised_when_membership_is_started_for_a_member() { var sut = new CapabilityBuilder().Build(); var stubMemberEmail = "foo"; sut.StartMembershipFor(stubMemberEmail); Assert.Equal( expected: new MemberJoinedCapability(sut.Id, stubMemberEmail), actual: sut.DomainEvents.Last(), comparer: new PropertiesComparer <IDomainEvent>() ); }
public void expected_context_is_added_to_contexts() { // Arrange var contextName = "foo"; var sut = new CapabilityBuilder().Build(); // Act sut.AddContext(contextName); // Assert Assert.Contains(sut.Contexts, context => context.Name == contextName); }
public async Task get_single_capability_returns_expected_status_code() { using (var builder = new HttpClientBuilder()) { var subCapability = new CapabilityBuilder().Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { subCapability })) .Build(); var response = await client.GetAsync($"api/v1/capabilities/{subCapability.Id}"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public async Task post_returns_expected_status_code_when_creating_a_new_capability() { using (var builder = new HttpClientBuilder()) { var dummyCapability = new CapabilityBuilder().Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(dummyCapability)) .Build(); var stubInput = "{\"name\":\"foo\"}"; var response = await client.PostAsync("api/v1/capabilities", new JsonContent(stubInput)); Assert.Equal(HttpStatusCode.Created, response.StatusCode); } }
public async Task expected_member_is_removed_from_capability() { var stubMemberEmail = "*****@*****.**"; var capability = new CapabilityBuilder() .WithMembers(stubMemberEmail) .Build(); var sut = new CapabilityApplicationServiceBuilder() .WithCapabilityRepository(new StubCapabilityRepository(capability)) .Build(); await sut.LeaveCapability(capability.Id, stubMemberEmail); Assert.Empty(capability.Members); }
public async Task adding_the_same_member_to_a_capability_multiple_times_yields_single_membership() { var capability = new CapabilityBuilder().Build(); var sut = new CapabilityApplicationServiceBuilder() .WithCapabilityRepository(new StubCapabilityRepository(capability)) .Build(); var stubMemberEmail = "*****@*****.**"; await sut.JoinCapability(capability.Id, stubMemberEmail); await sut.JoinCapability(capability.Id, stubMemberEmail); Assert.Equal(new[] { stubMemberEmail }, capability.Members.Select(x => x.Email)); }
public async Task post_returns_expected_status_code_when_adding_a_member_to_an_existing_capability() { using (var builder = new HttpClientBuilder()) { var subCapability = new CapabilityBuilder().Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { subCapability })) .Build(); var stubInput = "{\"email\":\"foo\"}"; var response = await client.PostAsync($"api/v1/capabilities/{subCapability.Id}/members", new JsonContent(stubInput)); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public async Task put_returns_expected_status_code_when_updating_existing_capability() { using (var builder = new HttpClientBuilder()) { var dummyCapability = new CapabilityBuilder().Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { dummyCapability })) .Build(); var dummyCapabilityId = "foo"; var stubInput = "{\"name\":\"foo\"}"; var response = await client.PutAsync($"api/v1/capabilities/{dummyCapabilityId}", new JsonContent(stubInput)); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public async Task delete_returns_expected_status_code_when_deleting_an_existing_member_on_a_capability() { using (var builder = new HttpClientBuilder()) { var subCapability = new CapabilityBuilder() .WithMembers("foo") .Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { subCapability })) .Build(); var response = await client.DeleteAsync($"api/v1/capabilities/{subCapability.Id}/members/foo"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public async Task updating_a_non_existing_context_on_an_existing_capability_throws_exception() { var capability = new CapabilityBuilder() .Build(); var sut = new CapabilityApplicationServiceBuilder() .WithCapabilityRepository(new StubCapabilityRepository(capability)) .Build(); var nonExistingContextId = Guid.Empty; var dummyAccountId = "111111111111"; var dummyEmail = "*****@*****.**"; var dummyArn = "mynameisarne"; await Assert.ThrowsAsync <ContextDoesNotExistException>(() => sut.UpdateContext(capability.Id, nonExistingContextId, dummyAccountId, dummyArn, dummyEmail)); }
public async Task get_single_capability_without_any_members_returns_expected_body() { using (var builder = new HttpClientBuilder()) { var stubCapability = new CapabilityBuilder().Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { stubCapability })) .Build(); var response = await client.GetAsync($"api/v1/capabilities/{stubCapability.Id}"); Assert.Equal( expected: $"{{\"id\":\"{stubCapability.Id}\",\"name\":\"{stubCapability.Name}\",\"rootId\":\"{stubCapability.RootId}\",\"description\":\"{stubCapability.Description}\",\"members\":[],\"contexts\":[]}}", actual: await response.Content.ReadAsStringAsync() ); } }
public void expected_nothing_happened_when_adding_a_existing_context() { // Arrange var contextName = "foo"; var existingContext = new Context(Guid.Empty, contextName); var sut = new CapabilityBuilder() .WithContexts(existingContext) .Build(); // Act sut.AddContext(contextName); // Assert Assert.Empty(sut.DomainEvents); Assert.Equal(existingContext, sut.Contexts.Single()); }
public async Task post_returns_expected_location_header_when_creating_a_new_capability() { using (var builder = new HttpClientBuilder()) { var subCapability = new CapabilityBuilder().Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { subCapability })) .Build(); var stubInput = "{\"name\":\"foo\"}"; var response = await client.PostAsync("api/v1/capabilities", new JsonContent(stubInput)); Assert.EndsWith( expectedEndString: $"/api/v1/capabilities/{subCapability.Id}", actualString: response.Headers.Location.ToString() ); } }
public async Task post_returns_expected_body_when_creating_a_new_capability() { using (var builder = new HttpClientBuilder()) { var stubCapability = new CapabilityBuilder().Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: new[] { stubCapability })) .Build(); var stubInput = $"{{\"name\":\"{stubCapability.Name}\", \"description\":\"{stubCapability.Description}\"}}"; var response = await client.PostAsync("api/v1/capabilities", new JsonContent(stubInput)); Assert.Equal( expected: $"{{\"id\":\"{stubCapability.Id}\",\"name\":\"{stubCapability.Name}\",\"rootId\":\"{stubCapability.RootId}\",\"description\":\"{stubCapability.Description}\",\"members\":[],\"contexts\":[]}}", actual: await response.Content.ReadAsStringAsync() ); } }
public async Task get_all_capabilities_returns_expected_list_with_only_v1() { using (var builder = new HttpClientBuilder()) { var capOld = new CapabilityBuilder().WithRootId(null).Build(); Capability[] stubCapabilities = new[] { capOld }; var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapabilities: stubCapabilities)) .Build(); var request = new HttpRequestMessage(HttpMethod.Get, "api/v1/adsync"); request.Headers.Authorization = BasicAuthCredentials.BASIC_AUTHENTICATION_HEADER_VALUE; var response = await client.SendAsync(request); var content = await response.Content.ReadAsStringAsync(); Assert.Equal( expected: $"{{\"items\":[{{\"identifier\":\"Foo\",\"members\":[],\"isV1\":true,\"awsAccountId\":null,\"awsRoleArn\":null}}]}}", actual: content); } }
public async Task get_single_capability_with_a_single_member_returns_expected_body() { using (var builder = new HttpClientBuilder()) { var memberEmail = "*****@*****.**"; var stubCapability = new CapabilityBuilder() .WithMembers(memberEmail) .Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapability)) .Build(); var response = await client.GetAsync($"api/v1/capabilities/{stubCapability.Id}"); Assert.Equal( expected: $"{{\"id\":\"{stubCapability.Id}\",\"name\":\"{stubCapability.Name}\",\"description\":\"{stubCapability.Description}\",\"members\":[{{\"email\":\"{memberEmail}\"}}],\"contexts\":[]}}", actual: await response.Content.ReadAsStringAsync() ); } }
public async Task updating_a_existing_context_on_an_existing_capability() { var context = new Context(Guid.NewGuid(), "default"); var capability = new CapabilityBuilder() .WithContexts(context) .Build(); var sut = new CapabilityApplicationServiceBuilder() .WithCapabilityRepository(new StubCapabilityRepository(capability)) .Build(); var newAccountId = "111111111111"; var newEmail = "*****@*****.**"; var newRoleArn = "mynameisarne"; await sut.UpdateContext(capability.Id, context.Id, newAccountId, newRoleArn, newEmail); var contextFromCapability = capability.Contexts.Single(); Assert.Equal(contextFromCapability.AWSAccountId, newAccountId); Assert.Equal(contextFromCapability.AWSRoleArn, newRoleArn); Assert.Equal(contextFromCapability.AWSRoleEmail, newEmail); }
public async Task get_single_capability_with_a_single_context_returns_expected_body() { using (var builder = new HttpClientBuilder()) { var contextName = "*****@*****.**"; var contextDescription = "wowsuchdescription"; var contextGuid = Guid.NewGuid(); var context = new Context(contextGuid, contextName); var stubCapability = new CapabilityBuilder() .WithContexts(context) .Build(); var client = builder .WithService <ICapabilityApplicationService>(new StubCapabilityApplicationService(stubCapability)) .Build(); var response = await client.GetAsync($"api/v1/capabilities/{stubCapability.Id}"); Assert.Equal( expected: $"{{\"id\":\"{stubCapability.Id}\",\"name\":\"{stubCapability.Name}\",\"description\":\"{stubCapability.Description}\",\"members\":[],\"contexts\":[{{\"id\":\"{contextGuid}\",\"name\":\"{contextName}\"}}]}}", actual: await response.Content.ReadAsStringAsync() ); } }