Skip to content

Commit 9681093

Browse files
committed
Avoid mocking IsExpired in the tests. Instead update test fixtured to have concerete timestamps (either expired or long exiring one)
1 parent 32ebe0a commit 9681093

File tree

807 files changed

+11273
-1761
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

807 files changed

+11273
-1761
lines changed

client/client_test.go

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,16 @@ func newClientWithMeta(baseDir string, relPath string, serverAddr string) (*Clie
398398
func initRootTest(c *C, baseDir string) (*Client, func() error) {
399399
l, err := startTUFRepoServer(baseDir, "server")
400400
c.Assert(err, IsNil)
401+
<<<<<<< HEAD
402+
tufClient, err := newClientWithMeta(baseDir, "client/metadata/current", l.Addr().String())
403+
=======
404+
//e := verify.IsExpired
405+
//if ignoreExpired {
406+
// verify.IsExpired = func(t time.Time) bool { return false }
407+
//}
401408
tufClient, err := newClientWithMeta(baseDir, "client/metadata/current", l.Addr().String())
409+
//verify.IsExpired = e
410+
>>>>>>> 0d6db4e (Avoid mocking IsExpired in the tests. Instead update test fixtured to have concerete timestamps (either expired or long exiring one))
402411
c.Assert(err, IsNil)
403412
return tufClient, l.Close
404413
}
@@ -439,28 +448,36 @@ func (s *ClientSuite) TestUpdateRoots(c *C) {
439448
{"testdata/Published2Times_timestamp_keyrotated", nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 1, "targets": 1}},
440449
=======
441450
// New root version update (no key update) succeeds.
442-
{"testdata/PublishedTwice", false, nil, map[string]int{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}},
451+
{"testdata/PublishedTwice", nil, map[string]int{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}},
443452
// New root update (root role key rotation) succeeds.
444-
{"testdata/PublishedTwiceWithRotatedKeys_root", false, nil, map[string]int{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}},
445-
// New root update (root role key rotation) for versions greater than 1 succeeds.
446-
{"testdata/Published5TimesWithRotatedKeys_root", false, nil, map[string]int{"root": 5, "timestamp": 1, "snapshot": 1, "targets": 1}},
453+
{"testdata/PublishedTwiceWithRotatedKeys_root_initialrootexpired", nil, map[string]int{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}},
454+
// New root update (root role key rotation) for versions greater than 1 succeeds when initial root is not expired.
455+
{"testdata/Published5TimesWithRotatedKeys_root", nil, map[string]int{"root": 5, "timestamp": 1, "snapshot": 1, "targets": 1}},
456+
// New root update (root role key rotation) for versions greater than 1 succeeds when initial root is expired.
457+
{"testdata/Published5TimesWithRotatedKeys_root_initialrootexpired", nil, map[string]int{"root": 5, "timestamp": 1, "snapshot": 1, "targets": 1}},
458+
// New expired root update (root role key rotation) for versions greater than 1 fails.
459+
{"testdata/Published5TimesWithRotatedKeys_root_initialandlatestrootexpired", ErrDecodeFailed{File: "root.json", Err: verify.ErrExpired{}}, map[string]int{"root": 4, "timestamp": 1, "snapshot": 1, "targets": 1}},
447460
// New root update (snapshot role key rotation) succeeds.
448-
{"testdata/PublishedTwiceWithRotatedKeys_snapshot", false, nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 2, "targets": 1}},
461+
{"testdata/PublishedTwiceWithRotatedKeys_snapshot", nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 2, "targets": 1}},
449462
// New root update (targets role key rotation) succeeds.
450-
{"testdata/PublishedTwiceWithRotatedKeys_targets", false, nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 2, "targets": 2}},
463+
{"testdata/PublishedTwiceWithRotatedKeys_targets", nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 2, "targets": 2}},
451464
// New root update (timestamp role key rotation) succeeds.
452-
{"testdata/PublishedTwiceWithRotatedKeys_timestamp", false, nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 1, "targets": 1}},
465+
{"testdata/PublishedTwiceWithRotatedKeys_timestamp", nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 1, "targets": 1}},
453466
// New expired root update fails.
454-
{"testdata/PublishedTwiceWithRotatedKeys_root", true, ErrDecodeFailed{File: "root.json", Err: verify.ErrExpired{}}, map[string]int{}},
467+
{"testdata/PublishedTwiceWithRotatedKeys_root_initialandlatestrootexpired", ErrDecodeFailed{File: "root.json", Err: verify.ErrExpired{}}, map[string]int{}},
455468
// New root update with a rollback attack fails.
456-
{"testdata/PublishedTwiceWithStaleVersion_root", false, verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 1, Expected: 2}), map[string]int{}},
469+
{"testdata/PublishedTwiceWithStaleVersion_root", verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 1, Expected: 2}), map[string]int{}},
457470
// New root update with fast forward attack fails.
458-
{"testdata/PublishedTwiceForwardVersionWithRotatedKeys_root", false, verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 3, Expected: 2}), map[string]int{}},
471+
{"testdata/PublishedTwiceForwardVersionWithRotatedKeys_root", verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 3, Expected: 2}), map[string]int{}},
459472
// New root with invalid new root signature fails (n+1th root didn't sign off n+1).
460-
{"testdata/PublishedTwiceInvalidNewRootSignatureWithRotatedKeys_root", false, errors.New("tuf: signature verification failed"), map[string]int{}},
473+
{"testdata/PublishedTwiceInvalidNewRootSignatureWithRotatedKeys_root", errors.New("tuf: signature verification failed"), map[string]int{}},
461474
// New root with invalid old root signature fails (nth root didn't sign off n+1).
475+
<<<<<<< HEAD
462476
{"testdata/PublishedTwiceInvalidOldRootSignatureWithRotatedKeys_root", false, errors.New("tuf: signature verification failed"), map[string]int{}},
463477
>>>>>>> 36977d7 (add test for root update for client version above 1.)
478+
=======
479+
{"testdata/PublishedTwiceInvalidOldRootSignatureWithRotatedKeys_root", errors.New("tuf: signature verification failed"), map[string]int{}},
480+
>>>>>>> 0d6db4e (Avoid mocking IsExpired in the tests. Instead update test fixtured to have concerete timestamps (either expired or long exiring one))
464481
}
465482

