Skip to content

Commit c2b1250

Browse files
Include schema name and group name in SchemaProperties (Azure#27641)
* Include schema name and group name in SchemaProperties * Fix test
1 parent e769a3a commit c2b1250

File tree

8 files changed

+351
-6
lines changed

8 files changed

+351
-6
lines changed

sdk/schemaregistry/Azure.Data.SchemaRegistry/api/Azure.Data.SchemaRegistry.netstandard2.0.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ public partial class SchemaProperties
2121
{
2222
internal SchemaProperties() { }
2323
public Azure.Data.SchemaRegistry.SchemaFormat Format { get { throw null; } }
24+
public string GroupName { get { throw null; } }
2425
public string Id { get { throw null; } }
26+
public string Name { get { throw null; } }
2527
}
2628
public partial class SchemaRegistryClient
2729
{
@@ -46,7 +48,10 @@ public enum ServiceVersion
4648
}
4749
public static partial class SchemaRegistryModelFactory
4850
{
51+
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
4952
public static Azure.Data.SchemaRegistry.SchemaProperties SchemaProperties(Azure.Data.SchemaRegistry.SchemaFormat format, string schemaId) { throw null; }
53+
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
54+
public static Azure.Data.SchemaRegistry.SchemaProperties SchemaProperties(Azure.Data.SchemaRegistry.SchemaFormat format, string schemaId, string groupName, string name) { throw null; }
5055
}
5156
public partial class SchemaRegistrySchema
5257
{

sdk/schemaregistry/Azure.Data.SchemaRegistry/src/SchemaProperties.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ namespace Azure.Data.SchemaRegistry
88
/// </summary>
99
public class SchemaProperties
1010
{
11-
internal SchemaProperties(SchemaFormat format, string schemaId)
11+
internal SchemaProperties(SchemaFormat format, string schemaId, string groupName, string name)
1212
{
1313
Id = schemaId;
1414
Format = format;
15+
GroupName = groupName;
16+
Name = name;
1517
}
1618

1719
/// <summary>
@@ -23,5 +25,15 @@ internal SchemaProperties(SchemaFormat format, string schemaId)
2325
/// Serialization type for the schema being stored.
2426
/// </summary>
2527
public SchemaFormat Format { get; }
28+
29+
/// <summary>
30+
/// The group name for the schema.
31+
/// </summary>
32+
public string GroupName { get; }
33+
34+
/// <summary>
35+
/// The name of the schema.
36+
/// </summary>
37+
public string Name { get; }
2638
}
2739
}

sdk/schemaregistry/Azure.Data.SchemaRegistry/src/SchemaRegistryClient.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ private async Task<Response<SchemaProperties>> RegisterSchemaInternalAsync(
123123
response = RestClient.Register(groupName, schemaName,format.ContentType, new BinaryData(schemaDefinition).ToStream(), cancellationToken);
124124
}
125125

126-
var properties = new SchemaProperties(format, response.Headers.SchemaId);
126+
var properties = new SchemaProperties(format, response.Headers.SchemaId, response.Headers.SchemaGroupName, response.Headers.SchemaName);
127127

128128
return Response.FromValue(properties, response);
129129
}
@@ -195,7 +195,7 @@ private async Task<Response<SchemaProperties>> GetSchemaPropertiesInternalAsync(
195195
response = RestClient.QueryIdByContent(groupName, schemaName, format.ContentType, new BinaryData(schemaDefinition).ToStream(), cancellationToken);
196196
}
197197

198-
var properties = new SchemaProperties(format, response.Headers.SchemaId);
198+
var properties = new SchemaProperties(format, response.Headers.SchemaId, response.Headers.SchemaGroupName, response.Headers.SchemaName);
199199

200200
return Response.FromValue(properties, response);
201201
}
@@ -245,7 +245,7 @@ private async Task<Response<SchemaRegistrySchema>> GetSchemaInternalAsync(string
245245
}
246246

247247
SchemaFormat format = new SchemaFormat(response.Headers.ContentType.Split('=')[1]);
248-
var properties = new SchemaProperties(format, response.Headers.SchemaId);
248+
var properties = new SchemaProperties(format, response.Headers.SchemaId, response.Headers.SchemaGroupName, response.Headers.SchemaName);
249249
var schema = new SchemaRegistrySchema(properties, BinaryData.FromStream(response.Value).ToString());
250250

251251
return Response.FromValue(schema, response);

sdk/schemaregistry/Azure.Data.SchemaRegistry/src/SchemaRegistryModelFactory.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT License.
33

4+
using System.ComponentModel;
5+
46
namespace Azure.Data.SchemaRegistry
57
{
68
/// <summary>
@@ -14,6 +16,18 @@ public static class SchemaRegistryModelFactory
1416
/// <param name="format">The format for the schema.</param>
1517
/// <param name="schemaId">The ID of the schema.</param>
1618
/// <returns></returns>
17-
public static SchemaProperties SchemaProperties(SchemaFormat format, string schemaId) => new(format, schemaId);
19+
[EditorBrowsable(EditorBrowsableState.Never)]
20+
public static SchemaProperties SchemaProperties(SchemaFormat format, string schemaId) => SchemaProperties(format, schemaId, null, null);
21+
22+
/// <summary>
23+
/// Constructs a SchemaProperties instance for mocking.
24+
/// </summary>
25+
/// <param name="format">The format for the schema.</param>
26+
/// <param name="schemaId">The ID of the schema.</param>
27+
/// <param name="groupName">The group name for the schema.</param>
28+
/// <param name="name">The name of the schema.</param>
29+
/// <returns></returns>
30+
[EditorBrowsable(EditorBrowsableState.Never)]
31+
public static SchemaProperties SchemaProperties(SchemaFormat format, string schemaId, string groupName, string name) => new(format, schemaId, groupName, name);
1832
}
1933
}

