|
1 |
| -using System; |
2 |
| -using System.Collections.Generic; |
3 |
| -using System.Linq; |
4 |
| -using System.Text; |
5 |
| -using System.Threading.Tasks; |
6 |
| -using Microsoft.VisualStudio.TestTools.UnitTesting; |
7 |
| - |
8 |
| -using Amazon.Auth.AccessControlPolicy; |
| 1 | +using Amazon.Auth.AccessControlPolicy; |
9 | 2 | using AWSSDK_DotNet.IntegrationTests.Utils;
|
| 3 | +using Microsoft.VisualStudio.TestTools.UnitTesting; |
| 4 | +using System; |
| 5 | +using System.Linq; |
10 | 6 | using static Amazon.Auth.AccessControlPolicy.ConditionFactory;
|
11 | 7 |
|
12 | 8 | namespace AWSSDK_DotNet.UnitTests
|
13 | 9 | {
|
14 | 10 | [TestClass]
|
| 11 | + [TestCategory("Runtime")] |
15 | 12 | public class PolicyTests
|
16 | 13 | {
|
17 | 14 | [TestMethod]
|
18 |
| - [TestCategory("Runtime")] |
19 | 15 | public void TestIfStatementAlreadyExists()
|
20 | 16 | {
|
21 | 17 | var policy = new Policy();
|
@@ -154,5 +150,104 @@ public void LookForStringComparisonTypeChanges()
|
154 | 150 | expectedHash,
|
155 | 151 | "The Amazon.Auth.AccessControlPolicy.ConditionFactory.ToString(DateComparisonType) method implementation may need to be updated.");
|
156 | 152 | }
|
| 153 | + |
| 154 | + [TestMethod] |
| 155 | + public void HandleObjectsWhenConvertingPrincipals() |
| 156 | + { |
| 157 | + string testPolicy = @"{ |
| 158 | + ""Version"": ""2012-10-17"", |
| 159 | + ""Statement"": [ |
| 160 | + { |
| 161 | + ""Effect"": ""Deny"", |
| 162 | + ""Action"": ""s3:*"", |
| 163 | + ""Principal"": { |
| 164 | + ""AWS"": [ |
| 165 | + ""arn:aws:iam::123456789012:root"", |
| 166 | + ""999999999999"" |
| 167 | + ], |
| 168 | + ""CanonicalUser"": ""79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"" |
| 169 | + }, |
| 170 | + ""Resource"": [ |
| 171 | + ""arn:aws:s3:::amzn-s3-demo-bucket/*"", |
| 172 | + ""arn:aws:s3:::amzn-s3-demo-bucket"" |
| 173 | + ], |
| 174 | + ""Condition"": { |
| 175 | + ""ArnNotEquals"": { |
| 176 | + ""aws:PrincipalArn"": ""arn:aws:iam::444455556666:user/user-name"" |
| 177 | + } |
| 178 | + } |
| 179 | + } |
| 180 | + ] |
| 181 | + }"; |
| 182 | + |
| 183 | + var policy = Policy.FromJson(testPolicy); |
| 184 | + Assert.IsNotNull(policy); |
| 185 | + Assert.AreEqual(1, policy.Statements.Count); |
| 186 | + |
| 187 | + var statement = policy.Statements.First(); |
| 188 | + Assert.AreEqual(statement.Actions.Count, 1); |
| 189 | + Assert.AreEqual(statement.Principals.Count, 3); |
| 190 | + Assert.AreEqual(statement.Conditions.Count, 1); |
| 191 | + } |
| 192 | + |
| 193 | + [TestMethod] |
| 194 | + public void HandleSingleValueWhenConvertingPrincipals() |
| 195 | + { |
| 196 | + string testPolicy = @"{ |
| 197 | + ""Version"": ""2012-10-17"", |
| 198 | + ""Statement"": [ |
| 199 | + { |
| 200 | + ""Effect"": ""Allow"", |
| 201 | + ""Action"": ""s3:ListBucket"", |
| 202 | + ""Principal"": { |
| 203 | + ""AWS"": ""123456789012"" |
| 204 | + } |
| 205 | + } |
| 206 | + ] |
| 207 | + }"; |
| 208 | + |
| 209 | + var policy = Policy.FromJson(testPolicy); |
| 210 | + Assert.IsNotNull(policy); |
| 211 | + Assert.AreEqual(1, policy.Statements.Count); |
| 212 | + |
| 213 | + var statement = policy.Statements.First(); |
| 214 | + Assert.AreEqual(1, statement.Principals.Count); |
| 215 | + |
| 216 | + var principal = statement.Principals.First(); |
| 217 | + Assert.AreEqual(Principal.AWS_PROVIDER, principal.Provider); |
| 218 | + Assert.AreEqual("123456789012", principal.Id); |
| 219 | + } |
| 220 | + |
| 221 | + [TestMethod] |
| 222 | + public void HandleAnonymousWhenConvertingPrincipals() |
| 223 | + { |
| 224 | + string testPolicy = @"{ |
| 225 | + ""Version"": ""2012-10-17"", |
| 226 | + ""Statement"": [ |
| 227 | + { |
| 228 | + ""Effect"": ""Deny"", |
| 229 | + ""Action"": ""s3:*"", |
| 230 | + ""Principal"": ""*"", |
| 231 | + ""Resource"": [ |
| 232 | + ""arn:aws:s3:::amzn-s3-demo-bucket/*"", |
| 233 | + ""arn:aws:s3:::amzn-s3-demo-bucket"" |
| 234 | + ], |
| 235 | + ""Condition"": { |
| 236 | + ""ArnNotEquals"": { |
| 237 | + ""aws:PrincipalArn"": ""arn:aws:iam::444455556666:user/user-name"" |
| 238 | + } |
| 239 | + } |
| 240 | + } |
| 241 | + ] |
| 242 | + }"; |
| 243 | + |
| 244 | + var policy = Policy.FromJson(testPolicy); |
| 245 | + Assert.IsNotNull(policy); |
| 246 | + Assert.AreEqual(1, policy.Statements.Count); |
| 247 | + |
| 248 | + var statement = policy.Statements.First(); |
| 249 | + Assert.AreEqual(1, statement.Principals.Count); |
| 250 | + Assert.AreEqual(Principal.Anonymous, statement.Principals.First()); |
| 251 | + } |
157 | 252 | }
|
158 | 253 | }
|
0 commit comments