466483
for _, test := range tests {
@@ -609,9 +626,7 @@ func (s *ClientSuite) TestFastForwardAttackRecovery(c *C) {
609626
map[string]bool{"root.json": false, "timestamp.json": true, "snapshot.json": false, "targets.json": false}},
610627
}
611628
for _, test := range tests {
612-
e := verify.IsExpired
613-
verify.IsExpired = func(t time.Time) bool { return false }
614-
tufClient, closer := initRootTest(c, test.fixturePath, true)
629+
tufClient, closer := initRootTest(c, test.fixturePath)
615630
c.Assert(tufClient.updateRoots(), IsNil)
616631
m, err := tufClient.local.GetMeta()
617632
c.Assert(err, IsNil)
@@ -627,8 +642,6 @@ func (s *ClientSuite) TestFastForwardAttackRecovery(c *C) {
627642
}
628643
}
629644
closer()
630-
verify.IsExpired = e
631-
632645
}
633646

634647
}

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/1.root.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
"signatures": [
33
{
44
"keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129",
5-
"sig": "d0bf76a5cfc0aee1b8a1b1bf0ed8ca646a1a6d5f205945c515e8546bfd3c1e6b5e07cc0b93836bd030dd05ba68f177aecb05f6bf90c6702fd178e53310022506"
5+
"sig": "2cfb40e48ed6b35e702ec465715c819ab09df401d4c77fb5ace40c3ab53cb4e29f522e1e0af786fd2210e09b1d467695f03af6a4c5a80834b90dbeca319ffe01"
66
}
77
],
88
"signed": {
99
"_type": "root",
1010
"consistent_snapshot": true,
11-
"expires": "2020-12-31T05:48:20Z",
11+
"expires": "2031-09-05T22:22:23Z",
1212
"keys": {
1313
"3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": {
1414
"keyid_hash_algorithms": [

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/1.snapshot.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
"signatures": [
33
{
44
"keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93",
5-
"sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103"
5+
"sig": "3789656dce7ffebf8720aa349d284989efcb58d193c2704d48aa86534a4561c31a4842798406b5fad08833dd0a409ec621d3860e3a79e8a363d69957df76c304"
66
}
77
],
88
"signed": {
99
"_type": "snapshot",
10-
"expires": "2020-01-08T00:00:00Z",
10+
"expires": "2021-09-15T02:22:23Z",
1111
"meta": {
1212
"targets.json": {
1313
"version": 1

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/1.targets.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"signatures": [
33
{
44
"keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4",
5-
"sig": "c150e8ed5d352f366a979f4c4b9d556350c414c2da7ef1279045aaed3438c60872142d0dfe5ddbb627fec2d8fb7c5d8e692e04a87230b78d74714c5db035620a"
5+
"sig": "889f0449175dcfed2d5119c0f427b98213256ec09585b9a280ad81b03d7822b2e859f332f5a295c59632d090dc335d41cf3f63da7a13e470224031237ef7210d"
66
}
77
],
88
"signed": {
@@ -11,7 +11,7 @@
1111
"keys": {},
1212
"roles": []
1313
},
14-
"expires": "2020-04-01T07:27:10Z",
14+
"expires": "2021-12-08T09:49:33Z",
1515
"spec_version": "1.0.0",
1616
"targets": {},
1717
"version": 1

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/1.timestamp.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
"signatures": [
33
{
44
"keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae",
5-
"sig": "1d668531c7a0960cf90825faa684106a8aef0799c1b47e72301bac45d87f2dd42c14f1a3ac7db862323ca5177dd4fd686573ea92aea99638f17414dde561c00b"
5+
"sig": "8b91b33b42b2bb810681b7b01264c1a472163212bd8a41be7b249cdfd84ae12275f67921b1f47fcb95d602afb6e1815886254a3c57a613aa4364d31ee1fc0e0a"
66
}
77
],
88
"signed": {
99
"_type": "timestamp",
10-
"expires": "2020-01-02T00:00:00Z",
10+
"expires": "2021-09-09T02:22:23Z",
1111
"meta": {
1212
"snapshot.json": {
1313
"hashes": {
14-
"sha256": "f4ca389c2c9fbc592d91d4e693c31113b8803a11bcb5ecd973581fa0e3d34ce0",
15-
"sha512": "92a0989e44c0e9f16d3e56268a3b8dd4e4416ee2ac91a4c871a405f1e426062651ec4effa0078fc4409c8b0422ccad9b1aa197db58f178406f398562b2e98195"
14+
"sha256": "3f3609f204a4409625b3bdcfa661710ed1ed8089f758ef783d1f7d3c5ce70616",
15+
"sha512": "d2d9b8b0508472c0ba9e52adeae7425d754f81fdb251a62e064be386e144fcd4df5023121fa6bb09e454414d87445d1cf1ac2ff6e9c5b2e637a348209a91cebc"
1616
},
1717
"length": 431,
1818
"version": 1

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/2.root.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
"signatures": [
33
{
44
"keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b",
5-
"sig": "309302515543a5b06579cc0cf15cdbaa7eae486e5ae9c2d335926826d069138fcebd21062667eb4a950ccf289824d2de3a221b8f8875f6d29a856f5657542003"
5+
"sig": "d7a7f873c7262b8059f27a47b6ce91e198f788d8a4ae861d904a485cab167e0c7f27c3d7bacfa39efcbabbebdce3dedfd6f9cf7ddf709683c1f634941cda8f03"
66
},
77
{
88
"keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129",
9-
"sig": "81cb58f9fa43cb41931d1608d980d935b5a6ed34d7240a6987c787cc0c34889f7e019aea47656f2792d5b0868844303b3d205441b79daa94f52c0855db511804"
9+
"sig": "e0a45d7b8086f09ac8609b350d9719e166c106c91cebf9e2e5f16e9a8727b786dce8ace928e5d07c18c617807bd04955a1e694c1e296138eeb2404042a42e80a"
1010
}
1111
],
1212
"signed": {
1313
"_type": "root",
1414
"consistent_snapshot": true,
15-
"expires": "2020-12-31T05:48:20Z",
15+
"expires": "2031-09-05T22:22:23Z",
1616
"keys": {
1717
"05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b": {
1818
"keyid_hash_algorithms": [

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/3.root.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22
"signatures": [
33
{
44
"keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b",
5-
"sig": "15156589fe9283fddeecb7195e7bdc13cf0e002b4746d10d47f9c98db74e5e10b4092f26b29a1df9eea93fb60648eaf8c6b5f1002621d843bff065dc9d51940a"
5+
"sig": "ea58d3311768e0d887da52f4d8bd3124ee357486d6edcfe1c7b4e0d0c5bdb4a3a089f4b0c37e80af37c55d3466a36727d574704fa2ffaed8591bca0cd95f8004"
66
},
77
{
88
"keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68",
9-
"sig": "54a8394b644d5bf8444bf6eef070e0f03b0336a451be671da1dc31b13e241bc618f9ead0f4477c622cee928f970c0754fe00bc354c9ba687305933c75de94306"
9+
"sig": "5002fde8abf218266e6d97c138bc6fd0a55a2cfc1acba34b1324a1cc082cedc632368ee0613ca3d34ea69a263ed74994a29f87cf13f17080f71fba028cd28303"
1010
},
1111
{
1212
"keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129",
13-
"sig": "b7231c68eb4fa0b13f175b2feb0dbaf27cb14fd8c3c88c52362f33e383752fa158ceca86fd92b5327dcfe5cfbcf30c479aaf60afa9a871dde4197868642e4008"
13+
"sig": "e6211eefe0542970c0efd29661fda5c43bdaea53605a5d67bf06e5fe368fb44fb3974576039f0a8721d6572eef327a2cbdeaef58cd66865926a37ea6012a7c0e"
1414
}
1515
],
1616
"signed": {
1717
"_type": "root",
1818
"consistent_snapshot": true,
19-
"expires": "2020-12-31T05:48:20Z",
19+
"expires": "2031-09-05T22:22:23Z",
2020
"keys": {
2121
"3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": {
2222
"keyid_hash_algorithms": [

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/4.root.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@
22
"signatures": [
33
{
44
"keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b",
5-
"sig": "65b097087a61602a62c8ef3d98a71614d60cf2e05681d4a2456910603860ee3dd6b69a023dd51ae809fd1dc9576250b241f3f56c88d7727dd28b51f5dee1cf04"
5+
"sig": "8480113e0e6d61b4970e082807260492e62c1bf5967d5ab8f5409483626263ed2e8f3624c3dcd736b70b8cb6576a42550ad3c4c56e9a8b6ee04f9c5ec3d13206"
66
},
77
{
88
"keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68",
9-
"sig": "0e0adc2f7f4023976746786dccb0dcdffb1b84e933e4adcb2db2ffa6a2dd0257f5b39bc4e619fd4a2e9d87b9800aa1300ce72d8988275031f683a1abc3cfe90c"
9+
"sig": "98058d6727a07d90c8ef8e7ec27fff187182573acb13f2a035c992a45792c15e7fd5607e5b5d8f9792f001a59c73737317399c82a8514cc84b94712f69fa8a00"
1010
},
1111
{
1212
"keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b",
13-
"sig": "f63cc281866cc54b5b0c9962ee907d50785baf9af5a4622bbc667df1f47fd0b24f3a67760da734c40fc923ba1e0355b0b80be6aabe69c93136db050a0e0c4604"
13+
"sig": "0adf9b782894c7abd26e837811f700f5083ec56b03c23186b8eff3e1dfa6e20208b92f6f57930e110a1f2aea2e051a449c1f488eaed7ab447cd7dfc9c9c9a705"
1414
},
1515
{
1616
"keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129",
17-
"sig": "cfec2396f4f58e311999f118efe242f3cc13331ca4e7dbfa9e6a31a0ab4168e4bff4119a9f3b6178e0a4e8843db6bc87a791730f334560081cacd6cf92979e0d"
17+
"sig": "83593119ffb8f9e316d4b60df82e48fe67278ae6db6a4b2b840b7d2602818a268e70a88668068be8f83ed7911bd081b45296c838174a1f5e1bc8303fb475cb0b"
1818
}
1919
],
2020
"signed": {
2121
"_type": "root",
2222
"consistent_snapshot": true,
23-
"expires": "2020-12-31T05:48:20Z",
23+
"expires": "2031-09-05T22:22:23Z",
2424
"keys": {
2525
"3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": {
2626
"keyid_hash_algorithms": [

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/root.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@
22
"signatures": [
33
{
44
"keyid": "05e17c1501d627b2597322f80d33aacec6f30a507552d3326a88913422b0e30b",
5-
"sig": "65b097087a61602a62c8ef3d98a71614d60cf2e05681d4a2456910603860ee3dd6b69a023dd51ae809fd1dc9576250b241f3f56c88d7727dd28b51f5dee1cf04"
5+
"sig": "8480113e0e6d61b4970e082807260492e62c1bf5967d5ab8f5409483626263ed2e8f3624c3dcd736b70b8cb6576a42550ad3c4c56e9a8b6ee04f9c5ec3d13206"
66
},
77
{
88
"keyid": "718fedad390b4d0d470b890781eb8c94e5a7e975aebe65fc0862246c945fce68",
9-
"sig": "0e0adc2f7f4023976746786dccb0dcdffb1b84e933e4adcb2db2ffa6a2dd0257f5b39bc4e619fd4a2e9d87b9800aa1300ce72d8988275031f683a1abc3cfe90c"
9+
"sig": "98058d6727a07d90c8ef8e7ec27fff187182573acb13f2a035c992a45792c15e7fd5607e5b5d8f9792f001a59c73737317399c82a8514cc84b94712f69fa8a00"
1010
},
1111
{
1212
"keyid": "9ca81f7ff17f6218246474a51b47eb035741bc472557ef5ac493e279f446b85b",
13-
"sig": "f63cc281866cc54b5b0c9962ee907d50785baf9af5a4622bbc667df1f47fd0b24f3a67760da734c40fc923ba1e0355b0b80be6aabe69c93136db050a0e0c4604"
13+
"sig": "0adf9b782894c7abd26e837811f700f5083ec56b03c23186b8eff3e1dfa6e20208b92f6f57930e110a1f2aea2e051a449c1f488eaed7ab447cd7dfc9c9c9a705"
1414
},
1515
{
1616
"keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129",
17-
"sig": "cfec2396f4f58e311999f118efe242f3cc13331ca4e7dbfa9e6a31a0ab4168e4bff4119a9f3b6178e0a4e8843db6bc87a791730f334560081cacd6cf92979e0d"
17+
"sig": "83593119ffb8f9e316d4b60df82e48fe67278ae6db6a4b2b840b7d2602818a268e70a88668068be8f83ed7911bd081b45296c838174a1f5e1bc8303fb475cb0b"
1818
}
1919
],
2020
"signed": {
2121
"_type": "root",
2222
"consistent_snapshot": true,
23-
"expires": "2020-12-31T05:48:20Z",
23+
"expires": "2031-09-05T22:22:23Z",
2424
"keys": {
2525
"3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": {
2626
"keyid_hash_algorithms": [

client/testdata/Published5TimesWithRotatedKeys_root/client/metadata/current/snapshot.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
"signatures": [
33
{
44
"keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93",
5-
"sig": "61db8765350398f7f750853337d9a55c5d6e790812d29146b5b45d5fd43d2a42c474a7a9fab263c3a50a28114a82f79dbf24ff1f99ae737a8d06f332f9f7d103"
5+
"sig": "3789656dce7ffebf8720aa349d284989efcb58d193c2704d48aa86534a4561c31a4842798406b5fad08833dd0a409ec621d3860e3a79e8a363d69957df76c304"
66
}
77
],
88
"signed": {
99
"_type": "snapshot",
10-
"expires": "2020-01-08T00:00:00Z",
10+
"expires": "2021-09-15T02:22:23Z",
1111
"meta": {
1212
"targets.json": {
1313
"version": 1

0 commit comments

Comments
 (0)