| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package device
- import (
- "context"
- "errors"
- "testing"
- )
- func TestSetNetworkATBackendActivatesAndDeactivatesPDP(t *testing.T) {
- client := &transcriptClient{steps: []clientStep{
- {command: `AT+CGDCONT=1,"IPV4V6","internet"`, response: okResponse()},
- {command: "AT+CGATT=1", response: okResponse()},
- {command: "AT+CGACT=1,1", response: okResponse()},
- {command: "AT+CGACT=0,1", response: okResponse()},
- }}
- manager, id := newStartedTestManager(t, client)
- result, err := manager.SetNetwork(context.Background(), id, NetworkRequest{
- Enabled: true, APN: "internet", IPVersion: "IPV4V6",
- })
- if err != nil {
- t.Fatalf("enable network: %v", err)
- }
- if !result.Enabled || result.Backend != "at" || result.APN != "internet" {
- t.Fatalf("enable result = %#v", result)
- }
- result, err = manager.SetNetwork(context.Background(), id, NetworkRequest{
- Enabled: false, APN: "internet", IPVersion: "IP",
- })
- if err != nil {
- t.Fatalf("disable network: %v", err)
- }
- if result.Enabled {
- t.Fatalf("disable result = %#v", result)
- }
- client.assertDone(t)
- }
- func TestSetNetworkRejectsUnsafeAPNBeforeOpeningModem(t *testing.T) {
- client := &transcriptClient{}
- manager, id := newStartedTestManager(t, client)
- _, err := manager.SetNetwork(context.Background(), id, NetworkRequest{
- Enabled: true, APN: `internet";AT+CFUN=0`, IPVersion: "IP",
- })
- if !errors.Is(err, ErrInvalidNetworkAPN) {
- t.Fatalf("error = %v, want ErrInvalidNetworkAPN", err)
- }
- client.assertDone(t)
- }
- func TestUSBNetModeReadAndGuardedWrite(t *testing.T) {
- client := &transcriptClient{steps: []clientStep{
- {command: `AT+QCFG="usbnet"`, response: okResponse(`+QCFG: "usbnet",0`)},
- {command: `AT+QCFG="usbnet",1`, response: okResponse()},
- }}
- manager, id := newStartedTestManager(t, client)
- mode, err := manager.USBNetMode(context.Background(), id)
- if err != nil {
- t.Fatalf("read USB mode: %v", err)
- }
- if mode.Mode != 0 || mode.Name != "QMI" {
- t.Fatalf("USB mode = %#v", mode)
- }
- mode, err = manager.SetUSBNetMode(context.Background(), id, 1)
- if err != nil {
- t.Fatalf("write USB mode: %v", err)
- }
- if mode.Mode != 1 || mode.Name != "ECM" {
- t.Fatalf("new USB mode = %#v", mode)
- }
- client.assertDone(t)
- }
- func TestOperatorSelectionManualAndAutomatic(t *testing.T) {
- client := &transcriptClient{steps: []clientStep{
- {command: `AT+COPS=1,2,"46000",7`, response: okResponse()},
- {command: "AT+COPS?", response: okResponse(`+COPS: 1,2,"46000",7`)},
- {command: "AT+COPS=0", response: okResponse()},
- }}
- manager, id := newStartedTestManager(t, client)
- act := 7
- selection, err := manager.SetOperatorSelection(context.Background(), id, false, "46000", &act)
- if err != nil {
- t.Fatalf("manual selection: %v", err)
- }
- if selection.Mode != 1 || selection.Format != 2 || selection.Operator != "46000" || selection.AccessTechnology != "LTE" {
- t.Fatalf("manual selection = %#v", selection)
- }
- selection, err = manager.SetOperatorSelection(context.Background(), id, true, "", nil)
- if err != nil {
- t.Fatalf("automatic selection: %v", err)
- }
- if selection.Mode != 0 || selection.Operator != "" {
- t.Fatalf("automatic selection = %#v", selection)
- }
- client.assertDone(t)
- }
- func TestOperatorSelectionRejectsAutomaticFallbackAsSuccess(t *testing.T) {
- client := &transcriptClient{steps: []clientStep{
- {command: `AT+COPS=1,2,"46000",7`, response: okResponse()},
- {command: "AT+COPS?", response: okResponse("+COPS: 0")},
- }}
- manager, id := newStartedTestManager(t, client)
- act := 7
- if _, err := manager.SetOperatorSelection(context.Background(), id, false, "46000", &act); err == nil {
- t.Fatal("manual selection must fail when readback returned automatic mode")
- }
- client.assertDone(t)
- }
|