StartsOn and ExpiresOn were changed to nullable (#2828)
This commit is contained in:
parent
b2b1bdffd0
commit
98b188330b
@ -6,6 +6,8 @@
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
- `StartsOn` and `ExpiresOn` in `SignedIdentifier` were changed to nullable.
|
||||
|
||||
### Bugs Fixed
|
||||
|
||||
### Other Changes
|
||||
|
||||
@ -296,11 +296,11 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
/**
|
||||
* Date and time since when this policy is active.
|
||||
*/
|
||||
Azure::DateTime StartsOn;
|
||||
Azure::Nullable<Azure::DateTime> StartsOn;
|
||||
/**
|
||||
* Date and time the policy expires.
|
||||
*/
|
||||
Azure::DateTime ExpiresOn;
|
||||
Azure::Nullable<Azure::DateTime> ExpiresOn;
|
||||
/**
|
||||
* The permissions for this ACL policy.
|
||||
*/
|
||||
@ -6527,22 +6527,28 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::Text, std::string(), options.Id});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::EndTag});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::StartTag, "AccessPolicy"});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::StartTag, "Start"});
|
||||
writer.Write(_internal::XmlNode{
|
||||
_internal::XmlNodeType::Text,
|
||||
std::string(),
|
||||
options.StartsOn.ToString(
|
||||
Azure::DateTime::DateFormat::Rfc3339,
|
||||
Azure::DateTime::TimeFractionFormat::AllDigits)});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::EndTag});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::StartTag, "Expiry"});
|
||||
writer.Write(_internal::XmlNode{
|
||||
_internal::XmlNodeType::Text,
|
||||
std::string(),
|
||||
options.ExpiresOn.ToString(
|
||||
Azure::DateTime::DateFormat::Rfc3339,
|
||||
Azure::DateTime::TimeFractionFormat::AllDigits)});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::EndTag});
|
||||
if (options.StartsOn.HasValue())
|
||||
{
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::StartTag, "Start"});
|
||||
writer.Write(_internal::XmlNode{
|
||||
_internal::XmlNodeType::Text,
|
||||
std::string(),
|
||||
options.StartsOn.Value().ToString(
|
||||
Azure::DateTime::DateFormat::Rfc3339,
|
||||
Azure::DateTime::TimeFractionFormat::AllDigits)});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::EndTag});
|
||||
}
|
||||
if (options.ExpiresOn.HasValue())
|
||||
{
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::StartTag, "Expiry"});
|
||||
writer.Write(_internal::XmlNode{
|
||||
_internal::XmlNodeType::Text,
|
||||
std::string(),
|
||||
options.ExpiresOn.Value().ToString(
|
||||
Azure::DateTime::DateFormat::Rfc3339,
|
||||
Azure::DateTime::TimeFractionFormat::AllDigits)});
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::EndTag});
|
||||
}
|
||||
writer.Write(_internal::XmlNode{_internal::XmlNodeType::StartTag, "Permission"});
|
||||
writer.Write(
|
||||
_internal::XmlNode{_internal::XmlNodeType::Text, std::string(), options.Permissions});
|
||||
|
||||
@ -15,7 +15,10 @@ namespace Azure { namespace Storage { namespace Blobs { namespace Models {
|
||||
|
||||
bool operator==(const SignedIdentifier& lhs, const SignedIdentifier& rhs)
|
||||
{
|
||||
return lhs.Id == rhs.Id && lhs.StartsOn == rhs.StartsOn && lhs.ExpiresOn == rhs.ExpiresOn
|
||||
return lhs.Id == rhs.Id && lhs.StartsOn.HasValue() == rhs.StartsOn.HasValue()
|
||||
&& (!lhs.StartsOn.HasValue() || lhs.StartsOn.Value() == rhs.StartsOn.Value())
|
||||
&& lhs.ExpiresOn.HasValue() == rhs.ExpiresOn.HasValue()
|
||||
&& (!lhs.ExpiresOn.HasValue() || lhs.ExpiresOn.Value() == rhs.ExpiresOn.Value())
|
||||
&& lhs.Permissions == rhs.Permissions;
|
||||
}
|
||||
|
||||
@ -381,18 +384,36 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
|
||||
Blobs::SetBlobContainerAccessPolicyOptions options;
|
||||
options.AccessType = Blobs::Models::PublicAccessType::Blob;
|
||||
Blobs::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(1);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(1);
|
||||
identifier.Permissions = "r";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(2);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(2);
|
||||
/* cspell:disable-next-line */
|
||||
identifier.Permissions = "racwdxlt";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
{
|
||||
Blobs::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(1);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(1);
|
||||
identifier.Permissions = "r";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
{
|
||||
Blobs::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(2);
|
||||
identifier.ExpiresOn.Reset();
|
||||
/* cspell:disable-next-line */
|
||||
identifier.Permissions = "racwdxlt";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
{
|
||||
Blobs::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.Permissions = "r";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
{
|
||||
Blobs::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(1);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(1);
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
|
||||
auto ret = container_client.SetAccessPolicy(options);
|
||||
EXPECT_TRUE(ret.Value.ETag.HasValue());
|
||||
|
||||
@ -6,6 +6,8 @@
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
- `StartsOn` and `ExpiresOn` in `SignedIdentifier` were changed to nullable.
|
||||
|
||||
### Bugs Fixed
|
||||
|
||||
### Other Changes
|
||||
|
||||
@ -8,6 +8,12 @@
|
||||
#include <azure/identity/client_secret_credential.hpp>
|
||||
#include <azure/storage/common/crypt.hpp>
|
||||
|
||||
namespace Azure { namespace Storage { namespace Blobs { namespace Models {
|
||||
|
||||
bool operator==(const SignedIdentifier& lhs, const SignedIdentifier& rhs);
|
||||
|
||||
}}}} // namespace Azure::Storage::Blobs::Models
|
||||
|
||||
namespace Azure { namespace Storage { namespace Test {
|
||||
|
||||
const size_t PathTestSize = 5;
|
||||
@ -361,18 +367,36 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
|
||||
Files::DataLake::SetFileSystemAccessPolicyOptions options;
|
||||
options.AccessType = Files::DataLake::Models::PublicAccessType::Path;
|
||||
Files::DataLake::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(1);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(1);
|
||||
identifier.Permissions = "r";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(2);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(2);
|
||||
/* cspell:disable-next-line */
|
||||
identifier.Permissions = "racwdxlt";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
{
|
||||
Files::DataLake::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(1);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(1);
|
||||
identifier.Permissions = "r";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
{
|
||||
Files::DataLake::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(2);
|
||||
identifier.ExpiresOn.Reset();
|
||||
/* cspell:disable-next-line */
|
||||
identifier.Permissions = "racwdxlt";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
{
|
||||
Files::DataLake::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.Permissions = "r";
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
{
|
||||
Files::DataLake::Models::SignedIdentifier identifier;
|
||||
identifier.Id = RandomString(64);
|
||||
identifier.StartsOn = std::chrono::system_clock::now() - std::chrono::minutes(1);
|
||||
identifier.ExpiresOn = std::chrono::system_clock::now() + std::chrono::minutes(1);
|
||||
options.SignedIdentifiers.emplace_back(identifier);
|
||||
}
|
||||
|
||||
auto ret = fileSystem.SetAccessPolicy(options);
|
||||
EXPECT_TRUE(ret.Value.ETag.HasValue());
|
||||
@ -380,14 +404,10 @@ namespace Azure { namespace Storage { namespace Test {
|
||||
|
||||
auto ret2 = fileSystem.GetAccessPolicy();
|
||||
EXPECT_EQ(ret2.Value.AccessType, options.AccessType);
|
||||
ASSERT_EQ(ret2.Value.SignedIdentifiers.size(), options.SignedIdentifiers.size());
|
||||
for (size_t i = 0; i < ret2.Value.SignedIdentifiers.size(); ++i)
|
||||
{
|
||||
EXPECT_EQ(ret2.Value.SignedIdentifiers[i].StartsOn, options.SignedIdentifiers[i].StartsOn);
|
||||
EXPECT_EQ(
|
||||
ret2.Value.SignedIdentifiers[i].ExpiresOn, options.SignedIdentifiers[i].ExpiresOn);
|
||||
EXPECT_EQ(ret2.Value.SignedIdentifiers[i].Id, options.SignedIdentifiers[i].Id);
|
||||
EXPECT_EQ(
|
||||
ret2.Value.SignedIdentifiers[i].Permissions, options.SignedIdentifiers[i].Permissions);
|
||||
EXPECT_EQ(ret2.Value.SignedIdentifiers[i], options.SignedIdentifiers[i]);
|
||||
}
|
||||
|
||||
options.AccessType = Files::DataLake::Models::PublicAccessType::FileSystem;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user