diff --git a/assets/javascripts/discourse/connectors/admin-user-details/mozilla-iam.js.es6 b/assets/javascripts/discourse/connectors/admin-user-details/mozilla-iam.js.es6 new file mode 100644 index 0000000..4d7885f --- /dev/null +++ b/assets/javascripts/discourse/connectors/admin-user-details/mozilla-iam.js.es6 @@ -0,0 +1,13 @@ +export default { + setupComponent(args, component) { + var custom_fields = args.model.mozilla_iam + if (custom_fields) { + var dinopark_enabled = custom_fields.dinopark_enabled + if (dinopark_enabled === true || dinopark_enabled === "t") { + args.model.mozilla_iam.dinopark_enabled = true + } else { + args.model.mozilla_iam.dinopark_enabled = false + } + } + } +} diff --git a/assets/javascripts/discourse/templates/connectors/admin-user-details/mozilla-iam.hbs b/assets/javascripts/discourse/templates/connectors/admin-user-details/mozilla-iam.hbs index 9cc7628..8182d2e 100644 --- a/assets/javascripts/discourse/templates/connectors/admin-user-details/mozilla-iam.hbs +++ b/assets/javascripts/discourse/templates/connectors/admin-user-details/mozilla-iam.hbs @@ -43,4 +43,16 @@ +
+
Linked to DinoPark?
+ +
+ {{#if model.mozilla_iam.dinopark_enabled}} + True + {{else}} + False + {{/if}} +
+
+ diff --git a/lib/mozilla_iam/profile.rb b/lib/mozilla_iam/profile.rb index 2fd121b..2f74599 100644 --- a/lib/mozilla_iam/profile.rb +++ b/lib/mozilla_iam/profile.rb @@ -103,3 +103,4 @@ def set(key, value) require_relative "profile/update_emails" require_relative "profile/duplicate_accounts" require_relative "profile/is_aal_enough" +require_relative "profile/dinopark_enabled" diff --git a/lib/mozilla_iam/profile/dinopark_enabled.rb b/lib/mozilla_iam/profile/dinopark_enabled.rb new file mode 100644 index 0000000..ae9f08e --- /dev/null +++ b/lib/mozilla_iam/profile/dinopark_enabled.rb @@ -0,0 +1,16 @@ +module MozillaIAM + Profile.class_eval do + def dinopark_enabled? + if get("dinopark_enabled") === "t" || + get("dinopark_enabled") === true + return true + else + return false + end + end + + def dinopark_enabled=(enabled) + set("dinopark_enabled", enabled) + end + end +end diff --git a/plugin.rb b/plugin.rb index 236e38e..6b072cd 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,6 +1,6 @@ # name: mozilla-iam # about: A plugin to integrate Discourse with Mozilla's Identity and Access Management (IAM) system -# version: 1.1.2 +# version: 1.2.0 # authors: Leo McArdle # url: https://github.com/mozilla/discourse-mozilla-iam diff --git a/spec/components/mozilla_iam/profile/dinopark_enabled_spec.rb b/spec/components/mozilla_iam/profile/dinopark_enabled_spec.rb new file mode 100644 index 0000000..ffbdbff --- /dev/null +++ b/spec/components/mozilla_iam/profile/dinopark_enabled_spec.rb @@ -0,0 +1,23 @@ +require_relative '../../../iam_helper' + +describe MozillaIAM::Profile do + describe "#dinopark_enabled" do + let(:user) { Fabricate(:user) } + let(:profile) { MozillaIAM::Profile.new(user, "uid") } + + it "defaults to false" do + expect(profile.dinopark_enabled?).to eq false + end + + it "can be set to true" do + profile.dinopark_enabled = true + expect(profile.dinopark_enabled?).to eq true + end + + it "returns false if set to anything but true" do + profile.dinopark_enabled = "blah" + expect(profile.dinopark_enabled?).to eq false + end + + end +end diff --git a/test/javascripts/acceptance/user-preferences-account-test.js.es6 b/test/javascripts/acceptance/user-preferences-account-test.js.es6 new file mode 100644 index 0000000..dc1d17f --- /dev/null +++ b/test/javascripts/acceptance/user-preferences-account-test.js.es6 @@ -0,0 +1,64 @@ +import { acceptance } from "helpers/qunit-helpers" + +acceptance("Mozilla IAM - Admin User Details", { + loggedIn: true +}) + +const response = (server, mozilla_iam) => { + server.get("/admin/users/1.json", () => [ + 200, + { "Content-Type": "application/json" }, + { + id: 1, + username: "eviltrout", + email: "eviltrout@example.com", + mozilla_iam + } + ]) +} + +const assert_dinopark = (assert, value) => { + assert.equal( + find(".mozilla-iam.admin-user-details-outlet .dinopark-enabled .value").text().trim(), + value, + `dinopark enabled should show ${value}` + ) +} + +QUnit.test("viewing profile with dinopark_enabled undefined", async assert => { + response(server, {}) + + await visit("/admin/users/1/eviltrout") + + assert_dinopark(assert, "False") +}) + +QUnit.test("viewing profile with dinopark_enabled set to anything but true", async assert => { + response(server, { + dinopark_enabled: "foo" + }) + + await visit("/admin/users/1/eviltrout") + + assert_dinopark(assert, "False") +}) + +QUnit.test("viewing profile with dinopark_enabled set to true", async assert => { + response(server, { + dinopark_enabled: true + }) + + await visit("/admin/users/1/eviltrout") + + assert_dinopark(assert, "True") +}) + +QUnit.test("viewing profile with dinopark_enabled set to 't'", async assert => { + response(server, { + dinopark_enabled: "t" + }) + + await visit("/admin/users/1/eviltrout") + + assert_dinopark(assert, "True") +})