blob: 2280ff97da7cbba094d93b59997552c03e24186c [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.wifi;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.MacAddress;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiContext;
import android.net.wifi.WifiSsid;
import android.os.Handler;
import android.os.LocaleList;
import com.android.wifi.resources.R;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* Unit tests for SsidTranslator.
*/
public class SsidTranslatorTest extends WifiBaseTest{
private @Mock WifiContext mWifiContext;
private @Mock Resources mResources;
private @Mock Configuration mConfiguration;
private @Mock LocaleList mLocaleList;
private @Mock Locale mLocale;
private @Mock Handler mHandler;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(mWifiContext.getResources()).thenReturn(mResources);
when(mResources.getConfiguration()).thenReturn(mConfiguration);
when(mConfiguration.getLocales()).thenReturn(mLocaleList);
when(mLocaleList.get(0)).thenReturn(mLocale);
when(mLocale.getLanguage()).thenReturn("en");
when(mResources.getStringArray(R.array.config_wifiCharsetsForSsidTranslation))
.thenReturn(new String[]{
"all,ISO-8859-8",
"zh,GBK",
"ko,EUC-KR",
});
}
/**
* Verifies behavior of {@link SsidTranslator#getTranslatedSsid(WifiSsid)}.
*/
@Test
public void testGetTranslatedSsid() throws Exception {
ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
ArgumentCaptor.forClass(BroadcastReceiver.class);
SsidTranslator ssidTranslator = new SsidTranslator(mWifiContext, mHandler);
ssidTranslator.handleBootCompleted();
verify(mWifiContext).registerReceiver(
broadcastReceiverCaptor.capture(), any(), eq(null), eq(mHandler));
WifiSsid utf8Ssid = WifiSsid.fromBytes("Android".getBytes(StandardCharsets.UTF_8));
WifiSsid iso8859_8Ssid = WifiSsid.fromBytes("שלום".getBytes("ISO-8859-8"));
WifiSsid gbkSsid = WifiSsid.fromBytes("安卓".getBytes("GBK"));
WifiSsid eucKrSsid = WifiSsid.fromBytes("안드로이드".getBytes("EUC-KR"));
WifiSsid unknownSsid = WifiSsid.fromBytes(new byte[]{
(byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd, (byte) 0xee, (byte) 0xff});
// Current Locale language is "en", so only ISO-8859-8 from the "all" list is translated.
assertThat(ssidTranslator.getTranslatedSsid(utf8Ssid)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getTranslatedSsid(iso8859_8Ssid))
.isEqualTo(WifiSsid.fromBytes("שלום".getBytes(StandardCharsets.UTF_8)));
assertThat(ssidTranslator.getTranslatedSsid(gbkSsid)).isEqualTo(gbkSsid);
assertThat(ssidTranslator.getTranslatedSsid(eucKrSsid)).isEqualTo(eucKrSsid);
assertThat(ssidTranslator.getTranslatedSsid(unknownSsid)).isEqualTo(unknownSsid);
// Switch Locale language to "zh", GBK SSIDs should be translated.
when(mLocale.getLanguage()).thenReturn("zh");
broadcastReceiverCaptor.getValue().onReceive(mWifiContext,
new Intent(Intent.ACTION_LOCALE_CHANGED));
assertThat(ssidTranslator.getTranslatedSsid(gbkSsid))
.isEqualTo(WifiSsid.fromBytes("安卓".getBytes(StandardCharsets.UTF_8)));
// EUC-KR SSID is translated as gibberish (but valid) GBK.
assertThat(ssidTranslator.getTranslatedSsid(eucKrSsid))
.isEqualTo(WifiSsid.fromBytes("救靛肺捞靛".getBytes(StandardCharsets.UTF_8)));
assertThat(ssidTranslator.getTranslatedSsid(utf8Ssid)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getTranslatedSsid(unknownSsid)).isEqualTo(unknownSsid);
// Switch Locale language to "ko", EUC-KR SSIDs should be translated.
when(mLocale.getLanguage()).thenReturn("ko");
broadcastReceiverCaptor.getValue().onReceive(mWifiContext,
new Intent(Intent.ACTION_LOCALE_CHANGED));
assertThat(ssidTranslator.getTranslatedSsid(eucKrSsid))
.isEqualTo(WifiSsid.fromBytes("안드로이드".getBytes(StandardCharsets.UTF_8)));
// GBK SSID is translated as gibberish (but valid) EUC-KR.
assertThat(ssidTranslator.getTranslatedSsid(gbkSsid))
.isEqualTo(WifiSsid.fromBytes("갛六".getBytes(StandardCharsets.UTF_8)));
assertThat(ssidTranslator.getTranslatedSsid(utf8Ssid)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getTranslatedSsid(unknownSsid)).isEqualTo(unknownSsid);
}
/**
* Verifies behavior of {@link SsidTranslator#getTranslatedSsid(WifiSsid)} with SSID bytes that
* match both UTF-8 and the alternate encoding. The alternate encoding should take precedence
* over UTF-8 unless "strictly UTF-8" is specified.
*/
@Test
public void testGetTranslatedSsidWithEncodingCollision() throws Exception {
ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
ArgumentCaptor.forClass(BroadcastReceiver.class);
SsidTranslator ssidTranslator = new SsidTranslator(mWifiContext, mHandler);
ssidTranslator.handleBootCompleted();
verify(mWifiContext).registerReceiver(
broadcastReceiverCaptor.capture(), any(), eq(null), eq(mHandler));
// SSID can be UTF-8 for "安卓" or GBK for "瀹夊崜"
WifiSsid ambiguousSsid = WifiSsid.fromBytes(new byte[]{
(byte) 0xe5, (byte) 0xae, (byte) 0x89, (byte) 0xe5, (byte) 0x8d, (byte) 0x93});
// Set Locale to zh for GBK.
when(mLocale.getLanguage()).thenReturn("zh");
broadcastReceiverCaptor.getValue().onReceive(mWifiContext,
new Intent(Intent.ACTION_LOCALE_CHANGED));
// GBK should take precedence over UTF-8 since it's the alternate charset.
assertThat(ssidTranslator.getTranslatedSsid(ambiguousSsid).getUtf8Text())
.isEqualTo("瀹夊崜");
// If the SSID is marked as strictly UTF-8, don't translate it.
assertThat(ssidTranslator.getTranslatedSsidAndRecordBssidCharset(ambiguousSsid,
null, true)).isEqualTo(ambiguousSsid);
}
/**
* Verifies behavior of {@link SsidTranslator#getAllPossibleOriginalSsids(WifiSsid)} .
*/
@Test
public void testGetAllPossibleOriginalSsids() throws Exception {
ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
ArgumentCaptor.forClass(BroadcastReceiver.class);
SsidTranslator ssidTranslator = new SsidTranslator(mWifiContext, mHandler);
ssidTranslator.handleBootCompleted();
verify(mWifiContext).registerReceiver(
broadcastReceiverCaptor.capture(), any(), eq(null), eq(mHandler));
WifiSsid utf8Ssid = WifiSsid.fromBytes("これはSSIDです。".getBytes(StandardCharsets.UTF_8));
WifiSsid gbkSsid = WifiSsid.fromBytes("これはSSIDです。".getBytes("GBK"));
WifiSsid eucKrSsid = WifiSsid.fromBytes("これはSSIDです。".getBytes("EUC-KR"));
WifiSsid unknownSsid = WifiSsid.fromBytes(new byte[]{
(byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd, (byte) 0xee, (byte) 0xff});
// Current Locale language is "en", so only UTF-8 is possible.
assertThat(ssidTranslator.getAllPossibleOriginalSsids(utf8Ssid)).containsExactly(utf8Ssid);
// Non-UTF-8 encodings are already in their "original" form.
assertThat(ssidTranslator.getAllPossibleOriginalSsids(gbkSsid)).containsExactly(gbkSsid);
assertThat(ssidTranslator.getAllPossibleOriginalSsids(eucKrSsid))
.containsExactly(eucKrSsid);
assertThat(ssidTranslator.getAllPossibleOriginalSsids(unknownSsid))
.containsExactly(unknownSsid);
// Switch Locale language to "zh", GBK should be returned.
when(mLocale.getLanguage()).thenReturn("zh");
broadcastReceiverCaptor.getValue().onReceive(mWifiContext,
new Intent(Intent.ACTION_LOCALE_CHANGED));
assertThat(ssidTranslator.getAllPossibleOriginalSsids(utf8Ssid)).containsExactly(
utf8Ssid, gbkSsid);
// Switch Locale language to "ko", EUC-KR should be returned.
when(mLocale.getLanguage()).thenReturn("ko");
broadcastReceiverCaptor.getValue().onReceive(mWifiContext,
new Intent(Intent.ACTION_LOCALE_CHANGED));
assertThat(ssidTranslator.getAllPossibleOriginalSsids(utf8Ssid)).containsExactly(
utf8Ssid, eucKrSsid);
// SSID is too long for UTF-8, but can be represented in EUC-KR.
WifiSsid longUtf8Ssid = WifiSsid.fromBytes(
"漢字漢字漢字漢字漢字漢字".getBytes(StandardCharsets.UTF_8));
WifiSsid longEucKrSsid = WifiSsid.fromBytes(
"漢字漢字漢字漢字漢字漢字".getBytes("EUC-KR"));
assertThat(ssidTranslator.getAllPossibleOriginalSsids(longUtf8Ssid)).containsExactly(
longEucKrSsid);
// SSID is too long for any encoding, so return an empty list.
assertThat(ssidTranslator.getAllPossibleOriginalSsids(WifiSsid.fromBytes(
"こんにちは! This is an SSID!!!!!!!!!!!!!!!!!!!!".getBytes(StandardCharsets.UTF_8))))
.isEmpty();
}
/**
* Verifies behavior of {@link SsidTranslator#getOriginalSsid(WifiSsid, MacAddress)}.
*/
@Test
public void testGetOriginalSsid() throws Exception {
ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
ArgumentCaptor.forClass(BroadcastReceiver.class);
ArgumentCaptor<Runnable> timeoutRunnableCaptor = ArgumentCaptor.forClass(Runnable.class);
List<Runnable> timeoutRunnables = new ArrayList<>();
SsidTranslator ssidTranslator = new SsidTranslator(mWifiContext, mHandler);
ssidTranslator.handleBootCompleted();
verify(mWifiContext).registerReceiver(
broadcastReceiverCaptor.capture(), any(), eq(null), eq(mHandler));
WifiSsid utf8Ssid = WifiSsid.fromBytes("安卓".getBytes(StandardCharsets.UTF_8));
WifiSsid gbkSsid = WifiSsid.fromBytes("安卓".getBytes("GBK"));
MacAddress utf8MacAddress = MacAddress.fromBytes(new byte[]{
(byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0xaa});
MacAddress gbkMacAddress = MacAddress.fromBytes(new byte[]{
(byte) 0xbb, (byte) 0xbb, (byte) 0xbb, (byte) 0xbb, (byte) 0xbb, (byte) 0xbb});
when(mLocale.getLanguage()).thenReturn("zh");
broadcastReceiverCaptor.getValue().onReceive(mWifiContext,
new Intent(Intent.ACTION_LOCALE_CHANGED));
// BSSID does not match any seen scan results, use UTF-8.
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, null)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, utf8MacAddress)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, gbkMacAddress)).isEqualTo(utf8Ssid);
// Record a BSSID using GBK. All non-matching BSSIDs should return GBK.
ssidTranslator.getTranslatedSsidAndRecordBssidCharset(gbkSsid, gbkMacAddress, false);
verify(mHandler, times(1)).postDelayed(
timeoutRunnableCaptor.capture(), eq(SsidTranslator.BSSID_CACHE_TIMEOUT_MS));
timeoutRunnables.add(timeoutRunnableCaptor.getValue());
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, null)).isEqualTo(gbkSsid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, utf8MacAddress)).isEqualTo(gbkSsid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, gbkMacAddress)).isEqualTo(gbkSsid);
// Record a BSSID using UTF-8. The UTF-8 and null BSSIDs should return UTF-8 now.
ssidTranslator.getTranslatedSsidAndRecordBssidCharset(utf8Ssid, utf8MacAddress, true);
verify(mHandler, times(2)).postDelayed(
timeoutRunnableCaptor.capture(), eq(SsidTranslator.BSSID_CACHE_TIMEOUT_MS));
timeoutRunnables.add(timeoutRunnableCaptor.getValue());
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, null)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, utf8MacAddress)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, gbkMacAddress)).isEqualTo(gbkSsid);
// Untranslated SSIDs should not be changed since this means these SSIDs were originally
// untranslatable.
WifiSsid unknownSsid = WifiSsid.fromBytes(new byte[]{
(byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd, (byte) 0xee, (byte) 0xff});
assertThat(ssidTranslator.getOriginalSsid(unknownSsid, null)).isEqualTo(unknownSsid);
// Timeout the scan results. Now we should return UTF-8 SSIDs for every BSSID again.
for (Runnable runnable : timeoutRunnables) {
runnable.run();
}
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, null)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, utf8MacAddress)).isEqualTo(utf8Ssid);
assertThat(ssidTranslator.getOriginalSsid(utf8Ssid, gbkMacAddress)).isEqualTo(utf8Ssid);
// SSID is too long for any encoding, so return null.
assertThat(ssidTranslator.getOriginalSsid(WifiSsid.fromBytes(
"こんにちは! This is an SSID!!!!!!!!!!!!!!!!!!!!".getBytes(StandardCharsets.UTF_8)),
null))
.isNull();
}
/**
* Verifies behavior of {@link SsidTranslator#getOriginalSsid(WifiConfiguration)}.
*/
@Test
public void testGetOriginalSsidForWifiConfiguration() throws Exception {
ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
ArgumentCaptor.forClass(BroadcastReceiver.class);
ArgumentCaptor<Runnable> timeoutRunnableCaptor = ArgumentCaptor.forClass(Runnable.class);
List<Runnable> timeoutRunnables = new ArrayList<>();
SsidTranslator ssidTranslator = new SsidTranslator(mWifiContext, mHandler);
ssidTranslator.handleBootCompleted();
verify(mWifiContext).registerReceiver(
broadcastReceiverCaptor.capture(), any(), eq(null), eq(mHandler));
WifiSsid utf8Ssid = WifiSsid.fromBytes("安卓".getBytes(StandardCharsets.UTF_8));
WifiSsid gbkSsid = WifiSsid.fromBytes("安卓".getBytes("GBK"));
MacAddress utf8MacAddress = MacAddress.fromBytes(new byte[]{
(byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0xaa});
MacAddress gbkMacAddress = MacAddress.fromBytes(new byte[]{
(byte) 0xbb, (byte) 0xbb, (byte) 0xbb, (byte) 0xbb, (byte) 0xbb, (byte) 0xbb});
when(mLocale.getLanguage()).thenReturn("zh");
broadcastReceiverCaptor.getValue().onReceive(mWifiContext,
new Intent(Intent.ACTION_LOCALE_CHANGED));
WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"安卓\"";
ScanResult candidate = new ScanResult();
WifiConfiguration.NetworkSelectionStatus status = config.getNetworkSelectionStatus();
status.setCandidate(candidate);
// BSSID does not match any seen scan results, use UTF-8.
status.setNetworkSelectionBSSID(null);
candidate.BSSID = null;
// Using candidate BSSID
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = "any";
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = utf8MacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = gbkMacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
// Using network selection BSSID (should override candidate)
status.setNetworkSelectionBSSID("any");
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
status.setNetworkSelectionBSSID(utf8MacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
status.setNetworkSelectionBSSID(gbkMacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
// Record a BSSID using GBK. All non-matching BSSIDs should return GBK.
ssidTranslator.getTranslatedSsidAndRecordBssidCharset(gbkSsid, gbkMacAddress, false);
verify(mHandler, times(1)).postDelayed(
timeoutRunnableCaptor.capture(), eq(SsidTranslator.BSSID_CACHE_TIMEOUT_MS));
timeoutRunnables.add(timeoutRunnableCaptor.getValue());
status.setNetworkSelectionBSSID(null);
candidate.BSSID = null;
// Using candidate BSSID
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
candidate.BSSID = "any";
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
candidate.BSSID = utf8MacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
candidate.BSSID = gbkMacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
// Using network selection BSSID (should override candidate)
status.setNetworkSelectionBSSID("any");
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
status.setNetworkSelectionBSSID(utf8MacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
status.setNetworkSelectionBSSID(gbkMacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
// Record a BSSID using UTF-8. The UTF-8 and null BSSIDs should return UTF-8 now.
ssidTranslator.getTranslatedSsidAndRecordBssidCharset(utf8Ssid, utf8MacAddress, true);
verify(mHandler, times(2)).postDelayed(
timeoutRunnableCaptor.capture(), eq(SsidTranslator.BSSID_CACHE_TIMEOUT_MS));
timeoutRunnables.add(timeoutRunnableCaptor.getValue());
status.setNetworkSelectionBSSID(null);
candidate.BSSID = null;
// Using candidate BSSID
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = "any";
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = utf8MacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = gbkMacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
// Using network selection BSSID (should override candidate)
status.setNetworkSelectionBSSID("any");
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
status.setNetworkSelectionBSSID(utf8MacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
status.setNetworkSelectionBSSID(gbkMacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(gbkSsid);
// Untranslated SSIDs should not be changed since this means these SSIDs were originally
// untranslatable.
WifiSsid unknownSsid = WifiSsid.fromBytes(new byte[]{
(byte) 0xaa, (byte) 0xbb, (byte) 0xcc, (byte) 0xdd, (byte) 0xee, (byte) 0xff});
config.SSID = unknownSsid.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(unknownSsid);
// Timeout the scan results. Now we should return UTF-8 SSIDs for every BSSID again.
for (Runnable runnable : timeoutRunnables) {
runnable.run();
}
status.setNetworkSelectionBSSID(null);
candidate.BSSID = null;
config.SSID = "\"安卓\"";
// Using candidate BSSID
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = "any";
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = utf8MacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
candidate.BSSID = gbkMacAddress.toString();
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
// Using network selection BSSID (should override candidate)
status.setNetworkSelectionBSSID("any");
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
status.setNetworkSelectionBSSID(utf8MacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
status.setNetworkSelectionBSSID(gbkMacAddress.toString());
assertThat(ssidTranslator.getOriginalSsid(config)).isEqualTo(utf8Ssid);
// SSID is too long for any encoding, so return null.
config.SSID = "\"こんにちは! This is an SSID!!!!!!!!!!!!!!!!!!!!\"";
assertThat(ssidTranslator.getOriginalSsid(config)).isNull();
}
}