@Override
	public boolean scopesMatch(Set<String> expected, Set<String> actual) {

		Set<SystemScope> ex = fromStrings(expected);
		Set<SystemScope> act = fromStrings(actual);

		for (SystemScope actScope : act) {
			// first check to see if there's an exact match
			if (!ex.contains(actScope)) {
				return false;
			} else {
				// if we did find an exact match, we need to check the rest
			}
		}

		// if we got all the way down here, the setup passed
		return true;

	}
@Test
	public void scopesMatch() {

		Set<String> expected = Sets.newHashSet("foo", "bar", "baz");
		Set<String> actualGood = Sets.newHashSet("foo", "baz", "bar");
		Set<String> actualGood2 = Sets.newHashSet("foo", "bar");
		Set<String> actualBad = Sets.newHashSet("foo", "bob", "bar");

		// same scopes, different order
		assertThat(service.scopesMatch(expected, actualGood), is(true));

		// subset
		assertThat(service.scopesMatch(expected, actualGood2), is(true));

		// extra scope (fail)
		assertThat(service.scopesMatch(expected, actualBad), is(false));
	}