Skip to content

Commit

Permalink
refactor(sdk): sdk cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
alexfreska committed Feb 3, 2025
1 parent 5a36de1 commit fd3b7eb
Show file tree
Hide file tree
Showing 7 changed files with 216 additions and 147 deletions.
5 changes: 5 additions & 0 deletions .changeset/cool-tomatoes-deliver.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@siafoundation/sdk': minor
---

Added v2TransactionInputSigHash and signHash methods to API.
5 changes: 5 additions & 0 deletions .changeset/friendly-houses-matter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@siafoundation/types': minor
---

Added a Result type.
5 changes: 5 additions & 0 deletions .changeset/tidy-lobsters-float.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@siafoundation/sdk': minor
---

Improved the accuracy of all return types.
152 changes: 103 additions & 49 deletions libs/sdk/src/rhp.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ describe('rhp', () => {
describe('generateAccount', () => {
it('works', async () => {
const sdk = await initSDKTest()
const { privateKey, account, error } = sdk.rhp.generateAccount()
expect(error).toBeUndefined()
const response = sdk.rhp.generateAccount()
if ('error' in response) {
throw new Error(response.error)
}
const { privateKey, account } = response
expect(privateKey).toBeDefined()
expect(privateKey?.length).toBeGreaterThan(40)
expect(account).toBeDefined()
Expand All @@ -27,24 +30,34 @@ describe('rhp', () => {
it('valid', async () => {
const sdk = await initSDKTest()
const encode = sdk.rhp.encodeSettingsRequest()
expect(encode.rpc).toBeDefined()
expect(encode.error).not.toBeDefined()
const decode = sdk.rhp.decodeSettingsRequest(encode.rpc!)
if ('error' in encode) {
throw new Error(encode.error)
}
const { rpc } = encode
expect(rpc).toBeDefined()
const decode = sdk.rhp.decodeSettingsRequest(rpc!)
if ('error' in decode) {
throw new Error(decode.error)
}
expect(decode.data).toEqual({})
expect(decode.error).toBeUndefined()
})
})
describe('response', () => {
it('valid', async () => {
const sdk = await initSDKTest()
const json = getSampleRPCSettingsResponse()
const encode = sdk.rhp.encodeSettingsResponse(json)
expect(encode.rpc).toBeDefined()
expect(encode.rpc?.length).toEqual(264)
expect(encode.error).toBeUndefined()
const decode = sdk.rhp.decodeSettingsResponse(encode.rpc!)
if ('error' in encode) {
throw new Error(encode.error)
}
const { rpc } = encode
expect(rpc).toBeDefined()
expect(rpc?.length).toEqual(264)
const decode = sdk.rhp.decodeSettingsResponse(rpc!)
if ('error' in decode) {
throw new Error(decode.error)
}
expect(decode.data).toEqual(json)
expect(decode.error).toBeUndefined()
})
it('encode error', async () => {
const sdk = await initSDKTest()
Expand All @@ -54,20 +67,29 @@ describe('rhp', () => {
},
} as RPCSettingsResponse
const encode = sdk.rhp.encodeSettingsResponse(json)
expect(encode.rpc).toBeUndefined()
expect(encode.error).toEqual('address must be 76 characters')
if ('error' in encode) {
expect(encode.error).toEqual('address must be 76 characters')
} else {
throw new Error('expected error')
}
})
it('decode error', async () => {
const sdk = await initSDKTest()
const json = getSampleRPCSettingsResponse()
const encode = sdk.rhp.encodeSettingsResponse(json)
if ('error' in encode) {
throw new Error(encode.error)
}
// manipulate the valid rpc to make it invalid
encode.rpc!.set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 0)
const decode = sdk.rhp.decodeSettingsResponse(encode.rpc!)
expect(decode.data).not.toEqual(json)
expect(decode.error).toEqual(
'encoded object contains invalid length prefix (723118041428460547 elems > 11254 bytes left in stream)'
)
if ('error' in decode) {
expect(decode.error).toEqual(
'encoded object contains invalid length prefix (723118041428460547 elems > 11254 bytes left in stream)'
)
} else {
throw new Error('expected error')
}
})
})
})
Expand All @@ -91,11 +113,16 @@ describe('rhp', () => {
length: 4,
}
const encode = sdk.rhp.encodeReadSectorRequest(json)
expect(encode.rpc?.length).toEqual(376)
expect(encode.error).toBeUndefined()
const decode = sdk.rhp.decodeReadSectorRequest(encode.rpc!)
if ('error' in encode) {
throw new Error(encode.error)
}
const { rpc } = encode
expect(rpc?.length).toEqual(376)
const decode = sdk.rhp.decodeReadSectorRequest(rpc!)
if ('error' in decode) {
throw new Error(decode.error)
}
expect(decode.data).toEqual(json)
expect(decode.error).toBeUndefined()
})
it('encode error', async () => {
const sdk = await initSDKTest()
Expand All @@ -114,10 +141,13 @@ describe('rhp', () => {
length: 4,
}
const encode = sdk.rhp.encodeReadSectorRequest(json)
expect(encode.rpc).toBeUndefined()
expect(encode.error).toEqual(
"decoding acct:<hex> failed: encoding/hex: invalid byte: U+0069 'i'"
)
if ('error' in encode) {
expect(encode.error).toEqual(
"decoding acct:<hex> failed: encoding/hex: invalid byte: U+0069 'i'"
)
} else {
throw new Error('expected error')
}
})
})
describe('response', () => {
Expand All @@ -130,17 +160,22 @@ describe('rhp', () => {
dataLength: 4,
}
const encode = sdk.rhp.encodeReadSectorResponse(json)
expect(encode.rpc?.toString()).toEqual(
if ('error' in encode) {
throw new Error(encode.error)
}
const { rpc } = encode
expect(rpc?.toString()).toEqual(
[
0, 1, 0, 0, 0, 0, 0, 0, 0, 69, 114, 86, 214, 161, 96, 59, 239, 127,
169, 87, 167, 11, 91, 169, 106, 157, 239, 47, 234, 139, 76, 20, 131,
6, 13, 123, 165, 207, 138, 7, 44, 4, 0, 0, 0, 0, 0, 0, 0,
].toString()
)
expect(encode.error).toBeUndefined()
const decode = sdk.rhp.decodeReadSectorResponse(encode.rpc!)
const decode = sdk.rhp.decodeReadSectorResponse(rpc!)
if ('error' in decode) {
throw new Error(decode.error)
}
expect(decode.data).toEqual(json)
expect(decode.error).toBeUndefined()
})
it('encode error', async () => {
const sdk = await initSDKTest()
Expand All @@ -149,10 +184,13 @@ describe('rhp', () => {
dataLength: 4,
}
const encode = sdk.rhp.encodeReadSectorResponse(json)
expect(encode.rpc).toBeUndefined()
expect(encode.error).toEqual(
'decoding "invalid" failed: encoding/hex: invalid byte: U+0069 \'i\''
)
if ('error' in encode) {
expect(encode.error).toEqual(
'decoding "invalid" failed: encoding/hex: invalid byte: U+0069 \'i\''
)
} else {
throw new Error('expected error')
}
})
})
})
Expand All @@ -174,11 +212,16 @@ describe('rhp', () => {
prices: getSampleHostPrices(),
}
const encode = sdk.rhp.encodeWriteSectorRequest(json)
expect(encode.rpc?.length).toEqual(336)
expect(encode.error).toBeUndefined()
const decode = sdk.rhp.decodeWriteSectorRequest(encode.rpc!)
if ('error' in encode) {
throw new Error(encode.error)
}
const { rpc } = encode
expect(rpc?.length).toEqual(336)
const decode = sdk.rhp.decodeWriteSectorRequest(rpc!)
if ('error' in decode) {
throw new Error(decode.error)
}
expect(decode.data).toEqual(json)
expect(decode.error).toBeUndefined()
})
it('encode error', async () => {
const sdk = await initSDKTest()
Expand All @@ -195,10 +238,13 @@ describe('rhp', () => {
prices: getSampleHostPrices(),
} as RPCWriteSectorRequest
const encode = sdk.rhp.encodeWriteSectorRequest(json)
expect(encode.rpc).toBeUndefined()
expect(encode.error).toEqual(
"decoding acct:<hex> failed: encoding/hex: invalid byte: U+0069 'i'"
)
if ('error' in encode) {
expect(encode.error).toEqual(
"decoding acct:<hex> failed: encoding/hex: invalid byte: U+0069 'i'"
)
} else {
throw new Error('expected error')
}
})
})
describe('response', () => {
Expand All @@ -208,28 +254,36 @@ describe('rhp', () => {
root: '457256d6a1603bef7fa957a70b5ba96a9def2fea8b4c1483060d7ba5cf8a072c',
}
const encode = sdk.rhp.encodeWriteSectorResponse(json)
expect(encode.rpc?.toString()).toEqual(
if ('error' in encode) {
throw new Error(encode.error)
}
const { rpc } = encode
expect(rpc?.toString()).toEqual(
[
0, 69, 114, 86, 214, 161, 96, 59, 239, 127, 169, 87, 167, 11, 91,
169, 106, 157, 239, 47, 234, 139, 76, 20, 131, 6, 13, 123, 165, 207,
138, 7, 44,
].toString()
)
expect(encode.error).toBeUndefined()
const decode = sdk.rhp.decodeWriteSectorResponse(encode.rpc!)
const decode = sdk.rhp.decodeWriteSectorResponse(rpc!)
if ('error' in decode) {
throw new Error(decode.error)
}
expect(decode.data).toEqual(json)
expect(decode.error).toBeUndefined()
})
it('encode error', async () => {
const sdk = await initSDKTest()
const json = {
root: 'invalid',
} as RPCWriteSectorResponse
const encode = sdk.rhp.encodeWriteSectorResponse(json)
expect(encode.rpc).toBeUndefined()
expect(encode.error).toEqual(
'decoding "invalid" failed: encoding/hex: invalid byte: U+0069 \'i\''
)
if ('error' in encode) {
expect(encode.error).toEqual(
'decoding "invalid" failed: encoding/hex: invalid byte: U+0069 \'i\''
)
} else {
throw new Error('expected error')
}
})
})
})
Expand Down
Loading

0 comments on commit fd3b7eb

Please sign in to comment.