瀏覽代碼

pd: set permit/deny mode on empty list

I ran into a situation where the permit-some and deny-some modes
are not set when the user list is empty. This behavior surfaced while
testing the TIK client. This does not occur in the regular OSCAR AIM
client because it sets "allow all" when the "deny some" list is empty
and "deny all" when the "permit some" list is empty.
Mike 1 年之前
父節點
當前提交
1ea668ab01
共有 2 個文件被更改,包括 40 次插入 和 20 次删除
  1. 0 8
      foodgroup/permit_deny.go
  2. 40 12
      foodgroup/permit_deny_test.go

+ 0 - 8
foodgroup/permit_deny.go

@@ -38,10 +38,6 @@ func (s PermitDenyService) AddDenyListEntries(
 	sess *state.Session,
 	sess *state.Session,
 	body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries,
 	body wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries,
 ) error {
 ) error {
-	if len(body.Users) == 0 {
-		return nil
-	}
-
 	if len(body.Users) == 1 {
 	if len(body.Users) == 1 {
 		sn := state.NewIdentScreenName(body.Users[0].ScreenName)
 		sn := state.NewIdentScreenName(body.Users[0].ScreenName)
 		if sn.String() == sess.IdentScreenName().String() {
 		if sn.String() == sess.IdentScreenName().String() {
@@ -78,10 +74,6 @@ func (s PermitDenyService) AddPermListEntries(
 	sess *state.Session,
 	sess *state.Session,
 	body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries,
 	body wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries,
 ) error {
 ) error {
-	if len(body.Users) == 0 {
-		return nil
-	}
-
 	if len(body.Users) == 1 {
 	if len(body.Users) == 1 {
 		sn := state.NewIdentScreenName(body.Users[0].ScreenName)
 		sn := state.NewIdentScreenName(body.Users[0].ScreenName)
 		if sn.String() == sess.IdentScreenName().String() {
 		if sn.String() == sess.IdentScreenName().String() {

+ 40 - 12
foodgroup/permit_deny_test.go

@@ -80,12 +80,26 @@ func TestPermitDenyService_AddDenyListEntries(t *testing.T) {
 			},
 			},
 		},
 		},
 		{
 		{
-			name: "set FeedbagPDModeDenySome - 0 users",
-			sess: newTestSession("me", sessOptSignonComplete),
-			bodyIn: wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries{
-				Users: []struct {
-					ScreenName string `oscar:"len_prefix=uint8"`
-				}{},
+			name:   "set FeedbagPDModeDenySome - 0 users",
+			sess:   newTestSession("me", sessOptSignonComplete),
+			bodyIn: wire.SNAC_0x09_0x07_PermitDenyAddDenyListEntries{},
+			mockParams: mockParams{
+				localBuddyListManagerParams: localBuddyListManagerParams{
+					setPDModeParams: setPDModeParams{
+						{
+							userScreenName: state.NewIdentScreenName("me"),
+							pdMode:         wire.FeedbagPDModeDenySome,
+						},
+					},
+				},
+				buddyBroadcasterParams: buddyBroadcasterParams{
+					broadcastVisibilityParams: broadcastVisibilityParams{
+						{
+							from:   state.NewIdentScreenName("me"),
+							filter: nil,
+						},
+					},
+				},
 			},
 			},
 		},
 		},
 		{
 		{
@@ -270,12 +284,26 @@ func TestPermitDenyService_AddPermListEntries(t *testing.T) {
 			},
 			},
 		},
 		},
 		{
 		{
-			name: "set FeedbagPDModePermitSome - 0 users",
-			sess: newTestSession("me", sessOptSignonComplete),
-			bodyIn: wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries{
-				Users: []struct {
-					ScreenName string `oscar:"len_prefix=uint8"`
-				}{},
+			name:   "set FeedbagPDModePermitSome - 0 users",
+			sess:   newTestSession("me", sessOptSignonComplete),
+			bodyIn: wire.SNAC_0x09_0x05_PermitDenyAddPermListEntries{},
+			mockParams: mockParams{
+				localBuddyListManagerParams: localBuddyListManagerParams{
+					setPDModeParams: setPDModeParams{
+						{
+							userScreenName: state.NewIdentScreenName("me"),
+							pdMode:         wire.FeedbagPDModePermitSome,
+						},
+					},
+				},
+				buddyBroadcasterParams: buddyBroadcasterParams{
+					broadcastVisibilityParams: broadcastVisibilityParams{
+						{
+							from:   state.NewIdentScreenName("me"),
+							filter: nil,
+						},
+					},
+				},
 			},
 			},
 		},
 		},
 		{
 		{