Begin sigil renames
This commit is contained in:
parent
9a007990a0
commit
351f7db3e7
|
@ -46,8 +46,7 @@ See `kitchen_sink.sh` examples.
|
||||||
|
|
||||||
# Current Status
|
# Current Status
|
||||||
|
|
||||||
- [ ] Enforce canonical header ordering: `author`, `prev`, `lipmaa`, `depth`, `kind`.
|
- [ ] Change `@`, `%`, `&` to `feed.`, `text.`, `file.`, respectively. Better readability, easier onboarding, URL friendly.
|
||||||
- [ ] Change `@`, `%`, `&` to `feed.`, `mesg.`, `blob.`, respectively. Better readability, easier onboarding, URL friendly.
|
|
||||||
- [ ] Update Dev docs in protocol spec to reflect changes to `lipmaa` header.
|
- [ ] Update Dev docs in protocol spec to reflect changes to `lipmaa` header.
|
||||||
- [ ] Update spec document CLI usage examples to reflect API changes in 2020.
|
- [ ] Update spec document CLI usage examples to reflect API changes in 2020.
|
||||||
- [ ] 100% class / module documentation
|
- [ ] 100% class / module documentation
|
||||||
|
|
|
@ -44,12 +44,11 @@ module Pigeon
|
||||||
|
|
||||||
# ^ Internal namespaces for PStore keys
|
# ^ Internal namespaces for PStore keys
|
||||||
|
|
||||||
BLOB_SIGIL = "&"
|
BLOB_SIGIL = "FILE."
|
||||||
MESSAGE_SIGIL = "%"
|
MESSAGE_SIGIL = "TEXT."
|
||||||
IDENTITY_SIGIL = "@"
|
IDENTITY_SIGIL = "TEXT."
|
||||||
STRING_SIGIL = "\""
|
STRING_SIGIL = "\""
|
||||||
IDENTITY_FOOTER = ".ed25519"
|
IDENTITY_FOOTER = ".ed25519"
|
||||||
BLOB_FOOTER = ".sha256"
|
|
||||||
SIG_FOOTER = ".sig.ed25519"
|
SIG_FOOTER = ".sig.ed25519"
|
||||||
|
|
||||||
# Error messages
|
# Error messages
|
||||||
|
|
|
@ -58,9 +58,9 @@ module Pigeon
|
||||||
# TODO: Create regexes using string and Regexp.new() for cleaner regexes.
|
# TODO: Create regexes using string and Regexp.new() for cleaner regexes.
|
||||||
NUMERIC = /\d{1,7}/
|
NUMERIC = /\d{1,7}/
|
||||||
NULL_VALUE = /NONE/
|
NULL_VALUE = /NONE/
|
||||||
FEED_VALUE = /@.{52}\.ed25519/
|
FEED_VALUE = /FEED.{52}/
|
||||||
MESG_VALUE = /%.{52}\.sha256/
|
MESG_VALUE = /TEXT.{52}/
|
||||||
BLOB_VALUE = /&.{52}\.sha256/
|
BLOB_VALUE = /FILE.{52}/
|
||||||
STRG_VALUE = /".{1,128}"/
|
STRG_VALUE = /".{1,128}"/
|
||||||
# If you need other characters (but not spaces) submit an issue.
|
# If you need other characters (but not spaces) submit an issue.
|
||||||
ALPHANUMERICISH = /[a-zA-Z0-9_\-=\.\@\&]{1,90}/
|
ALPHANUMERICISH = /[a-zA-Z0-9_\-=\.\@\&]{1,90}/
|
||||||
|
|
|
@ -40,7 +40,7 @@ RSpec.describe Pigeon::Message do
|
||||||
|
|
||||||
it "does not ingest messages from blocked peers" do
|
it "does not ingest messages from blocked peers" do
|
||||||
db.reset_database
|
db.reset_database
|
||||||
antagonist = "@YDVX7JWTVNRFEVYC8E8DS9MVWW9KB66F1XQYMNB2FQ6QBPXKAQX0.ed25519"
|
antagonist = "TEXT.YDVX7JWTVNRFEVYC8E8DS9MVWW9KB66F1XQYMNB2FQ6QBPXKAQX0.ed25519"
|
||||||
db.block_peer(antagonist)
|
db.block_peer(antagonist)
|
||||||
db.import_bundle(BLOCKED_PEER_FIXTURE_PATH)
|
db.import_bundle(BLOCKED_PEER_FIXTURE_PATH)
|
||||||
expect(db.all_messages.count).to eq(0)
|
expect(db.all_messages.count).to eq(0)
|
||||||
|
@ -49,9 +49,9 @@ RSpec.describe Pigeon::Message do
|
||||||
it "ingests a bundle's blobs" do
|
it "ingests a bundle's blobs" do
|
||||||
db.reset_database
|
db.reset_database
|
||||||
blobs = [
|
blobs = [
|
||||||
"&622PRNJ7C0S05XR2AHDPKWMG051B1QW5SXMN2RQHF2AND6J8VGPG.sha256",
|
"FILE.622PRNJ7C0S05XR2AHDPKWMG051B1QW5SXMN2RQHF2AND6J8VGPG",
|
||||||
"&FV0FJ0YZADY7C5JTTFYPKDBHTZJ5JVVP5TCKP0605WWXYJG4VMRG.sha256",
|
"FILE.FV0FJ0YZADY7C5JTTFYPKDBHTZJ5JVVP5TCKP0605WWXYJG4VMRG",
|
||||||
"&YPF11E5N9JFVB6KB1N1WDVVT9DXMCHE0XJWBZHT2CQ29S5SEPCSG.sha256",
|
"FILE.YPF11E5N9JFVB6KB1N1WDVVT9DXMCHE0XJWBZHT2CQ29S5SEPCSG",
|
||||||
]
|
]
|
||||||
db.import_bundle(HAS_BLOB_PATH)
|
db.import_bundle(HAS_BLOB_PATH)
|
||||||
expect(db.all_messages.count).to eq(3)
|
expect(db.all_messages.count).to eq(3)
|
||||||
|
|
|
@ -2,7 +2,7 @@ require "spec_helper"
|
||||||
|
|
||||||
RSpec.describe Pigeon::Lexer do
|
RSpec.describe Pigeon::Lexer do
|
||||||
EXPECTED_TOKENS1 = [
|
EXPECTED_TOKENS1 = [
|
||||||
[:AUTHOR, "@3DWXGXHXCB02WV1TEA47J43HHTTBNMM496ANME7FZ2SYPGA9KTZG.ed25519", 69],
|
[:AUTHOR, "TEXT.3DWXGXHXCB02WV1TEA47J43HHTTBNMM496ANME7FZ2SYPGA9KTZG.ed25519", 69],
|
||||||
[:DEPTH, 0, 77],
|
[:DEPTH, 0, 77],
|
||||||
[:KIND, "unit_test1", 93],
|
[:KIND, "unit_test1", 93],
|
||||||
[:LIPMAA, "NONE", 105],
|
[:LIPMAA, "NONE", 105],
|
||||||
|
@ -12,21 +12,21 @@ RSpec.describe Pigeon::Lexer do
|
||||||
[:BODY_END, 127],
|
[:BODY_END, 127],
|
||||||
[:SIGNATURE, "2BTX69F6E30BBDNQ0XTT20NCG8C0B393SGQSW5M00G8KF33CAE1YB1MPT760KSTRV2ZJCCNJ883JXEWTTTEEJ8JBHNWEJQFSZ035P0R.sig.ed25519", 253],
|
[:SIGNATURE, "2BTX69F6E30BBDNQ0XTT20NCG8C0B393SGQSW5M00G8KF33CAE1YB1MPT760KSTRV2ZJCCNJ883JXEWTTTEEJ8JBHNWEJQFSZ035P0R.sig.ed25519", 253],
|
||||||
[:MESSAGE_DELIM, 254],
|
[:MESSAGE_DELIM, 254],
|
||||||
[:AUTHOR, "@3DWXGXHXCB02WV1TEA47J43HHTTBNMM496ANME7FZ2SYPGA9KTZG.ed25519", 323],
|
[:AUTHOR, "TEXT.3DWXGXHXCB02WV1TEA47J43HHTTBNMM496ANME7FZ2SYPGA9KTZG.ed25519", 323],
|
||||||
[:DEPTH, 1, 331],
|
[:DEPTH, 1, 331],
|
||||||
[:KIND, "unit_test2", 347],
|
[:KIND, "unit_test2", 347],
|
||||||
[:LIPMAA, "NONE", 359],
|
[:LIPMAA, "NONE", 359],
|
||||||
[:PREV, "%RW61BRVRAAM31RFPQ8W6MTYBN840Y898MQ2GTDRSMQES84RPJKHG.sha256", 425],
|
[:PREV, "TEXT.RW61BRVRAAM31RFPQ8W6MTYBN840Y898MQ2GTDRSMQES84RPJKHG.sha256", 425],
|
||||||
[:HEADER_END, 426],
|
[:HEADER_END, 426],
|
||||||
[:BODY_ENTRY, "bar", "\"baz\"", 436],
|
[:BODY_ENTRY, "bar", "\"baz\"", 436],
|
||||||
[:BODY_END, 437],
|
[:BODY_END, 437],
|
||||||
[:SIGNATURE, "TXC15FZZVK30Q5ZRERFR9VXAJ8KKE58ZGF1JEBNETJN1MHN9EGRQJP7PX99NBZMX177XZWE3M2PCPPF4VBN4J93W2H5FTNJ7K7VG818.sig.ed25519", 563],
|
[:SIGNATURE, "TXC15FZZVK30Q5ZRERFR9VXAJ8KKE58ZGF1JEBNETJN1MHN9EGRQJP7PX99NBZMX177XZWE3M2PCPPF4VBN4J93W2H5FTNJ7K7VG818.sig.ed25519", 563],
|
||||||
[:MESSAGE_DELIM, 564],
|
[:MESSAGE_DELIM, 564],
|
||||||
[:AUTHOR, "@3DWXGXHXCB02WV1TEA47J43HHTTBNMM496ANME7FZ2SYPGA9KTZG.ed25519", 633],
|
[:AUTHOR, "TEXT.3DWXGXHXCB02WV1TEA47J43HHTTBNMM496ANME7FZ2SYPGA9KTZG.ed25519", 633],
|
||||||
[:DEPTH, 2, 641],
|
[:DEPTH, 2, 641],
|
||||||
[:KIND, "unit_test3", 657],
|
[:KIND, "unit_test3", 657],
|
||||||
[:LIPMAA, "NONE", 669],
|
[:LIPMAA, "NONE", 669],
|
||||||
[:PREV, "%CSX0CDPY96DGTGT9V0TNZJ4S84JTSK4AYNE193VXF8AH9ZJHT82G.sha256", 735],
|
[:PREV, "TEXT.CSX0CDPY96DGTGT9V0TNZJ4S84JTSK4AYNE193VXF8AH9ZJHT82G.sha256", 735],
|
||||||
[:HEADER_END, 736],
|
[:HEADER_END, 736],
|
||||||
[:BODY_ENTRY, "cats", "\"meow\"", 748],
|
[:BODY_ENTRY, "cats", "\"meow\"", 748],
|
||||||
[:BODY_END, 749],
|
[:BODY_END, 749],
|
||||||
|
@ -103,7 +103,7 @@ RSpec.describe Pigeon::Lexer do
|
||||||
8 => "Parse error at 126. Double carriage return not found.",
|
8 => "Parse error at 126. Double carriage return not found.",
|
||||||
}
|
}
|
||||||
(0..8).to_a.map do |n|
|
(0..8).to_a.map do |n|
|
||||||
t = MESSAGE_LINES.dup.insert(n, "@@@").join("\n")
|
t = MESSAGE_LINES.dup.insert(n, "TEXT.@@").join("\n")
|
||||||
emsg = err_map.fetch(n)
|
emsg = err_map.fetch(n)
|
||||||
expect { Pigeon::Lexer.tokenize(t) }.to raise_error(e, emsg)
|
expect { Pigeon::Lexer.tokenize(t) }.to raise_error(e, emsg)
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,7 +16,7 @@ RSpec.describe Pigeon::LocalIdentity do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "generates a pair from a seed" do
|
it "generates a pair from a seed" do
|
||||||
x = "@XSZY1ME6QMA5BBSJ8QSDJCSG6EVDTCKYNMV221SB7B2NZR5K09J0.ed25519"
|
x = "TEXT.XSZY1ME6QMA5BBSJ8QSDJCSG6EVDTCKYNMV221SB7B2NZR5K09J0.ed25519"
|
||||||
expect(kp.multihash).to eq(x)
|
expect(kp.multihash).to eq(x)
|
||||||
y = "2PRTG7F13HWF1HPW9FF9NDSYGSQS5VXQ2WMZY0A510J64AE9G840"
|
y = "2PRTG7F13HWF1HPW9FF9NDSYGSQS5VXQ2WMZY0A510J64AE9G840"
|
||||||
expect(kp.private_key).to eq(y)
|
expect(kp.private_key).to eq(y)
|
||||||
|
|
|
@ -132,11 +132,11 @@ RSpec.describe Pigeon::Message do
|
||||||
|
|
||||||
it "crashes on forged fields" do
|
it "crashes on forged fields" do
|
||||||
tokens = [
|
tokens = [
|
||||||
[:AUTHOR, "@DYdgK1KUInVtG3lS45hA1HZ-jTuvfLKsxDpXPFCve04=.ed25519"],
|
[:AUTHOR, "FEED.G1YEXWJXCCAYPQ42S98K730CEW6ME5HRWJKHHEGYVYPFHS4S7EP4"],
|
||||||
[:KIND, "invalid"],
|
[:KIND, "invalid"],
|
||||||
[:PREV, "NONE"],
|
[:PREV, "NONE"],
|
||||||
[:DEPTH, 10],
|
[:DEPTH, 10],
|
||||||
[:LIPMAA, "%4PE7S4XCCAYPQ42S98K730CEW6ME5HRWJKHHEGYVYPFHSJWXEY1G.sha256"],
|
[:LIPMAA, "TEXT.4PE7S4XCCAYPQ42S98K730CEW6ME5HRWJKHHEGYVYPFHSJWXEY1G"],
|
||||||
[:HEADER_END],
|
[:HEADER_END],
|
||||||
[:BODY_ENTRY, "duplicate", "This key is a duplicate."],
|
[:BODY_ENTRY, "duplicate", "This key is a duplicate."],
|
||||||
[:SIGNATURE, "DN7yPTE-m433ND3jBL4oM23XGxBKafjq0Dp9ArBQa_TIGU7DmCxTumieuPBN-NKxlx_0N7-c5zjLb5XXVHYPCQ==.sig.ed25519"],
|
[:SIGNATURE, "DN7yPTE-m433ND3jBL4oM23XGxBKafjq0Dp9ArBQa_TIGU7DmCxTumieuPBN-NKxlx_0N7-c5zjLb5XXVHYPCQ==.sig.ed25519"],
|
||||||
|
|
|
@ -10,7 +10,7 @@ RSpec.describe Pigeon::Lexer do
|
||||||
let(:tokens) { Pigeon::Lexer.tokenize(example_bundle) }
|
let(:tokens) { Pigeon::Lexer.tokenize(example_bundle) }
|
||||||
|
|
||||||
BAD_TOKENS = [
|
BAD_TOKENS = [
|
||||||
[:AUTHOR, "@DYdgK1KUInVtG3lS45hA1HZ-jTuvfLKsxDpXPFCve04=.ed25519"],
|
[:AUTHOR, "TEXT.DYdgK1KUInVtG3lS45hA1HZ-jTuvfLKsxDpXPFCve04=.ed25519"],
|
||||||
[:KIND, "invalid"],
|
[:KIND, "invalid"],
|
||||||
[:PREV, "NONE"],
|
[:PREV, "NONE"],
|
||||||
[:DEPTH, 0],
|
[:DEPTH, 0],
|
||||||
|
|
|
@ -11,7 +11,7 @@ RSpec.describe Pigeon::MessageSerializer do
|
||||||
"\nprev NONE",
|
"\nprev NONE",
|
||||||
"\n\nfoo:\"bar\"\n\n",
|
"\n\nfoo:\"bar\"\n\n",
|
||||||
].join("")
|
].join("")
|
||||||
BOTTOM_HALF = "signature XYZ.sig.sha256"
|
BOTTOM_HALF = "signature XYZ"
|
||||||
EXPECTED_DRAFT = TOP_HALF + BOTTOM_HALF
|
EXPECTED_DRAFT = TOP_HALF + BOTTOM_HALF
|
||||||
|
|
||||||
class FakeLocalIdentity
|
class FakeLocalIdentity
|
||||||
|
@ -27,7 +27,7 @@ RSpec.describe Pigeon::MessageSerializer do
|
||||||
kind: "FAKE_KIND",
|
kind: "FAKE_KIND",
|
||||||
depth: 23,
|
depth: 23,
|
||||||
prev: nil,
|
prev: nil,
|
||||||
signature: "XYZ.sig.sha256",
|
signature: "XYZ",
|
||||||
lipmaa: 22,
|
lipmaa: 22,
|
||||||
}.values
|
}.values
|
||||||
message = MessageShim.new(*params)
|
message = MessageShim.new(*params)
|
||||||
|
|
Loading…
Reference in New Issue