From fe37ce165dff0bf269c0492ece8c5ecb3b1cc903 Mon Sep 17 00:00:00 2001
From: Sam <sam.saffron@gmail.com>
Date: Tue, 10 Apr 2018 15:30:18 +1000
Subject: [PATCH] correct issue where groups was never being blanked

---
 app/models/discourse_single_sign_on.rb       | 6 +++++-
 spec/models/discourse_single_sign_on_spec.rb | 5 +++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/app/models/discourse_single_sign_on.rb b/app/models/discourse_single_sign_on.rb
index 40eacadbb69..0816a55b485 100644
--- a/app/models/discourse_single_sign_on.rb
+++ b/app/models/discourse_single_sign_on.rb
@@ -114,7 +114,11 @@ class DiscourseSingleSignOn < SingleSignOn
       .where('group_id IN (SELECT id FROM groups WHERE NOT automatic)')
       .where(user_id: user.id)
 
-    group_users.where('group_id NOT IN (?)', ids).destroy_all
+    delete_group_users = group_users
+    if ids.length > 0
+      delete_group_users = group_users.where('group_id NOT IN (?)', ids)
+    end
+    delete_group_users.destroy_all
 
     ids -= group_users.where('group_id IN (?)', ids).pluck(:group_id)
 
diff --git a/spec/models/discourse_single_sign_on_spec.rb b/spec/models/discourse_single_sign_on_spec.rb
index 373c2518d2c..ff22598ebe1 100644
--- a/spec/models/discourse_single_sign_on_spec.rb
+++ b/spec/models/discourse_single_sign_on_spec.rb
@@ -147,6 +147,11 @@ describe DiscourseSingleSignOn do
     sso.lookup_or_create_user(ip_address)
     expect(group1.usernames).to eq("")
     expect(group2.usernames).to eq(user.username)
+
+    sso.groups = "badname,trust_level_4"
+    sso.lookup_or_create_user(ip_address)
+    expect(group1.usernames).to eq("")
+    expect(group2.usernames).to eq("")
   end
 
   it "can specify groups" do