sdk/schemaregistry/Azure.Data.SchemaRegistry/tests/SchemaPropertiesTest.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ public class SchemaPropertiesTest
1010
[Test]
1111
public void CanCreateFromCtor()
1212
{
13-
var properties = new SchemaProperties(SchemaFormat.Avro, "schemaId");
13+
var properties = new SchemaProperties(SchemaFormat.Avro, "schemaId", "groupName", "name");
1414
Assert.AreEqual(SchemaFormat.Avro, properties.Format);
1515
Assert.AreEqual("schemaId", properties.Id);
16+
Assert.AreEqual("groupName", properties.GroupName);
17+
Assert.AreEqual("name", properties.Name);
1618
}
1719

1820
[Test]
@@ -22,5 +24,15 @@ public void CanCreateFromFactory()
2224
Assert.AreEqual(SchemaFormat.Avro, properties.Format);
2325
Assert.AreEqual("schemaId", properties.Id);
2426
}
27+
28+
[Test]
29+
public void CanCreateFromFactoryCurrent()
30+
{
31+
var properties = SchemaRegistryModelFactory.SchemaProperties(SchemaFormat.Avro, "schemaId", "groupName", "name");
32+
Assert.AreEqual(SchemaFormat.Avro, properties.Format);
33+
Assert.AreEqual("schemaId", properties.Id);
34+
Assert.AreEqual("groupName", properties.GroupName);
35+
Assert.AreEqual("name", properties.Name);
36+
}
2537
}
2638
}

sdk/schemaregistry/Azure.Data.SchemaRegistry/tests/SchemaRegistryClientLiveTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ private SchemaRegistryClient CreateClient() =>
2424
));
2525

2626
private const string SchemaContent = "{\"type\" : \"record\",\"namespace\" : \"TestSchema\",\"name\" : \"Employee\",\"fields\" : [{ \"name\" : \"Name\" , \"type\" : \"string\" },{ \"name\" : \"Age\", \"type\" : \"int\" }]}";
27+
private const string SchemaContent_V2 = "{\"type\" : \"record\",\"namespace\" : \"TestSchema\",\"name\" : \"Employee_V2\",\"fields\" : [{ \"name\" : \"Name\" , \"type\" : \"string\" },{ \"name\" : \"Age\", \"type\" : \"int\" }]}";
2728

2829
[RecordedTest]
2930
public async Task CanRegisterSchema()
@@ -41,6 +42,26 @@ public async Task CanRegisterSchema()
4142
AssertPropertiesAreEqual(registerProperties, schemaProperties);
4243
}
4344

45+
[RecordedTest]
46+
public async Task CanRegisterNewVersionOfSchema()
47+
{
48+
var client = CreateClient();
49+
var schemaName = "test1";
50+
var groupName = TestEnvironment.SchemaRegistryGroup;
51+
var format = SchemaFormat.Avro;
52+
53+
SchemaProperties registerProperties = await client.RegisterSchemaAsync(groupName, schemaName, SchemaContent, format);
54+
AssertSchemaProperties(registerProperties);
55+
56+
SchemaProperties schemaProperties = await client.GetSchemaPropertiesAsync(groupName, schemaName, SchemaContent, format);
57+
AssertSchemaProperties(schemaProperties);
58+
AssertPropertiesAreEqual(registerProperties, schemaProperties);
59+
60+
SchemaProperties newVersion = await client.RegisterSchemaAsync(schemaProperties.GroupName, schemaProperties.Name, SchemaContent_V2, schemaProperties.Format);
61+
AssertSchemaProperties(newVersion);
62+
Assert.AreNotEqual(registerProperties.Id, newVersion.Id);
63+
}
64+
4465
[RecordedTest]
4566
public async Task CanGetSchemaId()
4667
{
@@ -111,12 +132,16 @@ private void AssertSchemaProperties(SchemaProperties properties)
111132
Assert.IsNotNull(properties.Id);
112133
Assert.IsTrue(Guid.TryParse(properties.Id, out Guid _));
113134
Assert.AreEqual(SchemaFormat.Avro, properties.Format);
135+
Assert.AreEqual("test1", properties.Name);
136+
Assert.AreEqual(TestEnvironment.SchemaRegistryGroup, properties.GroupName);
114137
}
115138

116139
private void AssertPropertiesAreEqual(SchemaProperties registeredSchema, SchemaProperties schema)
117140
{
118141
Assert.AreEqual(registeredSchema.Id, schema.Id);
119142
Assert.AreEqual(registeredSchema.Format, schema.Format);
143+
Assert.AreEqual(registeredSchema.GroupName, schema.GroupName);
144+
Assert.AreEqual(registeredSchema.Name, schema.Name);
120145
}
121146
}
122147
}

sdk/schemaregistry/Azure.Data.SchemaRegistry/tests/SessionRecords/SchemaRegistryClientLiveTests/CanRegisterNewVersionOfSchema.json

Lines changed: 139 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)