Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
client
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
elixxir
client
Commits
674a3d77
Commit
674a3d77
authored
Feb 17, 2022
by
Josh Brooks
Browse files
Options
Downloads
Patches
Plain Diff
Add individual request deletions to API and bindings
parent
d8832766
Branches
Branches containing commit
Tags
Tags containing commit
2 merge requests
!231
Revert "Update store to print changes to the partners list"
,
!167
Xx 3789/delete individual requests
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
api/client.go
+24
-0
24 additions, 0 deletions
api/client.go
bindings/client.go
+24
-0
24 additions, 0 deletions
bindings/client.go
storage/auth/store.go
+90
-0
90 additions, 0 deletions
storage/auth/store.go
storage/auth/store_test.go
+163
-0
163 additions, 0 deletions
storage/auth/store_test.go
with
301 additions
and
0 deletions
api/client.go
+
24
−
0
View file @
674a3d77
...
...
@@ -684,6 +684,30 @@ func (c *Client) GetNodeRegistrationStatus() (int, int, error) {
return
numRegistered
,
len
(
nodes
)
-
numStale
,
nil
}
// DeleteSentRequest will delete a Sent request for the given partner ID.
// If no request exists for this partner ID, or the request is not
// a Sent request, an error will be returned.
func
(
c
*
Client
)
DeleteSentRequest
(
partnerId
*
id
.
ID
)
error
{
jww
.
DEBUG
.
Printf
(
"Deleting sent request for partner ID: %s"
,
partnerId
)
return
c
.
GetStorage
()
.
Auth
()
.
DeleteSentRequest
(
partnerId
)
}
// DeleteReceiveRequest will delete a Receive request for the given partner ID.
// If no request exists for this partner ID, or the request is not
// a Receive request, an error will be returned.
func
(
c
*
Client
)
DeleteReceiveRequest
(
partnerId
*
id
.
ID
)
error
{
jww
.
DEBUG
.
Printf
(
"Deleting receive request for partner ID: %s"
,
partnerId
)
return
c
.
GetStorage
()
.
Auth
()
.
DeleteReceiveRequest
(
partnerId
)
}
// DeleteRequest will delete a request, agnostic of request type
// for the given partner ID. If no request exists for this
// partner ID an error will be returned.
func
(
c
*
Client
)
DeleteRequest
(
partnerId
*
id
.
ID
)
error
{
jww
.
DEBUG
.
Printf
(
"Deleting request for partner ID: %s"
,
partnerId
)
return
c
.
GetStorage
()
.
Auth
()
.
DeleteRequest
(
partnerId
)
}
// DeleteAllRequests clears all requests from client's auth storage.
func
(
c
*
Client
)
DeleteAllRequests
()
error
{
jww
.
DEBUG
.
Printf
(
"Deleting all requests"
)
...
...
This diff is collapsed.
Click to expand it.
bindings/client.go
+
24
−
0
View file @
674a3d77
...
...
@@ -450,6 +450,30 @@ func (c *Client) GetNodeRegistrationStatus() (*NodeRegistrationsStatus, error) {
return
&
NodeRegistrationsStatus
{
registered
,
total
},
err
}
// DeleteSentRequest will delete a Sent request for the given partner ID.
// If no request exists for this partner ID, or the request is not
// a Sent request, an error will be returned.
func
(
c
*
Client
)
DeleteSentRequest
(
partnerId
*
id
.
ID
)
error
{
jww
.
DEBUG
.
Printf
(
"Deleting sent request for partner ID: %s"
,
partnerId
)
return
c
.
api
.
DeleteSentRequest
(
partnerId
)
}
// DeleteReceiveRequest will delete a Receive request for the given partner ID.
// If no request exists for this partner ID, or the request is not
// a Receive request, an error will be returned.
func
(
c
*
Client
)
DeleteReceiveRequest
(
partnerId
*
id
.
ID
)
error
{
jww
.
DEBUG
.
Printf
(
"Deleting receive request for partner ID: %s"
,
partnerId
)
return
c
.
api
.
DeleteReceiveRequest
(
partnerId
)
}
// DeleteRequest will delete a request, agnostic of request type
// for the given partner ID. If no request exists for this
// partner ID an error will be returned.
func
(
c
*
Client
)
DeleteRequest
(
partnerId
*
id
.
ID
)
error
{
jww
.
DEBUG
.
Printf
(
"Deleting request for partner ID: %s"
,
partnerId
)
return
c
.
api
.
DeleteRequest
(
partnerId
)
}
// DeleteAllRequests clears all requests from Client's auth storage.
func
(
c
*
Client
)
DeleteAllRequests
()
error
{
return
c
.
api
.
DeleteAllRequests
()
...
...
This diff is collapsed.
Click to expand it.
storage/auth/store.go
+
90
−
0
View file @
674a3d77
...
...
@@ -458,6 +458,96 @@ func (s *Store) DeleteAllRequests() error {
return
nil
}
// DeleteSentRequest deletes a Sent request from Store given a partner ID.
// If the partner ID exists as a request, and the request is of type Sent,
// then the request will be deleted and the state stored. If either of
// those conditions are not met, then an error will be returned.
func
(
s
*
Store
)
DeleteSentRequest
(
partnerId
*
id
.
ID
)
error
{
s
.
mux
.
Lock
()
defer
s
.
mux
.
Unlock
()
req
,
ok
:=
s
.
requests
[
*
partnerId
]
if
!
ok
{
return
errors
.
Errorf
(
"Sent request for %s does not exist"
,
partnerId
)
}
if
req
.
rt
!=
Sent
{
return
errors
.
Errorf
(
"Request for partner %s is not a sent request, "
+
"cannot delete using DeleteSentRequest()"
,
partnerId
)
}
s
.
deleteSentRequest
(
req
)
delete
(
s
.
requests
,
*
partnerId
)
if
err
:=
s
.
save
();
err
!=
nil
{
jww
.
FATAL
.
Panicf
(
"Failed to store updated request map after "
+
"deleting sent request for partner %s: %+v"
,
partnerId
,
err
)
}
return
nil
}
// DeleteReceiveRequest deletes a Receive request from Store given a partner ID.
// If the partner ID exists as a request, and the request is of type Receive,
// then the request will be deleted and the state stored. If either of
// those conditions are not met, then an error will be returned.
func
(
s
*
Store
)
DeleteReceiveRequest
(
partnerId
*
id
.
ID
)
error
{
s
.
mux
.
Lock
()
defer
s
.
mux
.
Unlock
()
req
,
ok
:=
s
.
requests
[
*
partnerId
]
if
!
ok
{
return
errors
.
Errorf
(
"Receive request for %s does not exist"
,
partnerId
)
}
if
req
.
rt
!=
Receive
{
return
errors
.
Errorf
(
"Request for partner %s is not a receive request, "
+
"cannot delete using DeleteReceiveRequest()"
,
partnerId
)
}
s
.
deleteReceiveRequest
(
req
)
delete
(
s
.
requests
,
*
partnerId
)
if
err
:=
s
.
save
();
err
!=
nil
{
jww
.
FATAL
.
Panicf
(
"Failed to store updated request map after "
+
"deleting receive request for partner %s: %+v"
,
partnerId
,
err
)
}
return
nil
}
// DeleteRequest deletes a request from Store given a partner ID.
// If the partner ID exists as a request, then the request will be deleted
// and the state stored. If the partner does not exist, then an error will
// be returned.
func
(
s
*
Store
)
DeleteRequest
(
partnerId
*
id
.
ID
)
error
{
s
.
mux
.
Lock
()
defer
s
.
mux
.
Unlock
()
req
,
ok
:=
s
.
requests
[
*
partnerId
]
if
!
ok
{
return
errors
.
Errorf
(
"Request for %s does not exist"
,
partnerId
)
}
switch
req
.
rt
{
case
Sent
:
s
.
deleteSentRequest
(
req
)
case
Receive
:
s
.
deleteReceiveRequest
(
req
)
}
delete
(
s
.
requests
,
*
partnerId
)
if
err
:=
s
.
save
();
err
!=
nil
{
jww
.
FATAL
.
Panicf
(
"Failed to store updated request map after "
+
"deleting receive request for partner %s: %+v"
,
partnerId
,
err
)
}
return
nil
}
// DeleteSentRequests deletes all Sent requests from Store.
func
(
s
*
Store
)
DeleteSentRequests
()
error
{
s
.
mux
.
Lock
()
...
...
This diff is collapsed.
Click to expand it.
storage/auth/store_test.go
+
163
−
0
View file @
674a3d77
...
...
@@ -905,6 +905,169 @@ func TestStore_GetAllReceived_MixSentReceived(t *testing.T) {
}
// Unit test.
func
TestStore_DeleteReceiveRequest
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
c
:=
contact
.
Contact
{
ID
:
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
)}
rng
:=
csprng
.
NewSystemRNG
()
_
,
sidhPubKey
:=
genSidhAKeys
(
rng
)
if
err
:=
s
.
AddReceived
(
c
,
sidhPubKey
);
err
!=
nil
{
t
.
Fatalf
(
"AddReceived() returned an error: %+v"
,
err
)
}
if
_
,
_
,
err
:=
s
.
GetReceivedRequest
(
c
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"GetReceivedRequest() returned an error: %+v"
,
err
)
}
err
:=
s
.
DeleteReceiveRequest
(
c
.
ID
)
if
err
!=
nil
{
t
.
Fatalf
(
"DeleteSentRequest error: %v"
,
err
)
}
}
// Error case: call a DeleteReceiveRequest on a partner that is a sent request.
func
TestStore_DeleteReceiveRequest_SentInMap
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
partnerID
:=
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
)
rng
:=
csprng
.
NewSystemRNG
()
sidhPrivKey
,
sidhPubKey
:=
genSidhAKeys
(
rng
)
sr
:=
&
SentRequest
{
kv
:
s
.
kv
,
partner
:
partnerID
,
partnerHistoricalPubKey
:
s
.
grp
.
NewInt
(
1
),
myPrivKey
:
s
.
grp
.
NewInt
(
2
),
myPubKey
:
s
.
grp
.
NewInt
(
3
),
mySidHPrivKeyA
:
sidhPrivKey
,
mySidHPubKeyA
:
sidhPubKey
,
fingerprint
:
format
.
Fingerprint
{
5
},
}
if
err
:=
s
.
AddSent
(
sr
.
partner
,
sr
.
partnerHistoricalPubKey
,
sr
.
myPrivKey
,
sr
.
myPubKey
,
sr
.
mySidHPrivKeyA
,
sr
.
mySidHPubKeyA
,
sr
.
fingerprint
);
err
!=
nil
{
t
.
Fatalf
(
"AddSent() returned an error: %+v"
,
err
)
}
err
:=
s
.
DeleteReceiveRequest
(
partnerID
)
if
err
==
nil
{
t
.
Fatalf
(
"DeleteReceiveRequest should error when trying to "
+
"delete a Sent request"
)
}
}
// Error case: Call DeleteReceiveRequest on a request that does
// not exist.
func
TestStore_DeleteReceiveRequest_NonexistantRequest
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
err
:=
s
.
DeleteReceiveRequest
(
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
))
if
err
==
nil
{
t
.
Errorf
(
"DeleteReceiveRequest should return an error "
+
"when trying to delete a request that does not exist"
)
}
}
// Unit test.
func
TestStore_DeleteSentRequest
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
partnerID
:=
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
)
rng
:=
csprng
.
NewSystemRNG
()
sidhPrivKey
,
sidhPubKey
:=
genSidhAKeys
(
rng
)
sr
:=
&
SentRequest
{
kv
:
s
.
kv
,
partner
:
partnerID
,
partnerHistoricalPubKey
:
s
.
grp
.
NewInt
(
1
),
myPrivKey
:
s
.
grp
.
NewInt
(
2
),
myPubKey
:
s
.
grp
.
NewInt
(
3
),
mySidHPrivKeyA
:
sidhPrivKey
,
mySidHPubKeyA
:
sidhPubKey
,
fingerprint
:
format
.
Fingerprint
{
5
},
}
if
err
:=
s
.
AddSent
(
sr
.
partner
,
sr
.
partnerHistoricalPubKey
,
sr
.
myPrivKey
,
sr
.
myPubKey
,
sr
.
mySidHPrivKeyA
,
sr
.
mySidHPubKeyA
,
sr
.
fingerprint
);
err
!=
nil
{
t
.
Fatalf
(
"AddSent() returned an error: %+v"
,
err
)
}
err
:=
s
.
DeleteSentRequest
(
partnerID
)
if
err
!=
nil
{
t
.
Errorf
(
"DeleteSentRequest error: %v"
,
err
)
}
}
// Error case: call a DeleteSentRequest on a partner that is a receive request.
func
TestStore_DeleteSentRequest_ReceiveInMap
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
c
:=
contact
.
Contact
{
ID
:
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
)}
rng
:=
csprng
.
NewSystemRNG
()
_
,
sidhPubKey
:=
genSidhAKeys
(
rng
)
if
err
:=
s
.
AddReceived
(
c
,
sidhPubKey
);
err
!=
nil
{
t
.
Fatalf
(
"AddReceived() returned an error: %+v"
,
err
)
}
if
_
,
_
,
err
:=
s
.
GetReceivedRequest
(
c
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"GetReceivedRequest() returned an error: %+v"
,
err
)
}
err
:=
s
.
DeleteSentRequest
(
c
.
ID
)
if
err
==
nil
{
t
.
Errorf
(
"DeleteSentRequest should return an error "
+
"when trying to delete a receive request"
)
}
}
// Error case: Call DeleteSentRequest on a request that does
// not exist.
func
TestStore_DeleteSentRequest_NonexistantRequest
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
err
:=
s
.
DeleteSentRequest
(
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
))
if
err
==
nil
{
t
.
Errorf
(
"DeleteSentRequest should return an error "
+
"when trying to delete a request that does not exist"
)
}
}
// Unit test.
func
TestStore_DeleteRequest
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
c
:=
contact
.
Contact
{
ID
:
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
)}
rng
:=
csprng
.
NewSystemRNG
()
_
,
sidhPubKey
:=
genSidhAKeys
(
rng
)
if
err
:=
s
.
AddReceived
(
c
,
sidhPubKey
);
err
!=
nil
{
t
.
Fatalf
(
"AddReceived() returned an error: %+v"
,
err
)
}
if
_
,
_
,
err
:=
s
.
GetReceivedRequest
(
c
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"GetReceivedRequest() returned an error: %+v"
,
err
)
}
err
:=
s
.
DeleteSentRequest
(
c
.
ID
)
if
err
==
nil
{
t
.
Errorf
(
"DeleteSentRequest should return an error "
+
"when trying to delete a receive request"
)
}
}
// Error case: Call DeleteRequest on a request that does
// not exist.
func
TestStore_DeleteRequest_NonexistantRequest
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
c
:=
contact
.
Contact
{
ID
:
id
.
NewIdFromUInt
(
rand
.
Uint64
(),
id
.
User
,
t
)}
rng
:=
csprng
.
NewSystemRNG
()
_
,
sidhPubKey
:=
genSidhAKeys
(
rng
)
if
err
:=
s
.
AddReceived
(
c
,
sidhPubKey
);
err
!=
nil
{
t
.
Fatalf
(
"AddReceived() returned an error: %+v"
,
err
)
}
if
_
,
_
,
err
:=
s
.
GetReceivedRequest
(
c
.
ID
);
err
!=
nil
{
t
.
Fatalf
(
"GetReceivedRequest() returned an error: %+v"
,
err
)
}
err
:=
s
.
DeleteRequest
(
c
.
ID
)
if
err
!=
nil
{
t
.
Errorf
(
"DeleteRequest should return an error "
+
"when trying to delete a receive request"
)
}
}
// Unit test.
func
TestStore_DeleteReceiveRequests
(
t
*
testing
.
T
)
{
s
,
_
,
_
:=
makeTestStore
(
t
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment