- Added Program.cs to set up the web application with Serilog for logging, health check endpoints, and a placeholder admission endpoint. - Configured Kestrel server to use TLS 1.3 and handle client certificates appropriately. - Created StellaOps.Zastava.Webhook.csproj with necessary dependencies including Serilog and Polly. - Documented tasks in TASKS.md for the Zastava Webhook project, outlining current work and exit criteria for each task.
		
			
				
	
	
		
			118 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using FluentAssertions;
 | |
| using Machine.Specifications;
 | |
| using MELT;
 | |
| using MongoDB.Driver;
 | |
| using MongoDB.Driver.Linq;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Threading.Tasks;
 | |
| using It = Machine.Specifications.It;
 | |
| 
 | |
| // ReSharper disable InconsistentNaming
 | |
| // ReSharper disable UnusedMember.Local
 | |
| namespace Mongo2GoTests.Runner
 | |
| {
 | |
|     [Subject("Runner Integration Test")]
 | |
|     public class when_using_the_inbuild_serialization : MongoIntegrationTest
 | |
|     {
 | |
|         static TestDocument findResult;
 | |
| 
 | |
| 
 | |
|         Establish context = () =>
 | |
|         {
 | |
|             CreateConnection();
 | |
|             _collection.InsertOne(TestDocument.DummyData1());
 | |
|         };
 | |
| 
 | |
|         Because of = () => findResult = _collection.FindSync<TestDocument>(_ => true).First();
 | |
| 
 | |
|         It should_return_a_result = () => findResult.Should().NotBeNull();
 | |
|         It should_hava_expected_data = () => findResult.Should().BeEquivalentTo(TestDocument.DummyData1(), cfg => cfg.Excluding(d => d.Id));
 | |
| 
 | |
|         Cleanup stuff = () => _runner.Dispose();
 | |
|     }
 | |
| 
 | |
|     [Subject("Runner Integration Test")]
 | |
|     public class when_using_the_new_linq_support : MongoIntegrationTest
 | |
|     {
 | |
|         static List<TestDocument> queryResult;
 | |
| 
 | |
|         Establish context = () =>
 | |
|         {
 | |
|             CreateConnection();
 | |
|             _collection.InsertOne(TestDocument.DummyData1());
 | |
|             _collection.InsertOne(TestDocument.DummyData2());
 | |
|             _collection.InsertOne(TestDocument.DummyData3());
 | |
|         };
 | |
| 
 | |
|         Because of = () =>
 | |
|         {
 | |
|             queryResult = (from c in _collection.AsQueryable()
 | |
|                            where c.StringTest == TestDocument.DummyData2().StringTest || c.StringTest == TestDocument.DummyData3().StringTest
 | |
|                            select c).ToList();
 | |
|         };
 | |
| 
 | |
|         It should_return_two_documents = () => queryResult.Count().Should().Be(2);
 | |
|         It should_return_document2 = () => queryResult.ElementAt(0).IntTest = TestDocument.DummyData2().IntTest;
 | |
|         It should_return_document3 = () => queryResult.ElementAt(1).IntTest = TestDocument.DummyData3().IntTest;
 | |
| 
 | |
|         Cleanup stuff = () => _runner.Dispose();
 | |
|     }
 | |
| 
 | |
|     [Subject("Runner Integration Test")]
 | |
|     public class when_using_commands_that_create_console_output : MongoIntegrationTest
 | |
|     {
 | |
|         static List<Task> taskList = new List<Task>();
 | |
| 
 | |
|         private Establish context = () =>
 | |
|         {
 | |
|             CreateConnection();
 | |
|         };
 | |
| 
 | |
|         private Because of = () =>
 | |
|         {
 | |
|             var createIndexModel = new CreateIndexModel<TestDocument>(Builders<TestDocument>.IndexKeys.Ascending(x => x.IntTest));
 | |
|             taskList.Add(_collection.Indexes.CreateOneAsync(createIndexModel).WithTimeout(TimeSpan.FromMilliseconds(5000)));
 | |
|             taskList.Add(_collection.Indexes.DropAllAsync().WithTimeout(TimeSpan.FromMilliseconds(5000)));
 | |
|         };
 | |
| 
 | |
|         It should_not_timeout = () => Task.WaitAll(taskList.ToArray());
 | |
| 
 | |
|         Cleanup stuff = () => _runner.Dispose();
 | |
|     }
 | |
| 
 | |
| 
 | |
|     [Subject("Runner Integration Test")]
 | |
|     public class when_using_microsoft_ilogger : MongoIntegrationTest
 | |
|     {
 | |
|         static List<Task> taskList = new List<Task>();
 | |
|         static ITestLoggerFactory loggerFactory;
 | |
| 
 | |
|         private Establish context = () =>
 | |
|         {
 | |
|             loggerFactory = TestLoggerFactory.Create();
 | |
|             var logger = loggerFactory.CreateLogger("MyTestLogger");
 | |
|             CreateConnection(logger);
 | |
|         };
 | |
| 
 | |
|         private Because of = () =>
 | |
|         {
 | |
|             var createIndexModel = new CreateIndexModel<TestDocument>(Builders<TestDocument>.IndexKeys.Ascending(x => x.IntTest));
 | |
|             taskList.Add(_collection.Indexes.CreateOneAsync(createIndexModel).WithTimeout(TimeSpan.FromMilliseconds(5000)));
 | |
|             taskList.Add(_collection.Indexes.DropAllAsync().WithTimeout(TimeSpan.FromMilliseconds(5000)));
 | |
|         };
 | |
| 
 | |
|         It should_not_timeout = () => Task.WaitAll(taskList.ToArray());
 | |
|         It should_have_received_many_logs = () =>
 | |
|             loggerFactory.Sink.LogEntries.Count(l => l.LogLevel == Microsoft.Extensions.Logging.LogLevel.Information)
 | |
|             .Should().BeGreaterThan(10);
 | |
|         It should_have_created_collection_statement = () => loggerFactory.Sink.LogEntries
 | |
|             .Count(l => l.Properties.Any(p => p.Key == "message" && (string)p.Value == "createCollection"))
 | |
|             .Should().BeGreaterOrEqualTo(1);
 | |
| 
 | |
|         Cleanup stuff = () => _runner.Dispose();
 | |
|     }
 | |
| }
 | |
| // ReSharper restore UnusedMember.Local
 | |
| // ReSharper restore InconsistentNaming |