Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
9f94124
Add a RestController
Aniruddh25 Nov 17, 2021
9e5bf89
Add a RestService
Aniruddh25 Nov 17, 2021
fa237e0
Add a RequestParser
Aniruddh25 Nov 17, 2021
3aa95bd
Add a QueryStructure
Aniruddh25 Nov 17, 2021
e5d23b0
Add new apis to QueryEngine and QueryBuilder to build query using Que…
Aniruddh25 Nov 17, 2021
99cfb17
Rename to FindQueryStructure
Aniruddh25 Nov 17, 2021
e989102
Fix route
Aniruddh25 Nov 17, 2021
3687547
Default initialize lists and dictionaries
Aniruddh25 Nov 17, 2021
8791d2f
Use * by default for fields, and quoteidentifier
Aniruddh25 Nov 17, 2021
918c308
Fix compilation issues
Aniruddh25 Nov 17, 2021
ff1aaba
Add Build for Postgres
Aniruddh25 Nov 17, 2021
ad63a6f
Add validation functions
Aniruddh25 Nov 17, 2021
fd3d39c
RequestParser has static functions
Aniruddh25 Nov 17, 2021
d63fb14
Add a RestService
Aniruddh25 Nov 17, 2021
94ae193
Add placeholder for CosmosQueryEngine
Aniruddh25 Nov 17, 2021
db2454e
Add comments to controller
Aniruddh25 Nov 17, 2021
e24880d
Add comments to MsSqlQueryBuilder
Aniruddh25 Nov 17, 2021
f236f0f
Add comments for the QueryEngine
Aniruddh25 Nov 17, 2021
bcd10a2
Add comments to RestService
Aniruddh25 Nov 17, 2021
21a74cb
Fix comments
Aniruddh25 Nov 17, 2021
29f0533
Add summary comment to RequestParser
Aniruddh25 Nov 17, 2021
d814132
Merge from origin main
Aniruddh25 Nov 17, 2021
45657c9
Add databasename to the route
Aniruddh25 Nov 18, 2021
798df01
Rename to primaryKeyRoute
Aniruddh25 Nov 19, 2021
efadbbe
Add MsSqlRestApiTests and base class MsSqlTestBase
Aniruddh25 Nov 19, 2021
7d8a07d
Fix the tests to use separate table name
Aniruddh25 Nov 19, 2021
f14f007
Fix formatting
Aniruddh25 Nov 19, 2021
105d640
Make sure any changes to the appsettings are reflected in the Functio…
Aniruddh25 Nov 22, 2021
f67f680
remove empty comment line
Aniruddh25 Nov 23, 2021
86335ae
Make sure Rest works from Functions project too
Aniruddh25 Nov 23, 2021
74f4cc4
Address PR comments
Aniruddh25 Nov 23, 2021
216f7aa
Remove RestApis from functions project since code duplication became …
Aniruddh25 Nov 23, 2021
fa8838a
Be explicit about FindMany not yet supported
Aniruddh25 Nov 23, 2021
515b406
Keep separate test for FindByIdTestWithQueryField
Aniruddh25 Nov 23, 2021
a403aaf
Add more explanation to summary comments
Aniruddh25 Nov 23, 2021
0f6cf3c
Add a negative test for null field name
Aniruddh25 Nov 23, 2021
df64083
Merge origin/main
Aniruddh25 Nov 23, 2021
9bbd7b0
Fix order of using
Aniruddh25 Nov 23, 2021
8f302f0
Fix system using
Aniruddh25 Nov 23, 2021
d78620f
Fix order of imports
Aniruddh25 Nov 23, 2021
89de05e
Fix order of imports
Aniruddh25 Nov 23, 2021
295c666
Services comes after Service.Resolvers
Aniruddh25 Nov 23, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions DataGateway.Service.Tests/MsSqlTests/MsSqlGraphQLQueryTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
using System.Text.Json;
using System.Threading.Tasks;
using Azure.DataGateway.Service.Controllers;
using Azure.DataGateway.Services;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Azure.DataGateway.Service.Tests.MsSql
{
/// <summary>
/// Test GraphQL Queries validating proper resolver/engine operation.
/// </summary>
[TestClass, TestCategory(TestCategory.MSSQL)]
public class MsSqlGraphQLQueryTests : MsSqlTestBase
{
#region Test Fixture Setup
private static GraphQLService _graphQLService;
private static GraphQLController _graphQLController;
private static readonly string _integrationTableName = "character";

/// <summary>
/// Sets up test fixture for class, only to be run once per test run, as defined by
/// MSTest decorator.
/// </summary>
/// <param name="context"></param>
[ClassInitialize]
public static void InitializeTestFixture(TestContext context)
{
InitializeTestFixture(context, _integrationTableName);

// Setup GraphQL Components
//
_graphQLService = new GraphQLService(_queryEngine, mutationEngine: null, _metadataStoreProvider);
_graphQLController = new GraphQLController(_graphQLService);
}

/// <summary>
/// Cleans up querying table used for Tests in this class. Only to be run once at
/// conclusion of test run, as defined by MSTest decorator.
/// </summary>
[ClassCleanup]
public static void CleanupTestFixture()
{
CleanupTestFixture(_integrationTableName);
}

#endregion

#region Tests
/// <summary>
/// Gets result of quering singular object
/// </summary>
/// <returns></returns>
[TestMethod]
public async Task SingleResultQuery()
{
string graphQLQueryName = "characterById";
string graphQLQuery = "{\"query\":\"{\\n characterById(id:2){\\n name\\n primaryFunction\\n}\\n}\\n\"}";
string msSqlQuery = $"SELECT name, primaryFunction FROM { _integrationTableName } WHERE id = 2 FOR JSON PATH, INCLUDE_NULL_VALUES, WITHOUT_ARRAY_WRAPPER";

string actual = await GetGraphQLResultAsync(graphQLQuery, graphQLQueryName);
string expected = await GetDatabaseResultAsync(msSqlQuery);

Assert.AreEqual(actual, expected);
}

/// <summary>
/// Gets array of results for querying more than one item.
/// </summary>
/// <returns></returns>
[TestMethod]
public async Task MultipleResultQuery()
{
string graphQLQueryName = "characterList";
string graphQLQuery = "{\"query\":\"{\\n characterList {\\n name\\n primaryFunction\\n }\\n}\\n\"}";
string msSqlQuery = $"SELECT name, primaryFunction FROM character FOR JSON PATH, INCLUDE_NULL_VALUES";

string actual = await GetGraphQLResultAsync(graphQLQuery, graphQLQueryName);
string expected = await GetDatabaseResultAsync(msSqlQuery);

Assert.AreEqual(actual, expected);
}

#endregion

#region Query Test Helper Functions
/// <summary>
/// Sends graphQL query through graphQL service, consisting of gql engine processing (resolvers, object serialization)
/// returning JSON formatted result from 'data' property.
/// </summary>
/// <param name="graphQLQuery"></param>
/// <param name="graphQLQueryName"></param>
/// <returns>string in JSON format</returns>
public static async Task<string> GetGraphQLResultAsync(string graphQLQuery, string graphQLQueryName)
{
_graphQLController.ControllerContext.HttpContext = MsSqlTestBase.GetHttpContextWithBody(graphQLQuery);
JsonDocument graphQLResult = await _graphQLController.PostAsync();
JsonElement graphQLResultData = graphQLResult.RootElement.GetProperty("data").GetProperty(graphQLQueryName);
return graphQLResultData.ToString();
}

#endregion
}
}
180 changes: 0 additions & 180 deletions DataGateway.Service.Tests/MsSqlTests/MsSqlQueryTests.cs

This file was deleted.

Loading