Skip to content

Commit d44ad8b

Browse files
authored
fix(codeql): Fix CodeQL issues (#330)
* fix(codeql): Fix CodeQL issues * fix(codeql): Add additional guards to tests
1 parent 815b154 commit d44ad8b

3 files changed

Lines changed: 165 additions & 142 deletions

File tree

src/Objectivity.AutoFixture.XUnit2.Core.Tests/Requests/ValuesRequestTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ public void GivenDifferentTypeArguments_WhenConstructorIsInvoked_ThenParametersA
8888
Assert.Equal(values, attribute.Values);
8989
}
9090

91-
[Fact(DisplayName = "GIVEN valid arguments WHEN ToString is invoked THEN text conteins necessary information")]
92-
public void GivenValidArguments_WhenToStringIsInvoked_ThenTextConteinsNecessaryInformation()
91+
[Fact(DisplayName = "GIVEN valid arguments WHEN ToString is invoked THEN text contains necessary information")]
92+
public void GivenValidArguments_WhenToStringIsInvoked_ThenTextContainsNecessaryInformation()
9393
{
9494
// Arrange
9595
var type = typeof(float);
Lines changed: 162 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,139 +1,162 @@
1-
namespace Objectivity.AutoFixture.XUnit2.Core.Tests.SpecimenBuilders
2-
{
3-
using System;
4-
using System.Diagnostics.CodeAnalysis;
5-
using global::AutoFixture.Kernel;
6-
using global::AutoFixture.Xunit2;
7-
using Moq;
8-
9-
using Objectivity.AutoFixture.XUnit2.Core.SpecimenBuilders;
10-
11-
using Xunit;
12-
13-
[Collection("IgnoreVirtualMembersSpecimenBuilder")]
14-
[Trait("Category", "SpecimenBuilders")]
15-
public class IgnoreVirtualMembersSpecimenBuilderTests
16-
{
17-
private readonly ISpecimenContext context = new Mock<ISpecimenContext>().Object;
18-
19-
[Fact(DisplayName = "GIVEN default constructor WHEN invoked THEN reflected type should be null")]
20-
public void GivenDefaultConstructor_WhenInvoked_ThenReflectedTypeShouldBeNull()
21-
{
22-
// Arrange
23-
// Act
24-
var builder = new IgnoreVirtualMembersSpecimenBuilder();
25-
26-
// Assert
27-
Assert.Null(builder.ReflectedType);
28-
}
29-
30-
[AutoData]
31-
[Theory(DisplayName = "GIVEN existing type WHEN constructor with parameter is invoked THEN that type should be reflected")]
32-
public void GivenExistingType_WhenConstructorWithParameterIsInvoked_ThenThatTypeShouldBeReflected(Type reflectedType)
33-
{
34-
// Arrange
35-
// Act
36-
var builder = new IgnoreVirtualMembersSpecimenBuilder(reflectedType);
37-
38-
// Assert
39-
Assert.Same(reflectedType, builder.ReflectedType);
40-
}
41-
42-
[AutoData]
43-
[Theory(DisplayName = "GIVEN uninitialized request WHEN Create is invoked THEN NoSpecimen is returned")]
44-
public void GivenUninitializedRequest_WhenCreateInvoked_ThenNoSpecimenInstance(
45-
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
46-
{
47-
// Arrange
48-
// Act
49-
var specimen = builder.Create(null, this.context);
50-
51-
// Assert
52-
Assert.IsType<NoSpecimen>(specimen);
53-
}
54-
55-
[AutoData]
56-
[Theory(DisplayName = "GIVEN not PropertyInfo request WHEN Create is invoked THEN NoSpecimen is returned")]
57-
public void GivenNotPropertyInfoRequest_WhenCreateInvoked_ThenNoSpecimenInstance(
58-
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
59-
{
60-
// Arrange
61-
// Act
62-
var specimen = builder.Create(new object(), this.context);
63-
64-
// Assert
65-
Assert.IsType<NoSpecimen>(specimen);
66-
}
67-
68-
[AutoData]
69-
[Theory(DisplayName = "GIVEN not virtual PropertyInfo request WHEN Create is invoked THEN NoSpecimen is returned")]
70-
public void GivenNotVirtualPropertyInfoRequest_WhenCreateInvoked_ThenNoSpecimenInstance(
71-
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
72-
{
73-
// Arrange
74-
var notVirtualPropertyInfo = typeof(FakeObject).GetProperty(nameof(FakeObject.NotVirtualProperty));
75-
76-
// Act
77-
var specimen = builder.Create(notVirtualPropertyInfo, this.context);
78-
79-
// Assert
80-
Assert.IsType<NoSpecimen>(specimen);
81-
}
82-
83-
[AutoData]
84-
[Theory(DisplayName = "GIVEN virtual PropertyInfo request but hosted in different type WHEN Create is invoked THEN NoSpecimen is returned")]
85-
public void GivenVirtualPropertyInfoRequestHostedInDifferentType_WhenCreateInvoked_ThenNoSpecimenInstance(
86-
[Frozen] Type reflectedType,
87-
[Greedy] IgnoreVirtualMembersSpecimenBuilder builder)
88-
{
89-
// Arrange
90-
var virtualPropertyInfo = typeof(FakeObject).GetProperty(nameof(FakeObject.VirtualProperty));
91-
92-
// Act
93-
var specimen = builder.Create(virtualPropertyInfo, this.context);
94-
95-
// Assert
96-
Assert.Same(reflectedType, builder.ReflectedType);
97-
Assert.IsType<NoSpecimen>(specimen);
98-
}
99-
100-
[AutoData]
101-
[Theory(DisplayName = "GIVEN virtual PropertyInfo request WHEN Create is invoked THEN OmitSpecimen is returned")]
102-
public void GivenVirtualPropertyInfoRequest_WhenCreateInvoked_ThenOmitSpecimenInstance(
103-
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
104-
{
105-
// Arrange
106-
var virtualPropertyInfo = typeof(FakeObject).GetProperty(nameof(FakeObject.VirtualProperty));
107-
108-
// Act
109-
var specimen = builder.Create(virtualPropertyInfo, this.context);
110-
111-
// Assert
112-
Assert.IsType<OmitSpecimen>(specimen);
113-
}
114-
115-
[Fact(DisplayName = "GIVEN virtual PropertyInfo request hosted in appropriate type WHEN Create is invoked THEN OmitSpecimen is returned")]
116-
public void GivenVirtualPropertyInfoRequestHostedInAppropriateType_WhenCreateInvoked_ThenOmitSpecimenInstance()
117-
{
118-
// Arrange
119-
var reflectedType = typeof(FakeObject);
120-
var builder = new IgnoreVirtualMembersSpecimenBuilder(reflectedType);
121-
var virtualPropertyInfo = reflectedType.GetProperty(nameof(FakeObject.VirtualProperty));
122-
123-
// Act
124-
var specimen = builder.Create(virtualPropertyInfo, this.context);
125-
126-
// Assert
127-
Assert.IsType<OmitSpecimen>(specimen);
128-
}
129-
130-
[SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Design required by tests.")]
131-
[SuppressMessage("ReSharper", "All", Justification = "Design required by tests.")]
132-
protected class FakeObject
133-
{
134-
public object NotVirtualProperty { get; set; }
135-
136-
public virtual object VirtualProperty { get; set; }
137-
}
138-
}
139-
}
1+
namespace Objectivity.AutoFixture.XUnit2.Core.Tests.SpecimenBuilders
2+
{
3+
using System;
4+
using System.Diagnostics.CodeAnalysis;
5+
using global::AutoFixture.Kernel;
6+
using global::AutoFixture.Xunit2;
7+
using Moq;
8+
9+
using Objectivity.AutoFixture.XUnit2.Core.SpecimenBuilders;
10+
11+
using Xunit;
12+
13+
[Collection("IgnoreVirtualMembersSpecimenBuilder")]
14+
[Trait("Category", "SpecimenBuilders")]
15+
public class IgnoreVirtualMembersSpecimenBuilderTests
16+
{
17+
private readonly ISpecimenContext context = new Mock<ISpecimenContext>().Object;
18+
19+
[Fact(DisplayName = "GIVEN default constructor WHEN invoked THEN reflected type should be null")]
20+
public void GivenDefaultConstructor_WhenInvoked_ThenReflectedTypeShouldBeNull()
21+
{
22+
// Arrange
23+
// Act
24+
var builder = new IgnoreVirtualMembersSpecimenBuilder();
25+
26+
// Assert
27+
Assert.Null(builder.ReflectedType);
28+
}
29+
30+
[AutoData]
31+
[Theory(DisplayName = "GIVEN existing type WHEN constructor with parameter is invoked THEN that type should be reflected")]
32+
public void GivenExistingType_WhenConstructorWithParameterIsInvoked_ThenThatTypeShouldBeReflected(Type reflectedType)
33+
{
34+
// Arrange
35+
// Act
36+
var builder = new IgnoreVirtualMembersSpecimenBuilder(reflectedType);
37+
38+
// Assert
39+
Assert.Same(reflectedType, builder.ReflectedType);
40+
}
41+
42+
[AutoData]
43+
[Theory(DisplayName = "GIVEN uninitialized request WHEN Create is invoked THEN NoSpecimen is returned")]
44+
public void GivenUninitializedRequest_WhenCreateInvoked_ThenNoSpecimenInstance(
45+
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
46+
{
47+
// Arrange
48+
// Act
49+
var specimen = builder.Create(null, this.context);
50+
51+
// Assert
52+
Assert.IsType<NoSpecimen>(specimen);
53+
}
54+
55+
[AutoData]
56+
[Theory(DisplayName = "GIVEN not PropertyInfo request WHEN Create is invoked THEN NoSpecimen is returned")]
57+
public void GivenNotPropertyInfoRequest_WhenCreateInvoked_ThenNoSpecimenInstance(
58+
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
59+
{
60+
// Arrange
61+
// Act
62+
var specimen = builder.Create(new object(), this.context);
63+
64+
// Assert
65+
Assert.IsType<NoSpecimen>(specimen);
66+
}
67+
68+
[AutoData]
69+
[Theory(DisplayName = "GIVEN not virtual PropertyInfo request WHEN Create is invoked THEN NoSpecimen is returned")]
70+
public void GivenNotVirtualPropertyInfoRequest_WhenCreateInvoked_ThenNoSpecimenInstance(
71+
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
72+
{
73+
// Arrange
74+
var notVirtualPropertyInfo = typeof(FakeObject).GetProperty(nameof(FakeObject.NotVirtualProperty));
75+
76+
// Act
77+
var specimen = builder.Create(notVirtualPropertyInfo, this.context);
78+
79+
// Assert
80+
Assert.NotNull(notVirtualPropertyInfo.GetGetMethod());
81+
Assert.IsType<NoSpecimen>(specimen);
82+
}
83+
84+
[AutoData]
85+
[Theory(DisplayName = "GIVEN virtual PropertyInfo request but hosted in different type WHEN Create is invoked THEN NoSpecimen is returned")]
86+
public void GivenVirtualPropertyInfoRequestHostedInDifferentType_WhenCreateInvoked_ThenNoSpecimenInstance(
87+
[Frozen] Type reflectedType,
88+
[Greedy] IgnoreVirtualMembersSpecimenBuilder builder)
89+
{
90+
// Arrange
91+
var virtualPropertyInfo = typeof(FakeObject).GetProperty(nameof(FakeObject.VirtualProperty));
92+
93+
// Act
94+
var specimen = builder.Create(virtualPropertyInfo, this.context);
95+
96+
// Assert
97+
Assert.NotNull(virtualPropertyInfo.GetGetMethod());
98+
Assert.Same(reflectedType, builder.ReflectedType);
99+
Assert.IsType<NoSpecimen>(specimen);
100+
}
101+
102+
[AutoData]
103+
[Theory(DisplayName = "GIVEN virtual PropertyInfo request WHEN Create is invoked THEN OmitSpecimen is returned")]
104+
public void GivenVirtualPropertyInfoRequest_WhenCreateInvoked_ThenOmitSpecimenInstance(
105+
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
106+
{
107+
// Arrange
108+
var virtualPropertyInfo = typeof(FakeObject).GetProperty(nameof(FakeObject.VirtualProperty));
109+
110+
// Act
111+
var specimen = builder.Create(virtualPropertyInfo, this.context);
112+
113+
// Assert
114+
Assert.NotNull(virtualPropertyInfo.GetGetMethod());
115+
Assert.IsType<OmitSpecimen>(specimen);
116+
}
117+
118+
[AutoData]
119+
[Theory(DisplayName = "GIVEN virtual PropertyInfo with private getter WHEN Create is invoked THEN NoSpecimen is returned")]
120+
public void GivenVirtualPropertyInfoWithPrivateGetter_WhenCreateInvoked_ThenNoSpecimenInstance(
121+
[Modest] IgnoreVirtualMembersSpecimenBuilder builder)
122+
{
123+
// Arrange
124+
var propertyInfo = typeof(FakeObject).GetProperty(nameof(FakeObject.VirtualPropertyWithPrivateGetter));
125+
126+
// Act
127+
var specimen = builder.Create(propertyInfo, this.context);
128+
129+
// Assert
130+
Assert.Null(propertyInfo.GetGetMethod());
131+
Assert.IsType<NoSpecimen>(specimen);
132+
}
133+
134+
[Fact(DisplayName = "GIVEN virtual PropertyInfo request hosted in appropriate type WHEN Create is invoked THEN OmitSpecimen is returned")]
135+
public void GivenVirtualPropertyInfoRequestHostedInAppropriateType_WhenCreateInvoked_ThenOmitSpecimenInstance()
136+
{
137+
// Arrange
138+
var reflectedType = typeof(FakeObject);
139+
var builder = new IgnoreVirtualMembersSpecimenBuilder(reflectedType);
140+
var virtualPropertyInfo = reflectedType.GetProperty(nameof(FakeObject.VirtualProperty));
141+
142+
// Act
143+
var specimen = builder.Create(virtualPropertyInfo, this.context);
144+
145+
// Assert
146+
Assert.NotNull(virtualPropertyInfo.GetGetMethod());
147+
Assert.IsType<OmitSpecimen>(specimen);
148+
}
149+
150+
[SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Justification = "Design required by tests.")]
151+
[SuppressMessage("ReSharper", "All", Justification = "Design required by tests.")]
152+
protected class FakeObject
153+
{
154+
public object NotVirtualProperty { get; set; }
155+
156+
public virtual object VirtualProperty { get; set; }
157+
158+
[SuppressMessage("Design", "CA1044:Properties should not be write only", Justification = "Required to test that GetGetMethod() returns null when getter is non-public.")]
159+
public virtual object VirtualPropertyWithPrivateGetter { private get; set; }
160+
}
161+
}
162+
}

src/Objectivity.AutoFixture.XUnit2.Core/SpecimenBuilders/IgnoreVirtualMembersSpecimenBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public object Create(object request, ISpecimenContext context)
2323
if (request is PropertyInfo pi //// is a property
2424
&& (this.ReflectedType is null //// is hosted anywhere
2525
|| this.ReflectedType == pi.ReflectedType) //// is hosted in defined type
26-
&& pi.GetGetMethod().IsVirtual)
26+
&& pi.GetGetMethod() is { IsVirtual: true })
2727
{
2828
return new OmitSpecimen();
2929
}

0 commit comments

Comments
 (0)