func (m *Model) AddConnection(conn stmodel.Connection) { deviceID := conn.ID() m.pmut.Lock() if _, ok := m.protoConn[deviceID]; ok { panic("add existing device") } m.protoConn[deviceID] = conn conn.Start() /* send cluster config */ // TODO stop hard coding this, get it from model, like syncthing? cm := protocol.ClusterConfigMessage{ // TODO set these correctly ClientName: "Syncthing-FUSE", ClientVersion: "0.0.0", Options: []protocol.Option{}, } cr := protocol.Folder{ ID: "default", } cm.Folders = append(cm.Folders, cr) conn.ClusterConfig(cm) m.pmut.Unlock() }
func TestDeviceRename(t *testing.T) { ccm := protocol.ClusterConfigMessage{ ClientName: "syncthing", ClientVersion: "v0.9.4", } defer os.Remove("tmpconfig.xml") rawCfg := config.New(device1) rawCfg.Devices = []config.DeviceConfiguration{ { DeviceID: device1, }, } cfg := config.Wrap("tmpconfig.xml", rawCfg) db, _ := leveldb.Open(storage.NewMemStorage(), nil) m := NewModel(cfg, protocol.LocalDeviceID, "device", "syncthing", "dev", db, nil) fc := FakeConnection{ id: device1, requestData: []byte("some data to return"), } m.AddConnection(Connection{ &net.TCPConn{}, fc, ConnectionTypeDirectAccept, }) m.ServeBackground() if cfg.Devices()[device1].Name != "" { t.Errorf("Device already has a name") } m.ClusterConfig(device1, ccm) if cfg.Devices()[device1].Name != "" { t.Errorf("Device already has a name") } ccm.DeviceName = "tester" m.ClusterConfig(device1, ccm) if cfg.Devices()[device1].Name != "tester" { t.Errorf("Device did not get a name") } ccm.DeviceName = "tester2" m.ClusterConfig(device1, ccm) if cfg.Devices()[device1].Name != "tester" { t.Errorf("Device name got overwritten") } cfgw, err := config.Load("tmpconfig.xml", protocol.LocalDeviceID) if err != nil { t.Error(err) return } if cfgw.Devices()[device1].Name != "tester" { t.Errorf("Device name not saved in config") } }